BPM 与 ESB - 编排?

Posted

技术标签:

【中文标题】BPM 与 ESB - 编排?【英文标题】:BPM vs ESB - Orchestration? 【发布时间】:2012-04-23 21:46:19 【问题描述】:

我们可以肯定地说,如果 ESB 提供了编排功能,那么它就有资格成为 BPM 的实现吗?

我了解 BPM 有一个不同的目的,即对一些业务流程进行建模,并且这些业务流程的实现可以由任何简单的 Java/J2EE 应用程序、复杂的 SOA 应用程序或某些声称我提供 BPM 的应用程序来完成。对吗?

【问题讨论】:

【参考方案1】:

第一个问题:

您的陈述适用于仅对请求-响应交互进行建模的某些业务流程。

但是当涉及到复杂的业务流程时,我们需要考虑除编排功能之外的其他一些功能。这里我列出了几个这样的场景。

    让我们来看一个需要长时间保持其状态的业务流程。我们通常称它们为有状态或长期运行的业务流程。为了支持这类业务流程,应该有一个状态持久化机制。此功能与编排功能无关。 考虑一个需要一些补偿能力的业务流程。在这种情况下,一些业务流程建模标准(如 WS-BPEL)已经定义了它的compensation mechanisms。因此,除了编排功能之外,还有一些其他功能需要考虑。

第二个问题:

是的。但是与您提到的实现机制相比,BPM 引擎有几个优点。

一个优点是,无法从 Java 应用程序实现 BPM 引擎提供的建模抽象级别。假设我们使用 JAVA 应用程序来实现业务流程逻辑并且该业务流程投入生产。假设我们需要更改其合作伙伴服务的端点 URL。在这种情况下,现在需要修改、重新编译并部署回生产系统中的业务流程实现。如果我们使用像WS-BPEL 这样的业务流程语言标准来实现业务流程,我们可以非常轻松地更改业务流程配置并将其推送回生产环境。这提高了效率,降低了业务维护成本。 还有其他原因,例如易于适应和灵活性。

【讨论】:

完美答案!感谢您的解释。 (***.com/questions/345749/…) 这个问题也很相似,已经回答得很漂亮了。【参考方案2】:

我前段时间制作了这些幻灯片,以准确解释如何同时使用它们以及它们之间的关系: http://www.slideshare.net/salaboy/jbpm5-community-training-module-25-bpm-for-developers

您需要了解 BPEL/ESB/Orchestration 和 BPMN(面向业务)之间的不同视角,它们具有非常不同的范围。

干杯

【讨论】:

这似乎是一个很棒的演示。我想给演示文稿 +20,不确定这是否可能。 我对演示文稿有几个问题,例如我认为我们可以有把握地说“一个工作流可以表示为 / 是一个过程”。从介绍来看,这似乎是不正确的。需要原因/差异。我可以就类似问题进行讨论/聊天/邮件交流吗? 可以将业务流程视为更高级别的业务相关表示。如果您是技术人员,您需要尽量不要将其与可用于技术目的的状态机混淆,这与业务人员无关。如果您愿意,可以向我的博客写问题:salaboy.com【参考方案3】:

通常将 ESB 分配给中间层——将低级服务编排成更大的服务单元,这些服务单元将公开给业务以用于流程——而 BPM 则在顶层。

因此 BPM 将用于业务流程编排层,而 ESB 将通过在业务服务和服务支持中工作来实现和促进这一点。

换句话说,要在业务流程上取得成功,首先您需要将所有系统和应用程序公开为服务;这就是 ESB 发挥作用的地方。

你可以看到这个链接:http://blogs.mulesoft.org/why-bpm-and-esb-need-to-work-together/

【讨论】:

【参考方案4】:

让我通过设计模式和规范来区分 BPM、Orchestration 和 ESB,从而更加清晰。

一般而言,“编排”已被定义为采用流程抽象、流程集中化和状态存储库设计模式的复合模式。凭借状态存储库模式的实现,与之前的帖子相反,Orchestration 支持长时间运行的同步业务流程,就像 BPM 一样。

两者之间的主要实际区别是编排中间件(例如 WebSphere Process Server、BizTalk、Oracle BPEL Manager 和 Windows Workflow Foundation)支持大多数 WS * 规范。这包括 Ws BPEL、Ws Security、Ws Atomic Transaction、Ws Business Activity、Ws Reliable Messaging 等,而大多数 BPM 工具没有。

因此,您可以随意在企业级使用编排,但在该范围内使用 BPM 时要非常小心。

在实践中,BPM 和编排工具都支持业务流程的图形表示。区别在于编排可以通过Vendor-Neutral BPEL(业务流程执行语言)来表达,而BPM 可以通过Vendor Specific BPMN(业务流程建模符号)来表达。这是在 SOA/企业级避免使用 BPM 工具的另一个原因。

在 BPM 工具实现 Ws * 规范的情况下,它是一个用于所有实际目的的编排引擎。区别在于 BPM 工具依赖于 Vendor-Specific BPMN,而编排工具依赖于 Vendor-Neutral BPEL。

在 BPM 和 Orchestration 需要共存的情况下,将 BPM 限制在应用架构(例如 MVC 风格)中,让 Orchestration 促进企业资产的共享。

ESB 是一种完全不同的动物。它应该用于异步流程,而不是同步流程,并依赖于一组不同的设计模式(即服务代理、异步队列、中间路由和内容丰富模式)

【讨论】:

以上是关于BPM 与 ESB - 编排?的主要内容,如果未能解决你的问题,请参考以下文章

编排是 ESB 的责任吗?

编排引擎的工作原理[关闭]

在使用WSO2编排服务时是否有特定的指导原则?

JBPM学习第1篇:入门与安装

Spring Cloud介绍: Spring Cloud与Dubbo对比

微服务架构中的编排与编排[关闭]