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