springboot+flowable第四节(设置监听事件)
目录1. 执行监听事件写法2. 任务监听事件写法3. 创建流程4. 事件执行类5. 启动流程监听事件分为:执行监听、任务监听。1. 执行监听事件写法<flowable:executionListener class="类" expression="表达式"delegateExpression="委托表达式" event="事件"><flowable:field name="参数名
·
监听事件分为:执行监听、任务监听。
1. 执行监听事件写法
<flowable:executionListener class="类" expression="表达式" delegateExpression="委托表达式" event="事件">
<flowable:field name="参数名" stringValue="字符串" expression="表达式" />
</flowable:executionListener>
<!--
类:示例 com.company.MyCustomListener,自定义类必须实现 org.flowable.engine.delegate.ExecutionListener接口
表达式:示例 ${myObject.callMethod(task, task.eventName)}
委托表达式:示例 ${myListenerSpringBean} ,该 springBean 需要实现 org.flowable.engine.delegate.ExecutionListener接口
event: 事件执行的时刻(包括:
start 开始、take 启用、end 结束)
-->
2. 任务监听事件写法
<flowable:taskListener class="类" expression="表达式" delegateExpression="委托表达式" event="事件">
<flowable:field name="参数名" stringValue="字符串" expression="表达式" />
</flowable:taskListener>
<!--任务监听事件:taskListener
自定义类必须实现 org.flowable.task.service.delegate.TaskListener接口
event: 事件执行的时刻(包括:
create(创建):当任务已经创建,并且所有任务参数都已经设置时触发。
assignment(指派):当任务已经指派给某人时触发。请注意:当流程执行到达用户任务时,在触发create事件之前,会首先触发assignment事件。
complete(完成):当任务已经完成,从运行时数据中删除前触发。
delete(删除):在任务即将被删除前触发。请注意任务由completeTask正常完成时也会触发。)
任务执行参数:field(可配置多个)
-->
3. 创建流程
目的,创建一个(开始—>审核—>结束)流程,并在审核节点设置一个【任务监听】事件。
xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:flowable="http://flowable.org/bpmn"
targetNamespace="http://www.flowable.org/processdef">
<process id="process_audit3" name="审核流程">
<startEvent id="startNode1" name="开始">
<outgoing>Flow_0ksehsm</outgoing>
</startEvent>
<endEvent id="Event_08rzeth" name="结束">
<incoming>Flow_18upiqx</incoming>
</endEvent>
<sequenceFlow id="Flow_0ksehsm" sourceRef="startNode1" targetRef="Activity_0ipmowu" />
<sequenceFlow id="Flow_18upiqx" sourceRef="Activity_0ipmowu" targetRef="Event_08rzeth" />
<userTask id="Activity_0ipmowu" name="审核" flowable:assignee="1">
<extensionElements>
<flowable:taskListener class="org.flowable.audit.TaskEvent" event="complete">
<flowable:field name="message" stringValue="执行完成" />
</flowable:taskListener>
</extensionElements>
<incoming>Flow_1huwgzm</incoming>
<outgoing>Flow_18upiqx</outgoing>
</userTask>
</process>
</definitions>
4. 事件执行类
注意xml文件中的任务监听类,需要在项目中相应位置建立。
任务监听类需要实现TaskListener
package org.flowable.audit;
import org.flowable.engine.impl.el.FixedValue;
import org.flowable.task.service.delegate.DelegateTask;
import org.flowable.task.service.delegate.TaskListener;
import org.springframework.stereotype.Component;
@Component
public class TaskEvent implements TaskListener {
// 名称要与流程定义中的参数名称一致
private FixedValue message;
@Override
public void notify(DelegateTask delegateTask) {
// 获取监听事件中的参数
String val = message.getExpressionText();
System.out.println("获取到的任务执行参数为:" + val);
}
}
5. 启动流程
启动项目后,启动流程
现在流程到达了审核节点
然后根据taskId审批通过此节点
查看控制台
可以看到审批通过时,执行了监听事件。
完事。
下一节写啥呢 ?
更多推荐
已为社区贡献2条内容
所有评论(0)