如何改变工作流程?

时间:2011-01-21 08:46:03

标签: java workflow jbpm

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

我的问题是系统是否处理并发订单请求,何时系统应该应用流量变化?

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

  • b):无论是否处理任何请求,立即应用更改。这听起来太僵硬了。

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

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

2 个答案:

答案 0 :(得分:1)

您的所有三个选项都有效。正确的选择取决于您正在解决的问题。以下是一些例子:

  1. 从下一个新订单开始应用更改。如果您想要分阶段进行新的工作流程,这是一个不错的选择。您可能会将此描述为“使用当前工作流程完成当前工作,但所有新工作都将使用新工作流程”。
  2. 立即应用更改。如果更重要的是当前工作流程(我的意思是新工作流程)用于所有工作(包括当前和新工作),这是一个很好的选择。其中一个例子可能是“我们从工作流程中删除了不必要的步骤。”
  3. 从证书时间开始应用更改。在可以这样描述的情况下,这是一个很好的选择:“今天我们正在使用旧的工作流程,但明天我们开始使用新的工作流程。”

答案 1 :(得分:1)

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

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

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