flowable实现流程全局事件

简介: 最近在研究flowable,发现这个东东虽说是activiti的升级版,但感觉还是没有a5的好用。项目中需要实现一个全局事件,实现如下:实现flowable的配置@Bean public EngineConfigurationConf...

最近在研究flowable,发现这个东东虽说是activiti的升级版,但感觉还是没有a5的好用。
项目中需要实现一个全局事件,实现如下:

  • 实现flowable的配置
@Bean
    public EngineConfigurationConfigurer<SpringProcessEngineConfiguration> customIdGeneratorConfigurer() {
        return engineConfiguration -> {engineConfiguration.setIdGenerator( customIdGenerator());
            engineConfiguration.setActivityBehaviorFactory(activityBehaviorFactory());
            engineConfiguration.setTransactionManager(transactionManager);
            //设置全局事件监听
            engineConfiguration.setTypedEventListeners(this.getGlobalFlowableEventListener());

        };
    }
    
    /**
     * 设置系统级别监听器
     *
     * @return
     */
    private Map<String, List<FlowableEventListener>> getGlobalFlowableEventListener() {
        Map<String, List<FlowableEventListener>> typedListeners = new HashMap<String, List<FlowableEventListener>>();

        List<FlowableEventListener> processCompleteList = new ArrayList<FlowableEventListener>();
        processCompleteList.add(new ProcessEndListener());
        typedListeners.put("PROCESS_COMPLETED", processCompleteList);

        return typedListeners;

    }
AI 代码解读

上述方法中,实现了流程结束时,自动触发全局事件ProcessEndListener

  • 继承监听器FlowableEventListener,ProcessEndListener源码如下:

/**
 * 流程结束修改状态
 */
public class ProcessEndListener implements FlowableEventListener {

    private static final long serialVersionUID = 1L;


    @Override
    public void onEvent(FlowableEvent event) {
        FlowableEngineEventImpl  engineEvent=(FlowableEngineEventImpl)event;
        SpringContextUtils.getApplicationContext().publishEvent(new ProcessEndEvent(engineEvent,engineEvent.getProcessInstanceId()));
    }


    @Override
    public boolean isFailOnException() {
        return false;
    }

    @Override
    public boolean isFireOnTransactionLifecycleEvent() {
        return false;
    }

    @Override
    public String getOnTransaction() {
        return null;
    }
}
AI 代码解读

我上述代码只是广播了一下spring 事件,让代码实现与流程引擎的解耦。
PS:flowable实现监听器我个人认为比A5差了,他的参数只有一个FlowableEvent,这个接口没法取到相关参数,必须要强转型为FlowableEngineEventImpl才可以。
而Activiti5没有这种操作,感觉使用上比a5差了一点!
至此,全局监听事件完成!

相关文章
22activiti - 流程管理定义(查询流程状态)
22activiti - 流程管理定义(查询流程状态)
170 0
SpringBoot整合Flowable【05】- 使用流程变量传递业务数据
本文介绍了如何使用Flowable的流程变量来管理绩效流程中的自定义数据。首先回顾了之前的简单绩效流程,指出现有流程缺乏分数输入和保存步骤。接着详细解释了流程变量的定义、分类(运行时变量和历史变量)及类型。通过具体代码示例展示了如何在绩效流程中插入全局和局部流程变量,实现各节点打分并维护分数的功能。最后总结了流程变量的使用场景及其在实际业务中的灵活性,并承诺将持续更新Flowable系列文章,帮助读者更好地理解和应用Flowable。 简要来说,本文通过实例讲解了如何利用Flowable的流程变量功能优化绩效评估流程,确保每个环节都能记录和更新分数,同时提供了全局和局部变量的对比和使用方法。
105 0
SpringBoot整合Flowable【05】- 使用流程变量传递业务数据
基于jeecgboot的flowable流程支持定时捕获事件
基于jeecgboot的flowable流程支持定时捕获事件
158 0
基于Flowable的流程挂接自定义业务表单的设计与实践
文章讨论了如何在Flowable流程引擎中挂接自定义业务表单,以及相关设计和实践的步骤。文章中包含了一些前后端代码示例,如Vue组件的模板和脚本部分,这些代码用于实现与Flowable流程引擎交互的界面。例如,有一个按钮组件用于提交申请,点击后会触发applySubmit方法,该方法会与后端API进行交互,处理流程启动、查询关联流程等逻辑。
50314 11
15activiti - 流程管理定义(删除流程定义)
15activiti - 流程管理定义(删除流程定义)
128 0
|
10月前
基于jeecgboot的flowable流程按照条件进行流转的例子
基于jeecgboot的flowable流程按照条件进行流转的例子
215 1
基于jeecgboot的flowable流程支持定时边界事件
基于jeecgboot的flowable流程支持定时边界事件
155 0
|
10月前
Flowable流程中自定义业务表单并行审批的bug修复
Flowable流程中自定义业务表单并行审批的bug修复
181 0
17activiti - 流程管理定义(查询最新版本的流程定义)
17activiti - 流程管理定义(查询最新版本的流程定义)
70 0