通过前面的章节,我们其实能够梳理出触发异步的执行过程,即

产生事件--->放入事件队列--->解析事件为任务--->放入任务队列--->取出任务并执行

1724667585989.png

通过上图可以,队列三大核心其实就是产生事件、事件转化为任务、取出任务并执行

从本章开始,我们对这三个最重要的步骤,下面进行详细分析

首先我们看看事件是怎样产生的,即如下图部分逻辑

1724667593328.png

在标准产品中,每当数据被修改并保存(包含流程、无流程数据),都会去调用doTriger方法,从而产生事件并对产生的事件进行持久化,同时将事件加入到事件队列中

1724667599484.png

在com/seeyon/cap4/form/modules/engin/trigger/CAP4FormTriggerManager.java 中,提供了一系列doTrigger 的重载方法,方便数据被修改后调用,该方法是整个触发的入口方法

在doTrigger 方法中,通过dispatchTriggerFireEvent方通,产生出事件对象CAPFormTriggerEvent,并进行持久化

1724667605842.png

通过TaskEventConsumer,将数据库中state为WAIT的数据查询出来,然后修改状态为UN_DO,然后再通过异步监听的方式,放到事件队列中

1724667622162.png

综上,触发事件的产生以及入队的详细流程图如下

1724667630798.png

创建人:yinyanting
修改人:zhangzuh

快速跳转