当前位置: 首页 > news >正文

activiti 用户任务中的执行监听器

前言

用户任务中的执行监听器配置界面

在这里插入图片描述
在这里插入图片描述

监听器事件

用户任务中的执行监听器可以监听到的事件有:

  • start:开始时触发。
  • end:结束时触发。
  • take:执行时触发。

监听器执行方式

监听器的执行方式:

  1. 类(class):需要配置实现了ExecutionListener接口的类。
  2. 表达式(Expression):需要从Spring中获取对应的bean对象及要调用的相关的方法。
  3. 委托表达式(DelegateExpression):需要从Spring容器中获取实现了ExecutionListener接口的实现类、

类(class)方式

类由 activiti 初始化。
因实现了 ExecutionListener 接口,所以无需指定调用的方法。

表达式(Expression)方式

类已由 spring 初始化完成。表达式中是 bean 的名字。
因未实现 ExecutionListener 接口,所以 activiti 不知道该调用哪个方法,需要指定所需调用的方法。

示例:

${updateInstanceUpdate.update()}
  • updateInstanceUpdate 是 spring 中 bean 的名字。

委托表达式(DelegateExpression)方式

类已由 spring 初始化完成。
表达式中是 bean 的名字。
因实现了 ExecutionListener 接口,所以无需指定调用的方法。

示例:

${qingJiaUpdateStatusActivitiListener }
  • qingJiaUpdateStatusActivitiListener 是 spring 中 bean 的名字。

传递参数

在执行监听器配置界面下半部分添加传递给监听器的参数。
可配置常量(字符串)和表达式

监听器中接收参数

@Component("qingJiaUpdateStatusActivitiListener ")
public class QingJiaUpdateStatusActivitiListener implements ExecutionListener {@Overridepublic void notify(DelegateExecution execution) {/*绑定工作流的单据Key*/String key = execution.getProcessInstanceBusinessKey();/*status*/Integer status = this.getIntegerFieldValue(execution.getCurrentActivitiListener(), "status");/*更新 status*/if (null != status) {this.xxx.notifyUpdateStatus(id, status);}}protected String getFieldValue(ActivitiListener activitiListener, String fieldName) {List<FieldExtension> listField = activitiListener.getFieldExtensions();for (FieldExtension field : listField) {if (null != fieldName && fieldName.equals(field.getFieldName())) {return field.getStringValue();}}return null;}protected Long getLongFieldValue(ActivitiListener activitiListener, String fieldName) {String fieldValue = this.getFieldValue(activitiListener, fieldName);return null==fieldValue?null:Long.valueOf(fieldValue);}protected Integer getIntegerFieldValue(ActivitiListener activitiListener, String fieldName) {String fieldValue = this.getFieldValue(activitiListener, fieldName);return null==fieldValue?null:Integer.valueOf(fieldValue);}}

参考

https://blog.csdn.net/m0_38001814/article/details/104197670

http://www.lryc.cn/news/207561.html

相关文章:

  • leetcode做题笔记200. 岛屿数量
  • HTTP 之 options预请求 nginx 解决跨域 postman调试跨域问题
  • MFC知识点
  • Spring-手写模拟Spring底层原理
  • Scala【集合常用方法和函数操作(下)】
  • JS加密/解密之那些不为人知的基础逻辑运算符
  • flinksql kafka到mysql累计指标练习
  • pdf转jpg的方法【ps和工具方法】
  • 【已解决】Qt发送信号后,槽函数没有响应
  • Kafka入门05——基础知识
  • WordPress(7)配置邮箱发送功能
  • 简化路径(C++解法)
  • CS224W1.1——图机器学习介绍
  • docker搭建waline评论系统
  • sql server 生成连续日期和数字
  • 太极v14.0.4 免ROOT用Xposed
  • python DevOps
  • Git(四)底层命令:git对象、树对象、提交对象
  • LVS-DR模式+keepalived+nginx+tomcat实现动静分离、负载均衡、高可用实验
  • canvas 状态管理
  • vue中如何给后端过来的数组中每一个对象加一个新的属性和新的对象(不影响后端的原始数据)
  • SpringAOP源码解析之TargetSource(四)
  • Centos7 安装nvidia显卡驱动
  • 22 行为型模式-状态模式
  • Jetpack:018-Jetpack中的导航一
  • Linux常见问题解决操作(yum被占用、lsb无此命令、Linux开机进入命令界面等)
  • 层次式架构的设计理论与实践
  • 【shell】read -t -n1
  • 【嵌入式项目应用】__cJSON在单片机的使用
  • 【智能家居】