2

https://i.imgur.com/VUQzidR.png

我有一个连接到 4 个活动的 XOR 门。然后每个活动都连接到同一个子流程。不寻找答案或解决方案 - 只是与 BPMN 建模相关的一般建议。

我的问题是我认为这种设计模式可以更好地建模。我也不确定它是否有效。有没有人有正确方向的指示?

我实际上是在尝试为每个组件创建一个,进行检查(检查是相同的一组步骤,但不同的组件)

4

2 回答 2

2

如果你真的很注意有效性,你可以使用一个可配置的 bpmn linter,比如https://github.com/bpmn-io/bpmnlint(我与这个项目没有任何关系)。

使用这样的工具,您可以静态检查常见的设计错误。

于 2019-11-16T23:43:26.760 回答
1

关于你的第二个问题“这是否有效”,我会说:几乎。

  • 图 1:关闭 XOR 网关应放在“检查组件”活动之前。各个“定位组件 xxx”活动的四个箭头都应该合并到这个网关中,从而镜像四个箭头离开的初始 XOR 网关。从那个合并/关闭 XOR 网关,您应该画一个指向“检查组件”的箭头。
  • 图 2:您应该在流程结束时,就在结束事件之前同样放置一个关闭 XOR 网关,以便合并第三个 XOR 网关的“否”分支和“记录其他异常”活动的箭头。否则,如果您执行“记录其他异常”,您的过程将永远不会完成,因为该活动没有传出箭头。

虽然以上几点是客观的,因为它们与 BPMN 语法有关,但您的第一个问题“是否可以更好地建模这种设计模式”的答案是基于意见。这是我会尝试改进的地方

  • 在图表 1 中,问题“组件已成功检查?” 永远不会回答“是”。当确实检查了所有组件时会发生什么?你的过程会被卡住。
  • 我有一种感觉,您不需要在此级别进行单独的“定位组件 x”活动。在图表中,每个组件的位置不会改变后续活动的过程。我宁愿将此活动视为“检查组件”子流程中的第一个任务。但如果你坚持要这样建模,那我就把独占网关变成包容网关,加上一个直通终点事件的箭头。这样,可能会发生多次检查或没有检查,并且您不会被卡住。
  • 考虑到前两点,您可以表示具有顺序活动的“For each”循环,如下所示。三条水平线表示您按顺序重复子过程(而不是并行)。我会将此过程本身视为更广泛过程的子过程,例如“维护车辆”。

在此处输入图像描述

于 2019-11-18T08:13:15.573 回答