1

我想建模一个 BPMN 流程,其中两个并行任务正在验证两个独立的表单。如果其中任何一个表格无效,那么我们必须致电客户并要求新表格。问题是,我不想就表格 1 和分别就表格 2 给客户打电话——如果两种表格都无效,我只想给他打一次电话。

有没有办法在安排呼叫客户任务之前检查两个验证是否已完成?

然后我还有一个问题——在客户被呼叫后,我如何重新进入流程?如果一个表单无效,我想在收到新表单时重新输入相应的表单验证过程,如果两者都无效,则应在两个子流程中重新输入。

我正在使用 Activiti 来实现这一点,如果它很重要的话。

BPMN 草图

编辑

每个流程中的验证任务可能相隔几天,我不想因为另一个子流程中的验证而阻塞一个子流程。我正在寻找一种解决方案,其中子流程将继续通过验证(如果它有效),并且只有在完成两个验证任务(并且至少其中一个是无效的)时才会进行客户呼叫。

4

3 回答 3

1

好的,所以这里的根本问题是我们有 4 个状态需要处理 - 有效/有效、无效/有效、有效/无效和无效/无效。现在,我们可以忽略有效/有效,因为我假设这是快乐路径模型,并且您已经知道如何使其工作。那么我们可以为无效选项做些什么。

我得到的一件事是,即使另一个表单尚未经过验证,您也需要在表单有效后继续“下一步”。我认为你想要做的只是改变处理无效的过程。我认为事件网关可能会让我们到达那里。

现在,我的经验主要是 IBM BPM,而不是 Activity,所以这个答案有可能不是有效的 BPMN,但我认为是。基本上我会想象的是,您的初始拆分实际上是 4 路拆分。现在有 2 个用于表单,2 个用于事件网关。这些事件网关正在等待每个表单发送“有效”或“无效”消息。当收到两者的答案时,它就会知道下一步是简单地结束那部分流程,还是修复有效性。

在 IBM BPM 中,该模型大致如下所示(抱歉,我的 Activiti VM 现在已关闭)

BPMN图

我以前没有尝试过图表。该链接是 - http://imgur.com/pEHY9uO

于 2014-05-20T22:03:45.123 回答
1

为了扩展 Drux 的解决方案,下图是使用 Activiti Modeler 构建的

平行评估

在这里,在两种表单的表单验证之后都会发送一个信号事件。事件被捕获然后关联以确定是否需要向客户发送电子邮件。

虽然下图没有显示,但表单具有两种状态意味着我们还可以在需要时触发重新进入一个或两个表单子流程。

希望这可以帮助。加利-BP3

于 2014-05-21T16:10:26.623 回答
0

您可以并行执行验证,然后将两条路径与并行网关合并。在 BPMN 中,合并并行网关等待所有传入流。关于您的第二个问题,您可以简单地使用几个专有网关。附件是一个示例过程,基于您的文字描述。这是有效的 BPMN。但是,我不是 activiti 专家,所以我不知道是否有任何特定于 activiti 的问题。在此处输入图像描述

于 2014-05-20T13:18:28.537 回答