OopStorm

Flowable消息边界事件

2018/09/28 Share

1.消息边界事件可以做什么

可以插件式的为流程添加节点,说起来有点抽象我们看例子。

2.如何设置一个消息边界事件

  • ①首先在Message definitions中定义消息,如下图:
    image.png
    image.png
  • ②然后编辑流程
    设置消息边界,设置的时候就可以选择①定义好的消息了(此处有很多人会疑惑消息边界事件的引用如何使用,其实是配合①的定义来使用)定义后的流程如图所示:
    image.png
    附件:messageEventboundary.bpmn20.xml

3.如何使用一个消息边界事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  @Autowired
private RuntimeService runtimeService;

@Autowired
private TaskService taskService;

@Autowired
private HistoryService historyService;

ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("messageEventboundary");
//启动流程 到达任务1
List<Task> tasks = taskService.createTaskQuery().list();
assert tasks.size() == 1;
assert "任务1".equals(tasks.get(0).getName());

//触发边界事件
Execution execution = runtimeService.createExecutionQuery().messageEventSubscriptionName("边界测试").singleResult();
runtimeService.messageEventReceived("边界测试", execution.getId());

//到达边界事件
List<Task> eventTasks = taskService.createTaskQuery().list();
assert eventTasks.size() == 1;
assert "边界事件".equals(eventTasks.get(0).getName());

//完成边界事件
taskService.complete(eventTasks.get(0).getId());

assert null != historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult().getEndTime();

关于消息边界事件的使用应该就是这些,感觉并没有吃透flowable的边界事件的用途,接下来的博客会对边界事件的其它形式(异常边界事件,定时边界事件等)做一个跟深入的研究,也欢迎大家留言探讨。

CATALOG
  1. 1. 1.消息边界事件可以做什么
  2. 2. 2.如何设置一个消息边界事件
  3. 3. 3.如何使用一个消息边界事件