Activiti监听任务的几种方式

简介: Activiti监听任务的几种方式

Activiti监听任务的几种方式

全局监听

监听类

@Component
public class TaskCompletedEventListener implements ActivitiEventListener {
    @Override
    public void onEvent(ActivitiEvent event) {
        if (!event.getType().equals(TASK_COMPLETED)) {
            return;
        }
        //监听处理
    }
    @Override
    public boolean isFailOnException() {
        return true;
    }
}
  • onEvent:事件处理代码
  • isFailOnException:出现异常时当前操作是否失败
  • TASK_COMPLETED:为org.activiti.engine.delegate.event.ActivitiEventType枚举值。通过查看引用可查看抛出事件携带的参数,便于从event中获取携的参数。
源码ActivitiEventSupport.dispatchEvent中使用isFailOnException返回值来判断是否继续抛出异常

Spring 配置类

@Configuration
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
    @Lazy
    @Autowired
    private List<ActivitiEventListener> activitiEventListeners;
    @Override
    public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
        processEngineConfiguration.setEventListeners(activitiEventListeners);
    }
}
  • ProcessEngineConfigurationConfigurer:为activiti-spring-boot提供的activiti配置入口,继承重写configure方法即可设置activiti配置。
  • activitiEventListeners注入说明:Spring集合注入会将Spring中托管的子类都注入此集合

TaskListener监听

通过bpmn文件配置

    <userTask id="任务id" name="任务名称" activiti:candidateUsers="候选用户">
      <extensionElements>
        <activiti:taskListener event="create" delegateExpression="${taskStartListener}">
          <activiti:field name="url" stringValue="333"/>
        </activiti:taskListener>
      </extensionElements>
    </userTask>
  • delegateExpression:代理表达式,支持读取Spring托管的bean
  • event : 监听的节点assignment/设置代理人,complete/任务完成,create/创建任务
  • activiti:field 监听类扩展参数,对应类中使用Expression读取配置文件中指定内容,除了字符串还可以指定为动态表达式例如:expression="Hello ${gender == 'male' ? 'Mr.' : 'Mrs.'} ${name}",表达式中可访问的内容包含流程变量及spring中定义的bean
@Data
@Service("taskStartListener")
public class TaskStartListener implements TaskListener {
    protected Expression textExp;
    public void notify(DelegateTask delegateTask) {
        String text = textExp.getExpressionText();
        //任务开始监听
    }
}

ExecutionListener监听

通过bpmn文件配置

    <userTask id="任务id" name="任务名称" activiti:candidateUsers="候选用户">
    <extensionElements>
        <activiti:executionListener event="start" delegateExpression="${executionStartListener}">
          <activiti:field name="start" stringValue="start"/>
        </activiti:executionListener>
    </extensionElements>
</userTask>

executionListener: 执行监听,可用于监听流程,环节,连接线,比任务监听范围更广但没有assignment这种针对任务的监听

  • delegateExpression:代理表达式,支持读取Spring托管的bean
  • event : 监听的节点start/节点开始,end/节点结束,take/监听连接线
  • activiti:field 监听类扩展参数
@Data
@Service("executionStartListener")
public class ExecutionStartListener implements ExecutionListener {

    protected Expression textExp;

    @Override
    public void notify(DelegateExecution execution) {
        String text = textExp.getExpressionText();
        //执行开始监听
    }
}

参考资料

https://www.activiti.org/userguide/

目录
相关文章
|
8月前
|
安全 Java API
Spring Boot 4 升级实战:从3.x到4.0的分步升级保姆级指南
Spring Boot 4.0于2025年11月发布,基于Spring Framework 7.0,实现模块化(47个轻量自动配置)、JSpecify空安全校验、原生API版本控制等重大升级。镜像减19%、启动快33%,迁移平滑,3.5.x支持至2026年11月。(239字)
6556 1
|
缓存 自然语言处理 Java
详解FreeMarker Template:在Spring Boot中实现动态内容生成
详解FreeMarker Template:在Spring Boot中实现动态内容生成
3024 13
|
弹性计算 分布式计算 监控
祝贺叠纸新游《无限暖暖》全球开服!阿里云全球基础设施持续护航
祝贺叠纸新游《无限暖暖》全球开服!阿里云全球基础设施持续护航
874 5
|
存储 消息中间件 JSON
DDD基础教程:一文带你读懂DDD分层架构
DDD基础教程:一文带你读懂DDD分层架构
|
消息中间件 数据可视化 RocketMQ
【RocketMQ系列二】通过docker部署单机RocketMQ
【RocketMQ系列二】通过docker部署单机RocketMQ
3925 4
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
1655 0
|
IDE 开发工具 虚拟化
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
1805 0
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
|
前端开发 Java
springboot集成knife4j接口文档
springboot集成knife4j接口文档
springboot集成knife4j接口文档
|
SQL 安全 Java
Spring Boot中的跨站点脚本攻击(XSS)与SQL注入防护
【6月更文挑战第15天】在现代Web应用程序开发中,安全性是一个至关重要的课题。跨站点脚本攻击(XSS)和SQL注入是最常见的两种攻击类型,它们可以严重威胁到应用程序的安全。
1423 0

热门文章

最新文章