技术交流28群

服务热线

135-6963-3175

微信服务号

activti之监听器 更新时间 2016-5-23 浏览2069次


开始结束事件为ExecutionListener(event=start,end)

任务事件可以为TaskListener(event=create,assignment,complete,all)或ExecutionListener(event=start,end)

监听器类型:

create: 任务创建且所有任务属性设置完全之后触发。

assignment: 任务分配给某个班里人之后触发,并在create之后。

complete: 任务完成时触发,在运行时任务数据被删除之前触发(act_ru_task表数据清之前)。


xml表现形式

<activiti:executionListener event="start" class="com.xx.xx"/>
<activiti:executionListener event="start" expression="${name}"/>
<userTask id="task1" name="用户任务">
    <extensionElements>
       <activiti:taskListener event="complete" class="com.task.listener.taskForUserTaskComplete"/>
    </extensionElements>
</userTask>
<activiti:taskListener event="create" expression="#{expression}"></activiti:taskListener>
<activiti:taskListener event="create" delegateExpression="${someJavaDelegateBean}"></activiti:taskListener>

1643205425985.png

1、Class

TaskListener

public class MyTaskListener implements TaskListener{
   private static final long serialVersionUID = 1L;
   public void notify(DelegateTask delegateTask) {
      // TODOAuto-generated method stub
      delegateTask.setAssignee("赵六"); // 指定办理人
   }
}

ExecutionListener:

public class ExectuionListenerDemoimplements Serializable, ExecutionListener {
         privatestatic final long serialVersionUID = 8513750196548027535L;
         @Override
         publicvoid notify(DelegateExecution execution) throws Exception {
                 System.out.println("流程监听器");
         }
}

2、Expression

通过表达式来实现监听执行,可指定调用的方法。

<activiti:taskListener event="create" expression="#{myService.doSomething()}"></activiti:taskListener>

会调用myService的doSomething方法。

3、Delegate expression

引用一个JavaDelegate来调用java bean。

delegateExpression是引用一个JavaDelegate实现bean,具体的操作在这个bean中定义,默认一个execute方法。

比如

@Service("someJavaDelegateBean");
public class ToUppercase implements JavaDelegate {
  public void execute(DelegateExecution execution) throws Exception {
    String var = (String) execution.getVariable("input");
    var = var.toUpperCase();
    execution.setVariable("input", var);
  }
}
<activiti:taskListener event="create" delegateExpression="${someJavaDelegateBean}"></activiti:taskListener>

4.Alfresco execution script: 外部定义的执行脚本

5.Alfresco  task script:外部定义的任务脚本


Fields: 值域

可以作为参数值传给上面指定的执行对象。

Field Name: 值域名称

String Value:值域值

Expression:值域表达式

<activiti:field name="text1">
        <activiti:expression>${genderBean.getGenderString(gender)}</activiti:expression>
</activiti:field>