# 一、触发队列作用
在上一节触发的定义中,我们会看到一个关键字-“异步”,也就是说在例如流程结束之后,触发的执行是由其他线程异步执行,而不是当前流程结束的线程同步执行的
由此,诞生了触发队列,从而解决触发异步执行的问题
# 二、触发队列模型
# 1.生产者与消费着经典模型
基于“异步”这个关键字,我们看看触发队列是怎么架构的
触发队列的总体架构,其实就是基于多线程的经典模型,生产者与消费者模型进行架构的
上图为经典的生产者与消费者模型,多个生产者线程不停的产生任务,放入到任务缓冲区,然后由多个消费者线程,不停的从缓冲区取出任务进行消费,从而异步的实现多线程执行任务
而触发队列在这套模型之上,根据自身的业务需求进行架构
# 2.CAP触发队列整体模型
首先,我们看看cap触发队列的整体模型图
每当流程提交、无流程数据保存等操作产生之后(实际上就是调用doTrigger方法),都会产生一个事件,并将该事件放入到事件队列中进行解析,该事件会根据源表设置的触发定义,产生出多个任务(一个aciton一个任务),并放入到任务队列中去,然后再由多线将任务取出,执行具体的逻辑(即执行触发设置的动作action)
由此可见,我们触发队列的整体流程为 产生事件--->放入事件队列--->解析事件为任务--->放入任务队列--->取出任务并执行
具体流程图示例如下图
简单版本:一条流程结束后,触发异步执行简图
复杂版本:多条流程结束后,触发异步执行简图
综上 触发队列其实就是基于生产者与消费者模式之上的异步多线程模型
创建人:yinyanting
修改人:zhangzuh