我正在使用 Alfreso 4.2c 和 Activiti 创建我的工作流程。我有一个要求,在每项任务中我需要向用户提供不同的操作。例如,在任务中,我需要提供“重新安排会议”、“取消会议”、“发送给练习主管”和“取消”等操作,而不仅仅是“完成任务”和“取消”。我已经覆盖了"bpm:outcomePropertyName",但它只更改了工作流程历史记录中的结果标签。
谁能指导我如何实现这一目标?先感谢您。
我正在使用 Alfreso 4.2c 和 Activiti 创建我的工作流程。我有一个要求,在每项任务中我需要向用户提供不同的操作。例如,在任务中,我需要提供“重新安排会议”、“取消会议”、“发送给练习主管”和“取消”等操作,而不仅仅是“完成任务”和“取消”。我已经覆盖了"bpm:outcomePropertyName",但它只更改了工作流程历史记录中的结果标签。
谁能指导我如何实现这一目标?先感谢您。
您必须在工作流模型中定义自己的结果约束,例如:
<type name="my:myTask">
<parent>wf:activitiReviewTask</parent>
<overrides>
<property name="wf:reviewOutcome">
<default>Restart Review</default>
<constraints>
<constraint name="my:myOutcomeOptions" type="LIST">
<parameter name="allowedValues">
<list>
<value>Approve</value>
<value>Restart Review</value>
<value>Reject</value>
</list>
</parameter>
</constraint>
</constraints>
</property>
</overrides>
</type>
当然,您必须将自定义序列流添加到工作流定义中。
<exclusiveGateway id="reviewDecision" name="Review Decision"></exclusiveGateway>
<sequenceFlow id="flow3" name="" sourceRef="reviewDecision" targetRef="ReviewRejected">
<conditionExpression xsi:type="tFormalExpression">${wf_reviewOutcome == 'Reject'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow3" name="" sourceRef="reviewDecision" targetRef="RestartReview">
<conditionExpression xsi:type="tFormalExpression">${wf_reviewOutcome == 'Restart Review'}</conditionExpression>
</sequenceFlow>
...
自定义操作是使用按钮实现的——在 activiti grails 假期请求示例应用程序中。例如。保存输入的任务数据,不完成任务。但是,grails 中的自定义代码是为了实现此功能而编写的。我希望,在 activiti 中有一些标准方式可以将按钮添加为标准表单组件。