圖例:
1:預設排他閘道器,表示式
Type:expression:${number%200==0}
2: service task (系統自動執行用的最多):常用Delegate expression
${testGateWay}
舉例:
@Component("testGateWay") public class TestGateWay implements JavaDelegate { @Override public void execute(DelegateExecution delegateExecution) { Object number = delegateExecution.getVariable("number"); System.out.println("testGateWay::: number:" + number); } }
CALL ACTIVITY:呼叫子流程,在子流程執行結束前主流程等待。
選擇型別為BPMN,Called element:為子流程的名字,Binding 為最後一個版本。
In mapping:表示從主流程往下傳參,propagation:透傳所有主流程引數到子流程。
Out Mapping:表示子流程執行結束後像主流程傳的引數,這裡使用SOurce expression表示主流程接受一個子流程返回欄位為 subFlag的欄位。
子流程圖的ID 與主流程Call element呼應,圖例子流程是個User Task,在User Task執行結束前主流程等待
子流程的返回引數在End 流程新增Execution listeners,子流程結束觸發,同樣採用Delegate Expression.程式碼如下:
@Component("subEnd") public class SubEndListener implements ExecutionListener { @Override public void notify(DelegateExecution delegateExecution) { //傳回給主流程 標識子流程執行結束 delegateExecution.setVariable("subFlag", "1"); System.out.println("子流程執行subEnd listener 準備返回主流程引數::::::::"); } }
此時,主流程就會進入到測試子流程結束的階段,同時獲取子流程返回的欄位。
至此,主流程結束。