SpringBoot camunda常用程式碼

洞玄巅峰發表於2024-05-01

圖例:

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 準備返回主流程引數::::::::");
    }
}

此時,主流程就會進入到測試子流程結束的階段,同時獲取子流程返回的欄位。

至此,主流程結束。

相關文章