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的信息,否则报错