例如,系统按check identification
- >处理客户订单; validate order context
- > make order
。但系统管理员可以在运行时更改流量,管理员可以跳过“validate order context
”。
我的问题是系统是否处理并发订单请求,何时系统应该应用流量变化?
a):将更改应用到下一个新订单请求。
b):无论是否处理任何请求,立即应用更改。这听起来太僵硬了。
c):将更改应用到特定时间,例如,任何更改将在00:00:00应用。我认为这不是一个好策略。
这种情况的最佳做法是什么? 如果我使用jBMP框架来控制工作流程,在这种情况下可以使用什么策略? 谢谢!
答案 0 :(得分:1)
您的所有三个选项都有效。正确的选择取决于您正在解决的问题。以下是一些例子:
答案 1 :(得分:1)
从并发的角度来看,您应用下一个工作流(即订单)的第一个选项是最安全的。 这就是我要做的事情,因为你不会干扰有状态的对象,然后对观察者来说非常清楚发生了什么。
第二个选项需要锁定现有工作流以确保没有一个处于validate order context
状态。并且,如果有的话,写一个算法来解决它正确地将它移出该状态。
最后,你的最后一个选择实际上只是安排前两个。因此,它可以合并到任何一个中,并且应该由业务规则(即需求)驱动。