【问题标题】:BPMN and BPEL relationship with SOABPMN 和 BPEL 与 SOA 的关系
【发布时间】:2020-06-13 11:51:50
【问题描述】:
我对 BPMN、BPEL 和 SOA 之间的关系有点困惑。
简而言之,我是这样理解的:
BPMN 是使用 Web 服务的流程的图形符号。所以 BPMN 以某种顺序组合了多个 Web 服务。然后 BPEL 是在 XML(可执行级别)中使用 BPMN 创建的这个流程的表示。所以它是多个 Web 服务的编排。 BPEL 的结果是新服务,我可以在 SOA 中使用它(以及其他服务)
我理解正确吗?如果不是,请尝试尽可能简单地解释它。也许现实生活中的例子会有所帮助
非常感谢
【问题讨论】:
标签:
web-services
soa
business-process-management
【解决方案1】:
让我们从高层开始。 SOA 是一个包罗万象的概念,可以应用于企业的技术解决方案。为此,您如何处理解决方案以确保遵循某些原则,而与用于实施该解决方案的技术无关,这更像是一种哲学。
我使用了几个 BPMN 引擎/套件,并在该工作中遇到了一些 BPEL 解决方案。根据我的经验,BPEL 似乎倾向于编排基于系统的流程,协调多个系统需要交互以实现业务成果的复杂逻辑。 BPMN 也可以做到这一点,但许多实现更加关注需要协调系统和用户的业务流程。
重要的是要注意,BPMN 对流程的实施部分保持沉默。虽然它旨在捕获流程的“什么”,但它没有说明如何实际使图中的项目以指示的方式执行。这表明了“业务流程建模符号”和“业务流程执行语言”之间的根本区别。后者至少意味着包含执行以使您合规,而前者几乎是说“这是一种可用于显示/理解业务流程的符号。实现不是规范的一部分”。
这很容易被混淆,因为 BPMN 的实际软件通常被拉向包含实现,或者作为为流程执行进行簿记的引擎(例如,当前发生的事情、之后发生的事情、之前发生的事情),例如Camunda,或完整的端到端 BPM 套件,如 IBM BPM(现在是他们的“数字流程自动化”套件的一部分)。其中包括流程执行的实现,但这不是 BPMN 标准所要求的。
【解决方案2】:
所以它是多个 Web 服务的编排
我理解正确吗?
没有。 BPMN 和 BPEL 都是notations,用于表示、表示和执行流程,而不是 Web 服务 (!!!)。而且它们在实现和声明方面没有单一的相互联系
那么 BPEL 就是在 XML 中使用 BPMN 创建的这个流程的表示(可执行级别)
不正确。是的,有一些工具(非常过时)允许从 BPEL 转换为 BPMN,反之亦然,但通常不是那么简单,主要是手动工作。 in Wiki 给出了关于转换 BPMN2BPEL 的“简易性”的非常好的观点。
BPMN 和 BPMEL 是解决同一问题的两种相互竞争的方法,例如文档的 DOCX 和 ODF 格式,例如 Android 和 iOS 等。您可以选择任何一种工具,但对于某些任务,某些工具更适合。
BPEL 的结果是新服务,我可以在 SOA 中使用它(以及其他服务)
通常是正确的。任何 BPEL 方案的结果都是代表流程的 Web 服务,您可以将该服务作为 WSDL 文件获取并推送到任何 WS 工具(SOA 不是工具,它是架构)。
使用 BPMN,这是一项更复杂的任务,它需要 BPMS,引擎会将您的服务编译/呈现为诸如 Web 服务或 Web 应用之类的可执行文件。
【解决方案3】:
BPMN 关注业务逻辑片段内的交互,描述为流程和子流程以及它们与用户输入的关系。
通常你会有一个包含一些任务的流程,它们总是会遵循流程中描述的流程,有时涉及不同的分叉选项或事件触发捕获机制。
BPEL :它的主要重点是基于编排(意味着将所有内容放在一起)不同的外部服务、来源。与一些内部逻辑交互,它也可以使用一些任务让用户进行交互,但不是主要的。
通常,BPMN 流程将作为组合中的 WS 提供,与 BPEL 相同。主要区别在于 BPMN 将作为优先级(用户输入、以步骤表示的业务逻辑),BPEL 将作为优先级(组织不同的数据源、写入、向外部系统检索信息等)。概括地说,您可以将其视为一项服务 BPMN 使用多个 BPEL 服务与外部系统进行交互。
因此,通过将所有这些都传递给 BPEL 服务,BPMN 流程中不同系统交互的复杂性降低了。制作更易于理解的业务流程如何工作的图表。这是一个简单的方法,希望它有所帮助。最好的!
所有这些都是高水平的