消息开始事件

================================

定义

元素定义

消息开始事件可以用其使用一个命名的消息来启动流程实例。 这样可以帮助我们使用消息名称来选择正确的开始事件
在发布包含一个或多个消息开始事件的流程定义时,需要考虑下面的条件:

  • 消息开始事件的名称在给定流程定义中不能重复。 流程定义不能包含多个名称相同的消息开始事件。 如果两个或以上消息开始事件应用了相同的事件,或两个或以上消息事件引用的消息名称相同,activiti会在发布流程定义时抛出异常。
  • 消息开始事件的名称在所有已发布的流程定义中不能重复。 如果一个或多个消息开始事件引用了相同名称的消息,而这个消息开始事件已经部署到不同的流程定义中, activiti就会在发布时抛出一个异常。
  • 流程版本:在发布新版本的流程定义时,之前订阅的消息订阅会被取消。 如果新版本中没有消息事件也会这样处理。

图标说明

xianx

使用说明

  • 1.消息开始事件只支持顶级流程。消息开始事件不支持内嵌子流程。(用例1)
  • 2.如果流程定义有多个消息开始事件,runtimeService.startProcessInstanceByMessage(...) 会选择对应的开始事件。
  • 3.如果流程定义有多个消息开始事件和一个空开始事件。 runtimeService.startProcessInstanceByKey(...)和 runtimeService.startProcessInstanceById(...)会使用空开始事件启动流程实例。
  • 4.如果流程定义有多个消息开始事件,而且没有空开始事件, runtimeService.startProcessInstanceByKey(...)和 runtimeService.startProcessInstanceById(...)会抛出异常。
  • 5.如果流程定义只有一个消息开始事件, runtimeService.startProcessInstanceByKey(...)和 runtimeService.startProcessInstanceById(...)会使用这个消息开始事件启动流程实例。(用例2)
  • 6.如果流程被调用环节(callActivity)启动,消息开始事件只支持如下情况:
    在消息开始事件以外,还有一个单独的空开始事件
    流程只有一个消息开始事件,没有空开始事件。

元素验证

验证用例

验证项目 用例描述 输入条件 期望结果 实际结果 结果
1 验证消息开始事件不支持内嵌子流程 通过测试流程,验证消息开始事件不支持内嵌子流程 流程为内嵌子流程,设计完成,点击调试 提示流程不符合规则 提示流程不符合规则
2 验证流程只有一个消息开始事件,流程使用开始事件启动流程实例 通过测试流程,验证流程只有一个消息开始事件,流程使用开始事件启动流程实例, 验证用户: laura,设置消息开始事件代码ProcessInstance startProcessInstanceByMessage(String messageName);"MSG_提交订单" 1.启动流程,消息开始事件接收到代码提交订单后,用例laura得到仓库出货任务 未验证
3 验证流程有多个消息开始事件和一个空开始事件时,流程使用空开始事件启动流程实例 通过测试流程,验证流程有多个消息开始事件和一个空开始事件时,流程使用空开始事件启动流程实例 验证用户: laura 未验证
4 验证消息开始事件的名称在给定流程定义中不能重复 通过测试流程,验证消息开始事件的名称在给定流程定义中不能重复 验证用户: laura 未验证

验证流程

用例1

消息开始

用例2

dfd