题
例如,系统通过 check identification
-> validate order context
-> make order
. 。但是系统管理员可以在运行时更改流量,管理员可以跳过“validate order context
”.
我的问题是该系统是否正在处理并发订单请求, 什么时候 系统应该应用流量变化?
a):应用更改,直到下一个新订单请求为止。
b):立即应用更改,无论是否正在处理任何请求。听起来太僵硬了。
c):将更改应用于一定时间,例如,任何更改都将在00:00:00应用。我认为这不是一个好策略。
这种情况的最佳实践是什么?如果我使用JBMP框架来控制工作流,在这种情况下可以使用什么策略?谢谢!
解决方案
您的所有三个选择都是有效的。正确的选择将取决于您要解决的问题。这里有些例子:
- 从下一个新订单开始应用更改。如果您想在新的工作流程中阶段,这是一个不错的选择。您可以将其描述为“通过当前的工作流程完成当前的工作,但所有新工作都将使用新的工作流程”。
- 立即应用更改。如果更重要的是,请使用Extrect工作流程(我的意思是新的工作流程),这是一个不错的选择。一个例子可能是“我们从工作流程中删除了不必要的步骤”。
- 从确切时间开始应用更改。在可以这样描述的情况下,这是一个不错的选择:“今天我们正在使用旧的工作流程,但是明天我们开始使用新的工作流”。
其他提示
从并发的角度来看,使用下一个工作流(IE订单)申请的第一个选项是最安全的选择。 这就是我要做的 因为您不会干扰状态对象,因此对观察者来说很清楚。
第二个选项需要锁定现有的工作流程,以确保在 validate order context
状态。而且,如果有的话,编写算法以正确地将其移出该状态。
最后,您的最后一个选择实际上只是安排前两个。因此,它可以被合并到任何一个,应由业务规则(即要求)驱动。
不隶属于 StackOverflow