【问题标题】:Is this valid BPMN?这是有效的 BPMN 吗?
【发布时间】:2020-03-12 04:50:43
【问题描述】:

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

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

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

【问题讨论】:

  • 这个问题已经回答你了吗?

标签: bpmn bpmn.io


【解决方案1】:

如果您真的要注意有效性,您可以使用可配置的 bpmn linter,例如 https://github.com/bpmn-io/bpmnlint(我与该项目无关)。

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-07
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 2014-03-25
      • 2016-11-24
      • 2011-10-19
      • 2011-03-08
      相关资源
      最近更新 更多