这个 BPMN 有什么错误?

What are the errors in this BPMN?

我有一个 BPMN 图(见下文),其中有一些我似乎无法弄清楚的错误。该图描述了 Produce Magazine 文章流程,​​其中作者和研究人员是自由职业者,他们共同为各种出版物撰写文章。

更大的版本:BPMN diagram

这里有一堆错误,其中三个是逻辑错误(两个是相关的),一个是BPMN语法。

让我们从语法开始。

消息始终是两个独立池之间的通信,因为它必须跨越池边界。在您的情况下,您已将自由职业者描述为一个池,因此发送信息,在车道之间而不是池之间是一个语法错误。不过,在提出解决方案之前,我将重点关注逻辑错误。

时间事件不用于显示活动之间经过了一段时间的事实。那其实是过程中很自然的东西,用来表示时间的流逝是下一个动作的触发。例如,在选择主题后 7 天,出版物可能会联系研究人员以检查进度。这将由定时事件指示。在您的情况下,流程延续似乎是通过传递消息触发的,因此您应该将其指示为传入消息事件。您实际上在两个地方这样做,一个是显而易见的(获取文章作为时间事件的 "result"),第二个与第二个问题相关。

第二个最有可能是合乎逻辑的问题是,由于我们在这里谈论的是自由职业者,因此研究人员和作家很可能是两个独立的实体,而不是您当前图表所示的一个组织。如果是这种情况,您应该将它们表示为两个单独的池。然后你的消息将被判断,但仍然而不是 "Wait for information" 时间事件你应该有 "Receive information" 传入消息事件(顺便说一句,作家池的开始事件 - 类似地应该处理研究人员接收文章请求通过传入消息事件)。

如果您更喜欢将 Freelancer 描述为一个 "organisation",那么您应该完全放弃时间事件(因为您再次将其用作时间流逝的指示,正如我之前解释的那样,这不是应该如何使用)。您有一个简单的流程,一旦 Researcher 完成他们的工作,它就会传递给 Writer,Writer 从那里接过它。在这种情况下,您应该在操作之间有一个简单的操作流程(实线)。

在使用 End 事件(至少推荐 - 一些 BPM 引擎验证这一点)方面保持一致也是一种很好的做法,即使对于流程的每个分支也始终有一个 End 事件。您会遗漏一两个,具体取决于您将如何处理自由职业者部分。同样,您应该有一个发布的开始事件。

下面以图表的形式给出了两个选项。请注意,我还做了一些小改动来处理发布信息不足的情况。否则,他们将永远等待文章的到来。

将自由职业者作为单独池的选项:

将自由职业者视为一个组织的选项