flowable sequeceflow 委托表达式监听示例
时间: 2023-07-21 18:20:16 浏览: 42
以下一个使用委托表达式监听SequenceFlow的示例:
在BPMN 2.0 XML中定义SequenceFlow:
```
<sequenceFlow id="flow1" sourceRef="start" targetRef="task1">
<extensionElements>
<activiti:executionListener event="take" delegateExpression="${mySequenceFlowListener}"/>
</extensionElements>
</sequenceFlow>
```
在Java代码中实现委托表达式所指的类:
```
public class MySequenceFlowListener implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) {
System.out.println("SequenceFlow " + execution.getCurrentActivityId() + " executed.");
}
}
```
在ProcessEngineConfiguration中设置委托表达式的变量:
```
ProcessEngineConfiguration config = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
config.setExpressionManager(new ExpressionManager(new SimpleContextFactory()));
config.getExpressionManager().setVariable("mySequenceFlowListener", new MySequenceFlowListener());
```
在执行流程时,当SequenceFlow被执行时,MySequenceFlowListener中的execute方法会被调用,输出一条日志。
需要注意的是,委托表达式中的变量名必须与setVariable中设置的变量名相同,否则会导致监听器无法执行。