SpringBoot camunda常用代码

图例:

 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 准备返回主流程参数::::::::");
    }
}

此时,主流程就会进入到测试子流程结束的阶段,同时获取子流程返回的字段。

 至此,主流程结束。

 

 

 

ERROR END EVENT:

 在网关条件之外的走这个分支,非Java技术性异常,可通过

 

监听他,这个按钮必须有Error的信息,否则报错

 

posted @ 2024-05-01 08:38  洞玄巅峰  阅读(112)  评论(0编辑  收藏  举报