【Flowable | 第三篇】flowable工作流使用任务监听器、执行监听器

在这里插入图片描述

4.flowable工作流使用任务监听器、执行监听器

4.1任务监听器

  1. 任务监听器,即用于监听任务,可以监听任务的创建、分配、完成、以及删除共四个事件。
  2. TaskListener 的事件类型和执行时机是与任务相关的,它可以访问任务相关的信息,并可以对任务进行操作(例如设置任务的执行人、指定任务的代理人等),因此通常用于处理与任务相关的事件。
  3. 事件触发类型:
    1. create(创建):在任务被创建且所有的任务属性设置完成后才触发
    2. assignment(指派):在任务被分配给某个办理人之后触发
    3. complete(完成):在配置了监听器的上一个任务完成时触发
    4. delete(删除):在任务即将被删除前触发。请注意任务由completeTask正常完成时也会触发
  4. 事件类型:
    1. 类 (示例:com.owater.demoflowable.listener.FlowExecutionListener)
    2. 表达式(使用的是Spring EL表达式)
    3. 委托表达式

4.2执行监听器

  1. 执行监听器,针对整个流程实例的事件监听器,它可以监听流程实例启动、结束、活动开始、活动结束、连线选择等事件。
  2. ExecutionListener 的事件类型和执行时机都是固定的,它不能直接访问任务相关的信息(例如任务的候选人、任务的执行者等),因此通常用于处理与流程实例相关的事件。
  3. 事件触发类型: 启动(start)、结束(end)、在用(take)
  4. 事件类型:
    1. 类(示例:com.owater.demoflowable.listener.FlowExecutionListener)
    2. 表达式(使用的是Spring EL表达式)
    3. 委托表达式

img

  1. 区分点:
    1. 能否访问任务相关信息(任务候选人、任务执行者):
      1. 执行监听器是针对整个流程实例的事件监听器,它可以监听流程实例启动、结束、活动开始、活动结束、连线选择等事件;执行时机都是固定的,它不能直接访问任务相关的信息
      2. 任务监听器可以访问
  2. 作用:
    1. 动态分配节点处理人。通过前一个节点设置的变量,在运行到下一个节点时设置对应的处理人;
    2. 当流程运行到某个节点时,发送邮件或短信给待办用户;

4.2配置任务/执行监听器

4.2.1新增任务监听器

package org.dromara.workflow.listener;

/**
 * 自定义任务监听器
 */
@Slf4j
@Component()
public class MyTaskListener implements TaskListener {
   

    
Flowable 是一个开源的工作流引擎,它可以帮助我们设计和执行各种类型的工作流程。在 Flowable 中,我们可以通过设置任务监听器来对任务的生命周期进行监听和处理。 要设置任务监听器,需要按照以下步骤进行操作: 1. 创建一个实现了 org.flowable.engine.delegate.TaskListener 接口的监听器类,该接口定义了任务监听器的回调方法。 2. 在该监听器类中,实现需要的任务生命周期回调方法,如 `notify` 方法。你可以根据自己的需求在这些方法中编写相应的逻辑。 3. 在流程定义文件(BPMN 文件)中,为任务节点添加监听器属性,并引用上一步创建的监听器类。 具体示例请参考以下代码: ```java import org.flowable.engine.delegate.DelegateTask; import org.flowable.engine.delegate.TaskListener; public class MyTaskListener implements TaskListener { @Override public void notify(DelegateTask delegateTask) { // 在这里编写任务生命周期回调时需要执行的逻辑 // 可以获取任务相关信息,如任务ID、任务名称、任务负责人等 // delegateTask.getId(); // delegateTask.getName(); // delegateTask.getAssignee(); } } ``` 然后,在流程定义文件的任务节点中添加监听器属性: ```xml <userTask id="task1" name="My Task" flowable:assignee="${assignee}"> <extensionElements> <flowable:taskListener event="create" expression="${myTaskListener}" /> </extensionElements> </userTask> ``` 在上述代码中,`${assignee}` 是一个表达式,用于设置任务的负责人。`${myTaskListener}` 是一个表达式,用于引用上面创建的监听器类。 这样,当流程执行到该任务节点时,任务监听器类中的相应方法将被调用,并可以执行你定义的逻辑。 希望以上信息对你有帮助!如有其他问题,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来自梦里的一条鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值