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