一:启动事件

定义消息。
flowable消息事件-LMLPHP
引用消息。
flowable消息事件-LMLPHP

<startEvent id="msgStart" name="消息启动事件" isInterrupting="true">
      <messageEventDefinition messageRef="myMsgStart"></messageEventDefinition>
</startEvent>
@Test
void startMessageProcess() {
    Deployment deploy = repositoryService.createDeployment()
            .addClasspathResource("processes/MsgStartEventProcess.bpmn20.xml")
            .name("消息启动流程")
            .deploy();
	// 注意:这里是根据messageName启动的而不是根据messageId
    ProcessInstance processInstance = runtimeService.startProcessInstanceByMessage("我的第一个消息启动事件");
    System.out.println(processInstance.getId());
}

二:中间事件

中间消息也是用于延迟到下一节点的审批时机,即当触发某个条件时才会继续走到下一个节点。
flowable消息事件-LMLPHP

flowable消息事件-LMLPHP

@Test
void nextActivitiy() {
    // 触发中间消息捕获事件,进入下一节点
    runtimeService.messageEventReceived("中间消息", "50");
}

三:边界消息

边界消息:当消息到达时如果节点还没有审批,那么节点就流转到边界消息事件后面的那个节点处理。

flowable消息事件-LMLPHP

@Test
void nextActivitiy() {
    // 如果UserTask1在调用该方法时还没有审批,就流转到UserTask3      
    runtimeService.messageEventReceived("边界消息", "7553");
}
11-17 12:13