我对The Open Group for SOA提供的参考架构有些困惑,可以作为企业的一个例子。
问题1:在此参考架构中,有一个服务层,它向外界公开服务。标准文档说明您可以在此服务层中拥有流程服务,该服务层实现了可作为服务访问的某些功能流程。还可以在服务层中具有使用其他服务的组合服务。但是,还有一个业务流程层,据我所知,主要是通过从服务层编排不同的服务来实现业务流程。业务流程层中的业务流程与服务层中的流程服务有何不同?
问题2:是否有任何论据来决定是否应提供使用多种不同服务的组合服务: 1.在服务层中,通过在服务层内使用其他服务的同时为组合服务提供自己的接口? 2.作为业务流程层中的业务流程 3.通过在消费者层中处理它。
答案 0 :(得分:2)
回答1):
一般而言,业务流程层中的流程与组织中的业务流程紧密对应,而流程服务实现更多“技术”任务组合。
回答2):
这是一种需要背景的区别,通常需要经验才能做出正确的选择,但这是我的两分钱。
如果您拥有业务流程管理解决方案并且组织使用它,那么请务必在此层中实施任何业务流程。对于最终用户 - 您的业务来说,这更加灵活和易懂。
如果您需要实施必须从多个系统中/在多个系统中收集/修改数据的技术流程,请在服务层上实施。当然,您可以尝试在服务层中实现业务流程(我有时会在实践中看到这一点)。但请记住,与实际业务流程管理解决方案相比,您将拥有一些有限的工具集。您还将在服务层中使用一些业务流程,在业务流程层中使用一些业务流程,这在某些时候拥有真正的BPM时可能不太方便。所以它实际上取决于面向服务架构的成熟度。
一般来说,我会尽量避免在消费者中实施流程。它使您的设计与消费者系统相结合,因此您将无法在未来的某个时间点轻松更换它。此外,业务流程管理层(和服务层)都具有更好的监控,日志记录等方式。话虽如此,在长期维护和问题调查中,并不像消费者应用程序那样痛苦。