【flowable学习8】监听器介绍和使用

在Flowable中,监听器(Listeners)是一种非常有用的机制,可以在流程执行的关键时刻执行自定义逻辑。Flowable提供了两种类型的监听器:执行监听器(Execution Listener)和任务监听器(Task Listener)。

执行监听器(Execution Listener)

执行监听器可以附加到流程定义中的任何事件上,例如流程的开始、结束、网关的取道、活动的进入和离开等。

使用方式:
  1. 在BPMN模型编辑器中,右键点击要添加监听器的元素(例如开始事件、任务、网关等),选择“添加执行监听器”。
  2. 在属性面板中配置监听器类型(Java类、表达式、委托表达式等)。
  3. 实现监听器逻辑。
案例:
public class MyExecutionListener implements ExecutionListener {
    @Override
    public void notify(DelegateExecution execution) {
        // 获取流程变量
        String variable = (String) execution.getVariable("myVariable");
        
        // 设置流程变量
        execution.setVariable("newVariable", "newValue");
        
        // 执行其他业务逻辑
        System.out.println("Execution listener triggered: " + execution.getCurrentActivityId());
    }
}

在BPMN模型中配置:

  • 类型:Java类
  • 事件:选择相应的事件(如start、end等)
  • 类:填写完整的类名(例如com.example.MyExecutionListener)

任务监听器(Task Listener)

任务监听器用于监听任务事件,如任务的创建、分配、完成等。

使用方式:
  1. 在BPMN模型编辑器中,右键点击用户任务,选择“添加任务监听器”。
  2. 在属性面板中配置监听器类型(Java类、表达式、委托表达式等)。
  3. 实现监听器逻辑。
案例:
public class MyTaskListener implements TaskListener {
    @Override
    public void notify(DelegateTask delegateTask) {
        // 设置任务办理人
        delegateTask.setAssignee("user123");
        
        // 获取任务属性
        String taskName = delegateTask.getName();
        
        // 执行其他业务逻辑
        System.out.println("Task listener triggered for task: " + taskName);
    }
}

在BPMN模型中配置:

  • 类型:Java类
  • 事件:选择相应的事件(如create、assignment、complete等)
  • 类:填写完整的类名(例如com.example.MyTaskListener)

完整的监听器案例

假设有一个简单的流程,当流程开始时,我们想要记录一条日志,并且在每个用户任务创建时分配一个特定的用户。

Execution Listener
public class StartExecutionListener implements ExecutionListener {
    @Override
    public void notify(DelegateExecution execution) {
        System.out.println("The process has started.");
    }
}
Task Listener
public class TaskAssignmentListener implements TaskListener {
    @Override
    public void notify(DelegateTask delegateTask) {
        delegateTask.setAssignee("specificUser");
        System.out.println("Task " + delegateTask.getName() + " assigned to " + delegateTask.getAssignee());
    }
}

在BPMN模型中:

  1. 在开始事件上添加执行监听器,并配置StartExecutionListener
  2. 在每个用户任务上添加任务监听器,并配置TaskAssignmentListener
    这样,每当流程开始时,都会调用StartExecutionListener,打印日志消息。每当用户任务创建时,都会调用TaskAssignmentListener,将任务分配给指定的用户。
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flowable的执行监听器和任务监听器是用来在流程执行中发生特定事件时执行外部Java代码或计算表达式的机制。执行监听器可以被捕获的事件包括流程实例的启动和结束、流程执行转移、活动的启动和结束、网关的启动和结束、中间事件的启动和结束、启动事件的结束和结束事件的启动。\[2\]任务监听器可以被应用于多种BPMN任务类型,包括任务、服务任务、脚本任务、业务规则任务、发送任务、接收任务、用户任务、子流程和调用活动。对于用户任务、接收任务和其他等待状态的任务,异步操作允许在一个独立的线程/事务中启动执行监听器。\[3\] #### 引用[.reference_title] - *1* [Flowable学习笔记(二):flowable实战](https://blog.csdn.net/u012734723/article/details/128431796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [flowable简介](https://blog.csdn.net/qq_35466392/article/details/126658791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值