有关SOA参考体系结构的问题

时间:2014-11-16 15:52:46

标签: architecture soa

我对The Open Group for SOA提供的参考架构有些困惑,可以作为企业的一个例子。

问题1:在此参考架构中,有一个服务层,它向外界公开服务。标准文档说明您可以在此服务层中拥有流程服务,该服务层实现了可作为服务访问的某些功能流程。还可以在服务层中具有使用其他服务的组合服务。但是,还有一个业务流程层,据我所知,主要是通过从服务层编排不同的服务来实现业务流程。业务流程层中的业务流程与服务层中的流程服务有何不同?

问题2:是否有任何论据来决定是否应提供使用多种不同服务的组合服务: 1.在服务层中,通过在服务层内使用其他服务的同时为组合服务提供自己的接口? 2.作为业务流程层中的业务流程 3.通过在消费者层中处理它。

1 个答案:

答案 0 :(得分:2)

回答1):

一般而言,业务流程层中的流程与组织中的业务流程紧密对应,而流程服务实现更多“技术”任务组合。

  • 从理想世界的角度来看,业务流程应由业务用户自己通过GUI创建和修改,并由业务分析师提供帮助,而服务层流程则由技术人员实施。
  • 另一个不同之处在于,这些业务流程通常包含手动步骤 - 人们必须手动执行某些操作,做出主观决定或确认/批准流程的延续。
  • 业务流程结合了业务服务,而服务级流程构成了往往连接到多个后端系统的服务,以便完成任务。 示例:执行订单履行业务流程:您可能有一个业务流程,要求客户支持代理在订单发送之前致电客户进行确认 - 这是一个手动步骤,将成为流程的一部分。然后,在开始履行之后,可以启动称为“评估客户忠诚度级别”的服务层级过程。因此,业务流程将执行“满足客户订单”等流程,而更技术性的服务流程将执行“比较此客户的信用评级与商业智能商店中当前中位数相比”的流程 - 因此需要多次调用到多个后端系统。

回答2):

这是一种需要背景的区别,通常需要经验才能做出正确的选择,但这是我的两分钱。

  • 如果您拥有业务流程管理解决方案并且组织使用它,那么请务必在此层中实施任何业务流程。对于最终用户 - 您的业务来说,这更加灵活和易懂。

  • 如果您需要实施必须从多个系统中/在多个系统中收集/修改数据的技术流程,请在服务层上实施。当然,您可以尝试在服务层中实现业务流程(我有时会在实践中看到这一点)。但请记住,与实际业务流程管理解决方案相比,您将拥有一些有限的工具集。您还将在服务层中使用一些业务流程,在业务流程层中使用一些业务流程,这在某些时候拥有真正的BPM时可能不太方便。所以它实际上取决于面向服务架构的成熟度。

  • 一般来说,我会尽量避免在消费者中实施流程。它使您的设计与消费者系统相结合,因此您将无法在未来的某个时间点轻松更换它。此外,业务流程管理层(和服务层)都具有更好的监控,日志记录等方式。话虽如此,在长期维护和问题调查中,并不像消费者应用程序那样痛苦。