flowable sequeceflow 使用executionListener 监听
时间: 2023-07-11 20:23:30 浏览: 215
Flowable中的SequenceFlow可以使用ExecutionListener来监听其执行过程。你可以在SequenceFlow上添加ExecutionListener,在执行SequenceFlow的过程中触发监听器中的方法。例如,在SequenceFlow执行前可以触发beforeExecute方法,在SequenceFlow执行后可以触发afterExecute方法。在这些方法中,你可以执行一些自定义的逻辑,例如记录日志、发送消息等等。以下是一个使用ExecutionListener监听SequenceFlow的例子:
```
<sequenceFlow id="flow1" sourceRef="start" targetRef="task1">
<extensionElements>
<activiti:executionListener event="start" class="com.example.MySequenceFlowListener"/>
</extensionElements>
</sequenceFlow>
```
在这个例子中,我们在SequenceFlow上添加了一个ExecutionListener,当事件为start时,会触发com.example.MySequenceFlowListener中的方法。你可以根据自己的需求实现这个监听器中的方法。
相关问题
flowable sequeceflow 委托表达式监听
Flowable中的SequenceFlow也可以使用委托表达式来监听其执行过程。与ExecutionListener类似,你可以在SequenceFlow上添加委托表达式,在执行SequenceFlow的过程中触发表达式。不同之处在于,委托表达式是一个字符串,可以包含一段JavaScript代码,Flowable会在执行SequenceFlow时执行这段代码。
以下是一个使用委托表达式监听SequenceFlow的例子:
```
<sequenceFlow id="flow1" sourceRef="start" targetRef="task1">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="${mySequenceFlowListener}"/>
</extensionElements>
</sequenceFlow>
```
在这个例子中,我们在SequenceFlow上添加了一个委托表达式,当事件为start时,会执行${mySequenceFlowListener}中包含的JavaScript代码。你可以在代码中进行一些自定义的逻辑,例如记录日志、发送消息等等。委托表达式中的变量可以通过ProcessEngineConfiguration中的setExpressionManager方法来设置。
flowable sequeceflow 委托表达式监听示例
以下一个使用委托表达式监听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中设置的变量名相同,否则会导致监听器无法执行。
阅读全文