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/

目录
相关文章
|
网络协议 jenkins 调度
Docker【部署 06】Swarm实践及Operation not permitted和No chain/target/match by that name问题处理
Docker【部署 06】Swarm实践及Operation not permitted和No chain/target/match by that name问题处理
765 0
Docker【部署 06】Swarm实践及Operation not permitted和No chain/target/match by that name问题处理
|
9月前
|
API 数据库 决策智能
基于百炼平台qwen-max的api 打造一套 检索增强 图谱增强 智能工具调用决策的智能体
本文介绍了一种基于阿里云百炼平台的`qwen-max` API构建的智能体方案,该方案集成了检索增强、图谱增强及智能工具调用决策三大模块,旨在通过结合外部数据源、知识图谱和自动化决策提高智能回答的准确性和丰富度。通过具体代码示例展示了如何实现这些功能,最终形成一个能灵活应对多种查询需求的智能系统。
656 11
|
机器学习/深度学习 自然语言处理 物联网
Chronos: 将时间序列作为一种语言进行学习
Chronos框架预训练时间序列模型,将序列值转为Transformer模型的tokens。通过缩放、量化处理,模型在合成及公共数据集上训练,参数量20M至710M不等。优于传统和深度学习模型,展示出色零样本预测性能。使用分类交叉熵损失,支持多模态输出分布学习。数据增强策略包括TSMix和KernelSynth。实验显示大型Chronos模型在概率和点预测上超越多种基线,且微调小型模型表现优异。虽然推理速度较慢,但其通用性简化了预测流程。论文探讨了优化潜力和未来研究方向。
782 3
|
XML JSON 前端开发
bpmn.js 使用常见问题(不定时持续更新)
bpmn.js 使用常见问题(不定时持续更新)
6506 2
|
11月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
2445 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
运维 应用服务中间件 nginx
OS Copilot详细测评:回答能力尚可,辅助执行功能亟需完善
OS Copilot 是一个非常有潜力的工具。它在回答上表现不错,能够提供详细的指令和建议,帮助用户解决实际问题,但是就目前而言,其指令执行相关的能力还存在较多问题,亟需完善。
10980 5
|
编解码 C++
Qt第一课 第一个ui界面
Qt第一课 第一个ui界面
493 2
|
网络协议 安全 Docker
windows环境下的设置docker远程访问(开放2375端口)
windows环境下的设置docker远程访问(开放2375端口)
3035 0
AttributeError: module ‘torch.jit‘ has no attribute ‘_script_if_tracing‘
AttributeError: module ‘torch.jit‘ has no attribute ‘_script_if_tracing‘
437 0
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
1453 0
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便