# 一、触发队列作用

在上一节触发的定义中,我们会看到一个关键字-“异步”,也就是说在例如流程结束之后,触发的执行是由其他线程异步执行,而不是当前流程结束的线程同步执行的

由此,诞生了触发队列,从而解决触发异步执行的问题

# 二、触发队列模型

# 1.生产者与消费着经典模型

基于“异步”这个关键字,我们看看触发队列是怎么架构的

触发队列的总体架构,其实就是基于多线程的经典模型,生产者与消费者模型进行架构的

1724667452111.png

上图为经典的生产者与消费者模型,多个生产者线程不停的产生任务,放入到任务缓冲区,然后由多个消费者线程,不停的从缓冲区取出任务进行消费,从而异步的实现多线程执行任务

而触发队列在这套模型之上,根据自身的业务需求进行架构

# 2.CAP触发队列整体模型

首先,我们看看cap触发队列的整体模型图

1724667461374.png

每当流程提交、无流程数据保存等操作产生之后(实际上就是调用doTrigger方法),都会产生一个事件,并将该事件放入到事件队列中进行解析,该事件会根据源表设置的触发定义,产生出多个任务(一个aciton一个任务),并放入到任务队列中去,然后再由多线将任务取出,执行具体的逻辑(即执行触发设置的动作action)

由此可见,我们触发队列的整体流程为 产生事件--->放入事件队列--->解析事件为任务--->放入任务队列--->取出任务并执行

具体流程图示例如下图

简单版本:一条流程结束后,触发异步执行简图

1724667469067.png

复杂版本:多条流程结束后,触发异步执行简图

1724667476406.png

综上  触发队列其实就是基于生产者与消费者模式之上的异步多线程模型

创建人:yinyanting
修改人:zhangzuh