activiti流程事件总结

本文总结了Activiti中的流程事件,包括消息事件、信号事件和事件网关。消息事件按需订阅,可启动新流程实例或触发运行中实例。信号事件全局广播,可由流程实例或API触发。事件网关根据事件判断流程流向,订阅相应事件并等待激活。
摘要由CSDN通过智能技术生成

边界事件和中间事件区别:边界事件与关联的节点有关,比如在一个节点上设置了一个定时边界事件,过了这个事件,该节点如果还没有审批,可选择取消活动即不需要审批流转到下一节点。中间事件是在一个节点后定义了一个事件,比如在一个节点后定义了一个中间定义事件,在节点审批完后,超过了定时时间会流转到下一节点。总结,边界事件是针对节点的,中间事件是针对流程的。

1.消息事件

消息事件会引用一个命名的消息。每个消息都有名称和内容。和信号不同, 消息事件总会直接发送个一个接受者。
如果消息应该触发启动一个新流程实例, 在下面的RuntimeService的两个方法中选择一个执行:

//根据消息名称发起流程
ProcessInstance startProcessInstanceByMessage(String messageName);
//传入消息名称和流程变量发起流程
ProcessInstance startProcessInstanceByMessage(String messageName, Map<String, Object> processVariables);
//传入消息名称,流程变量和业务key发起流程
ProcessInstance startProcessInstanceByMessage(String messageName, String businessKey, Map<String, Object> processVariables);

这些方法允许启动对应的消息流程实例。
如果消息需要被运行中的流程实例处理,首先要根据消息找到对应的流程实例然后触发这个等待中的流程。 RuntimeService提供了如下方法可以基于消息事件的订阅来触发流程继续执行:

//根据消息名称和流程执行ID触发消息
void messageEventReceived(String messageName, String executionId);
void messageEventReceived(String messageName, String executionId, HashMap<String, Object> processVariables);

#查询消息事件的订阅

Activiti支持消息开始事件和中间消息事件。
消息开始事件的情况,消息事件订阅分配给一个特定的 processdefinition。这个消息订阅可以使用ProcessDefinitionQuery查询到:

ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().
messageEventSubscription("newCallCenterBooking").singleResult();

• 因为同时只能有一个流程定义关联到消息的订阅点,查询总是返回0或一个结果。 如果流程定义更新了, 那么只有最新版本的流程定义会订阅到消息事件上。
• 中间捕获消息事件的情况,消息事件订阅会分配给特定的执行。 这个消息事件订阅可以使用ExecutionQuery查询到:

Execution execution = runtime
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值