BPMN 和 BPEL 与 SOA 的关系

BPMN and BPEL relationship with SOA

我对 BPMN、BPEL 和 SOA 之间的关系有点困惑。

简而言之,我是这样理解的:

BPMN 是流程的图形符号 正在使用 Web 服务。所以 BPMN 以某种顺序组合多个 Web 服务。然后 BPEL 是在 XML(可执行级别)中使用 BPMN 创建的此流程的表示。所以它是多个网络服务的编排。 BPEL 的结果是新服务,我可以在 SOA 中使用它(以及其他服务)

我理解正确吗?如果不是,请尝试尽可能简单地解释它。也许现实生活中的例子会有所帮助

非常感谢

So it is orchestration of multiple web services

Do I understand it correctly?

没有。 BPMN 和 BPEL 都是 notations,用于表示、表示和执行 processes,而不是 web 服务 (!!!)。而且他们在实现和声明方面没有单一的互连

Then BPEL is representation of this process created using BPMN in XML (executable level)

不正确。是的,有一些工具(非常过时)允许从 BPEL 转换为 BPMN,反之亦然,但通常它不是那么简单,主要是手动工作。给出了关于转换 BPMN2BPEL 的 "ease" 的非常好的观点 in Wiki。 BPMN 和 BPMEL 是解决同一问题的两种相互竞争的方法,例如文档的 DOCX 和 ODF 格式,例如 Android 和 iOS 等。您可以选择任一工具,但对于某些任务,某些工具更适合。

The result of BPEL is new service, which I can use in SOA (among with other services)

基本正确。任何 BPEL 方案的结果都是表示流程的 Web 服务,您可以将此服务作为 WSDL 文件获取并推送到任何 WS 工具(SOA 不是工具,它是架构)。

对于 BPMN,这是一项更复杂的任务,它需要 BPMS 引擎,它将 compile/render 您的服务转换为 smth 可执行文件,如 Web 服务或 Web 应用程序。

让我们从高层次开始。 SOA 是一个包罗万象的概念,可以应用于整个企业的技术解决方案。为此,它更像是一种哲学,说明您如何处理您的解决方案以确保遵循某些原则,而与用于实施该解决方案的技术无关。

我使用过多个 BPMN 引擎/套件,并在该工作中遇到过一些 BPEL 解决方案。根据我的经验,BPEL 似乎倾向于编排基于系统的流程,协调多个系统需要交互以实现业务成果的复杂逻辑。 BPMN 也可以做到这一点,但是许多实施更加关注需要系统 和用户 .

协调的业务流程。

请务必注意,BPMN 在流程的实施 部分保持沉默。虽然它旨在捕获进程的 "what",但它没有说明如何实际使图中的项目以指定的方式执行。这表明 "Business Process Modeling Notation" 和 "Business Process Execution Language" 之间存在潜在差异。后者至少意味着包括执行以确保您合规,而前者几乎是一种表达 "This is a notation that can be used to display / understand a business process. Implementation is not part of the specification."

的方式

这很容易变得模糊,因为 BPMN 的实际软件通常被拉向包含实现,或者作为为流程执行做簿记的引擎(例如,当前正在发生的事情,之后的下一步,之前发生的事情) ),如 Camunda,或完整的端到端 BPM 套件,如 IBM BPM(现在是他们 "Digital Process Automation" 套件的一部分)。这些包括流程执行的实现,但这不是 BPMN 标准所要求的。

BPMN 关注业务逻辑片段内的交互,描述为流程和子流程以及它们与用户输入的关系。 通常你会有一个带有一些任务的流程,它们总是遵循流程中描述的流程,有时涉及不同的分叉选项,或事件触发捕获机制。

BPEL:它的主要焦点是基于编排(意思是将所有内容放在一起)不同的外部服务和来源。与一些内部逻辑交互,它也可以使用一些任务供用户交互但不是主要的事情。

通常,BPMN 流程将作为组合中的 WS 提供,与 BPEL 相同。主要区别在于 BPMN 将优先考虑(用户输入、步骤中表示的业务逻辑),而 BPEL 将优先考虑(组织不同的数据源、写入、将信息检索到外部系统等)。在高层次上,您可以将其视为服务 BPMN 使用多个 BPEL 服务与外部系统交互。

因此,通过将所有这些传递给 BPEL 服务,BPMN 流程中不同系统交互的复杂性会降低。制作更易于理解的业务流程工作图。这是一个简单的方法,希望对您有所帮助。最好!

所有这些都是高层次的