Activiti之——Service Task
描述
Service TaskJava类。
图形符号
服务任务显示为圆角矩形,在左上角带有小齿轮的图标。
XML 表示
Service Task的四种调用逻辑:
- 指定一个实现
JavaDelegate或ActivityBehavior接口的类。 - 可解析为委托对象的表达式
- 方法调用表达式
- 值表达式
实现JavaDelegate或ActivityBehavior接口
要指定在流程执行期间调用的类,必须通过activiti:class属性提供完全限定的类名。
<serviceTask id="javaService" name="Service Task" activiti:class="org.activiti.MyJavaDelegate"/>
实现JavaDelegate接口
public class MyJavaDelegate implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) {
// ...
}
}
值得注意的是,
Activiti的Service Task在执行调用该方法时,并不是每次都会实例化一个对象,在第一次调用该方法时实例化一个对象,该对象会被复用。
实现ActivityBehavior接口
delegateExpressionBean是一个实现JavaDelegate接口的Bean,例如在Spring容器中定义的接口。
<serviceTask id="serviceTask" activiti:delegateExpression="${delegateExpressionBean}" />
无参方法表达式
printer即Spring IOC容器管理的bean
<serviceTask id="javaService" name="Service Task" activiti:expression="#{printer.printMessage()}" />
有参方法表达式
printer即Spring IOC容器管理的bean,executionhe 为DelegateExecution类型,保存了流程相关信息,myVar为流程变量名。
<serviceTask id="javaService" name="Service Task" activiti:expression="#{printer.printMessage(execution, myVar)}" />
值表达式
获取bean名为split的ready字段的值,实质是调用getReady()方法。
<serviceTask id="javaService" name="Service Task" activiti:expression="#{split.ready}" />

浙公网安备 33010602011771号