Loading

Activiti之——Service Task

描述

Service TaskJava类。

图形符号

服务任务显示为圆角矩形,在左上角带有小齿轮的图标。

XML 表示

Service Task的四种调用逻辑:

  • 指定一个实现JavaDelegateActivityBehavior接口的类。
  • 可解析为委托对象的表达式
  • 方法调用表达式
  • 值表达式

实现JavaDelegateActivityBehavior接口

要指定在流程执行期间调用的类,必须通过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) {
        // ...
    }
    
}

值得注意的是,ActivitiService 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容器管理的beanexecutionheDelegateExecution类型,保存了流程相关信息,myVar为流程变量名。

<serviceTask id="javaService" name="Service Task" activiti:expression="#{printer.printMessage(execution, myVar)}" />

值表达式

获取bean名为splitready字段的值,实质是调用getReady()方法。

<serviceTask id="javaService" name="Service Task" activiti:expression="#{split.ready}" />
posted @ 2021-02-07 16:49  WanDa92632  阅读(1103)  评论(0)    收藏  举报