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;

    }

上述方法中,实现了流程结束时,自动触发全局事件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;
    }
}

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

相关文章
|
SQL XML 存储
Flowable 流程部署与删除
Flowable 流程部署与删除
|
4月前
|
XML 中间件 数据库
基于jeecgboot的flowable流程支持定时捕获事件
基于jeecgboot的flowable流程支持定时捕获事件
61 0
|
4月前
基于jeecgboot的flowable流程按照条件进行流转的例子
基于jeecgboot的flowable流程按照条件进行流转的例子
107 1
|
4月前
|
XML 中间件 数据库
基于jeecgboot的flowable流程支持定时边界事件
基于jeecgboot的flowable流程支持定时边界事件
79 0
|
11月前
|
XML Java API
Flowable入门:开启你的第一个Flowable BPMN程序(一)
Flowable入门:开启你的第一个Flowable BPMN程序
364 0
|
11月前
|
XML 存储 API
Flowable入门:开启你的第一个Flowable BPMN程序(二)
Flowable入门:开启你的第一个Flowable BPMN程序
430 0
[虚幻引擎插件介绍] DTGlobalEvent 蓝图全局事件, Actor, UMG 相互回调,自由回调通知事件函数,支持自定义参数。
本插件可以在虚幻的蓝图 Actor, Obiect,UMG 里面指定绑定和执行消息,可带自定义参数。 参数支持 Bool,Byte,Int,Int64,Float,Name,String,Text,Vector,Rotator,Transform,Object,Actor。
78 0
|
SQL 存储 数据库
Flowable 设置流程变量的四种方式
Flowable 设置流程变量的四种方式
1136 0
|
XML SQL Java
Flowable 设置任务处理人的四种方式
Flowable 设置任务处理人的四种方式
|
XML Java 数据格式
Flowable 服务任务执行的三种方式
Flowable 服务任务执行的三种方式
1154 0