我们可以肯定地说,如果 ESB 提供了编排功能,那么它就有资格成为 BPM 的实现吗?
我知道 BPM 有一个不同的目的,那就是对一些业务流程进行建模,这些业务流程的实现可以由任何简单的 Java/J2EE 应用程序、复杂的 SOA 应用程序或一些说我提供 BPM 的应用程序来完成。是对的吗?
我们可以肯定地说,如果 ESB 提供了编排功能,那么它就有资格成为 BPM 的实现吗?
我知道 BPM 有一个不同的目的,那就是对一些业务流程进行建模,这些业务流程的实现可以由任何简单的 Java/J2EE 应用程序、复杂的 SOA 应用程序或一些说我提供 BPM 的应用程序来完成。是对的吗?
第一个问题:
您的陈述对于仅对请求-响应交互进行建模的某些业务流程是有效的。
但是当涉及到复杂的业务流程时,我们需要考虑除编排功能之外的其他一些功能。在这里,我列出了一些这样的场景。
第二个问题:
是的。但是与您提到的实现机制相比,BPM 引擎有几个优点。
一个优点是,不可能从 Java 应用程序实现 BPM 引擎提供的建模抽象级别。假设我们使用 JAVA 应用程序来实现业务流程逻辑并且该业务流程投入生产。假设我们需要更改其合作伙伴服务的端点 URL。在这种情况下,现在需要修改、重新编译并部署回生产系统中的业务流程实现。如果我们使用像WS-BPEL这样的业务流程语言标准来实现业务流程,我们可以非常轻松地更改业务流程配置并将其推回生产环境。这提高了效率,降低了业务维护成本。还有其他原因,例如易于适应和灵活性。
我前段时间创建了这些幻灯片,以准确解释如何同时使用它们以及它们之间的关系: http ://www.slideshare.net/salaboy/jbpm5-community-training-module-25-bpm-for-开发商
您需要了解 BPEL/ESB/Orchestration 和 BPMN(面向业务)之间的不同视角,它们具有非常不同的范围。
干杯
通常,ESB 被分配给中间层——将低级服务编排成更大的服务单元,这些服务单元将暴露给业务以用于流程——而 BPM 则在顶层。
因此,BPM 将用于业务流程编排层,而 ESB 将通过在业务服务和服务支持中工作来实现和促进这一点。
换句话说,要在业务流程上取得成功,首先您需要将所有系统和应用程序公开为服务;这就是 ESB 发挥作用的地方。
你可以看到这个链接:http: //blogs.mulesoft.org/why-bpm-and-esb-need-to-work-together/
让我通过设计模式和规范来区分 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 是一种完全不同的动物。它应该用于异步流程,而不是同步流程,并依赖于一组不同的设计模式(即服务代理、异步队列、中间路由和内容丰富模式)