BPM与ESB - 业务流程?

时间:2012-04-11 14:52:31

标签: soa esb bpm orchestration eai

我们可以安全地说,如果ESB提供了Orchestration功能,它是否有资格成为BPM的实现?

我理解BPM有不同的目的,即对某些业务流程进行建模,这些业务流程的实现可以通过任何简单的Java / J2EE应用程序,复杂的SOA应用程序或某些应用程序来完成,即我提供BPM。是吗?

4 个答案:

答案 0 :(得分:10)

第一个问题:

您的声明仅适用于仅为请求 - 响应交互建模的一些业务流程。

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

  1. 让我们采取一个需要长期维持其状态的业务流程。我们通常将它们称为有状态或长期运行的业务流程。为了支持这些业务流程,应该有一个状态持久性机制。此功能与业务流程功能无关。
  2. 考虑一个需要一些补偿功能的业务流程。在这种情况下,某些业务流程建模标准(如WS-BPEL)已定义其compensation mechanisms。因此,除了编排功能外,还需要考虑其他一些功能。
  3. 第二个问题:

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

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

答案 1 :(得分:7)

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

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

干杯

答案 2 :(得分:4)

通常情况下,ESB被分配到中间层 - 将低级服务编排成更大的服务单元,这些服务单元将暴露给业务以用于流程 - 以及顶层的BPM。

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

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

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

答案 3 :(得分:-2)

让我通过设计模式和规范区分BPM,Orchestration和ESB来增加清晰度。

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

2之间的主要实际区别是Orchestration中间件(例如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 Tools都没有。

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

实际上,BPM和Orchestration工具都支持业务流程的图形表示。区别在于,业务流程可以通过供应商 - 中立 BPEL(业务流程执行语言)表示,而BPM通过供应商特定 BPMN(业务流程建模表示法)表示。这是在SOA /企业级避免使用BPM工具的另一个原因。

在BPM工具实现Ws *规范的情况下,它是一个用于所有实际目的的编排引擎。区别在于BPM工具依赖于供应商特定的BPMN和Orchestration工具依赖于供应商 - 中性BPEL。

如果BPM和Orchestration都需要共存,请将BPM限制为应用程序架构(例如MVC样式),并让Orchestration促进企业资产的共享。

ESB是一种完全不同的动物。它应该用于异步而不是同步进程,并依赖于一组不同的设计模式(即Service Broker,Asynchronous Queuing,Intermediate Routing和Content Enricher模式)