0

例如,系统通过check identification-> validate order context->处理客户订单make order。但系统管理员可以在运行时更改流程,管理员可以跳过“<code>validate order context”。

我的问题是如果系统正在处理并发订单请求,系统应该何时应用流程更改?

  • a):应用更改直到下一个新订单请求。

  • b):无论正在处理任何请求,都立即应用更改。听起来太生硬了。

  • c):将更改应用到某个时间,例如,任何更改都将在 00:00:00 应用。我不认为这是一个好的策略。

这种情况的最佳做法是什么?如果我使用 jBMP 框架来控制工作流程,在这种情况下可以使用什么策略?谢谢!

4

2 回答 2

1

你的三个选项都是有效的。正确的选择取决于您要解决的问题。这里有些例子:

  1. 从下一个新订单开始应用更改。如果您想分阶段进入新的工作流程,这是一个不错的选择。您可以将其描述为“使用当前工作流程完成当前工作,但所有新工作都将使用新工作流程”。
  2. 立即应用更改。如果将当前工作流(我指的是新工作流)用于所有工作(当前的和新的)更为重要,这是一个不错的选择。这方面的一个例子可能是“我们从工作流程中删除了一个不必要的步骤”。
  3. 从特定时间开始应用更改。在可以这样描述的情况下,这是一个不错的选择:“今天我们使用旧的工作流程,但明天我们开始使用新的工作流程”。
于 2011-01-21T14:00:48.303 回答
1

从并发的角度来看,您应用下一个工作流程(即订单)的第一个选项是最安全的。这就是我要做的,因为您不会干扰有状态的对象,并且观察者很清楚发生了什么。

第二个选项需要锁定现有工作流以确保没有任何工作流处于该validate order context状态。并且,如果有的话,编写一个算法来解决将其正确地移出该状态的问题。

最后,您的最后一个选择实际上只是围绕前两个进行安排。因此,它可以合并到任何一个中,并且应该由业务规则(即需求)驱动。

于 2011-01-27T19:07:49.607 回答