什么策略可以更新 SOA 中长期运行的流程
在 SOA 实践中,哪些策略可以更好地(或根本有效)更新长时间运行的流程(特别是 Oracle BPEL)?例如,流程可能涉及多个人工步骤,这些步骤本质上是耗时的。 SOA 套件支持在新版本的流程上启动新实例并继续运行流程执行。但是,如果需要更新编排逻辑并将其应用于已经运行的实例该怎么办?假设我们不希望采购订单通过管理层批准,并且希望此更改应用于所有订单,甚至是那些正在执行的订单。
In SOA practice, what strategies work better (or work at all) to update long running processes (in particular for Oracle BPEL)? For example, process may involve several human steps, which by their nature are time consuming. SOA Suites support starting new instances on new version of process and continue of running processes execution. But, what to do if the orchestration logic need to be updated and applied to already running instances? Let assume we do not want purchase orders to pass management approval, and would like this change to be applied to all orders, even those beying executed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无法更改任何正在运行的业务流程。更改只能应用于新流程。这不是技术限制,而是常识。除此之外,它还会混淆审计追踪或监管合规性。
如果您的流程设计有如此灾难性的错误 - “我们忘记包括订单的管理层批准!” “facepalm* - 您所能做的就是关闭服务器并清理任何半完成的进程。但这将是一个非常激烈的步骤。
因此,唯一有效的策略是审查和验收测试。
You cannot change the business process for anything which is in flight. Changes can only be applied to new processes. This is not a technical limitation, it is just common sense. Apart from anything, it would confuse audit trails or regulatory compliance.
If you have so catastrophically mis-designed a process - "we forgot to include management approval for orders!" "facepalm* - all you can do is shut off the server and clean up any half-completed processes. But that would be a really drastic step to take.
So the only strategy which is going to work is review and acceptance testing.