具有条件流的 BPMN 基于事件的网关

BPMN event-based gateway with conditional flow

我正在尝试为基于事件的网关建模,该网关等待多条消息,并可选择等待计时器。在实际模型中使用它之前,我在单元测试中尝试过,似乎在 camunda 引擎中完全忽略了该条件。现在我想知道 bpmn 是否应该支持它,如果不支持,是否有一种简单的替代方法来对此进行建模。

基于camunda-engine-unit-test project的单元测试代码如下:

Map<String, Object> variables = singletonMap("isTimerActive", (Object) false);
ProcessInstance pi = runtimeService.startProcessInstanceByKey("testProcess", variables);
assertFalse("Process instance should not be ended", pi.isEnded());

String id = pi.getProcessInstanceId();
Job timer = managementService.createJobQuery().processInstanceId(id).timers().active().singleResult();

assertNull(timer);

这是不允许的。

The outgoing Sequence Flows of the Event Gateway MUST NOT have a conditionExpression

BPMN 2.0 规范第 10.5.6 节,第 297 页

编辑:来源:http://www.omg.org/spec/BPMN/2.0/PDF