我们可以安全地说,如果ESB提供了Orchestration功能,它是否有资格成为BPM的实现?
我理解BPM有不同的目的,即对某些业务流程进行建模,这些业务流程的实现可以通过任何简单的Java / J2EE应用程序,复杂的SOA应用程序或某些应用程序来完成,即我提供BPM。是吗?
答案 0 :(得分:10)
第一个问题:
您的声明仅适用于仅为请求 - 响应交互建模的一些业务流程。
但是当谈到复杂的业务流程时,除了编排功能之外,我们还需要考虑其他一些功能。在这里,我列出了几个这样的场景。
第二个问题:
是。但与您提到的实现机制相比,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模式)