[英]How to finish a second task with activiti bpmn?
有兩個並行啟動的任務: ManagerReviewTask
和DirectorReviewTask
。
什么時候:
DirectorReviewTask
首先完成, ManagerReviewTask
也應完成(以編程方式)。 ManagerReviewTask
首先完成,工作流應等待,直到分配的用戶完成DirectorReviewTask
。 我怎么做? 您能否提供一個帶有activiti xml的示例?
這就是我將偵聽器添加到DirectorReviewTask
並完成ManagerReviewTask
。
<userTask id="DirectorReviewTask" name="DirectorReviewTask">
<extensionElements>
<activiti:taskListener event="complete" class="listeners.DirectorReviewTaskListener"/>
</extensionElements>
</userTask>
這里是監聽器類:
public class DirectorReviewTaskListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
if (TaskListener.EVENTNAME_COMPLETE.equals(delegateTask.getEventName())) {
String executionId = delegateTask.getExecutionId();
Task managerReviewTask = taskService.createTaskQuery().executionId(executionId).taskName("ManagerReviewTask").singleResult();
if (managerReviewTask != null) {
taskService.complete(managerReviewTask.getId());
}
}
}
}
我認為您最終應該使用並行網關:
<parallelGateway id="fork" />
<sequenceFlow sourceRef="fork" targetRef="ManagerReviewTask" />
<sequenceFlow sourceRef="fork" targetRef="DirectorReviewTask" />
<userTask id="ManagerReviewTask" name="ManagerReviewTask" />
<sequenceFlow sourceRef="ManagerReviewTask" targetRef="join" />
<userTask id="DirectorReviewTask" name="DirectorReviewTask">
<extensionElements>
<activiti:taskListener event="complete" class="listeners.DirectorReviewTaskListener"/>
</extensionElements>
</userTask>
<sequenceFlow sourceRef="DirectorReviewTask" targetRef="join" />
<parallelGateway id="join" />
<sequenceFlow sourceRef="join" targetRef="GO_FROM_HERE" />
從BPMN的角度來看,您必須選擇以下幾種可能性:
在情況1中,您只需要考慮如何強制激活程序才能停止同一進程中的一個DirectorReviewTask,而不是所有實例並行運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.