工作流中有使用到消息队列的异步:
启动流程实例的时候,会先调用activiti引擎,获取实例id,然后写本地数据库。
然后消息队列异步去查询activiti数据库,获取待办任务,然后执行业务逻辑。
任务办理的时候,先查询任务是否办理,以及是否有权限办理,是否有锁,如果都顺利,则对该任务加锁,通过在数据库中实例id和节点key加锁,然后把任务丢cmq。
接下来从cmq中取任务,办理任务,任务办理失败重新丢cmq,成功的话就在本地数据库删除待办生成已办,最后把流程实例重新丢进cmq,获取下一个节点的待办任务,循环。
待办中心也有使用到消息队列:
创建审批实例的时候,会把审批实例丢cmq。
定时拉取审批历史,如果拉取到的待办任务列表不为空,则同步到本地数据库之后,还要重新丢回cmq。
网友评论