转载

集成 BPMN 与 SoaML: 第 3 部分. 映射 BPMN 与 SoaML

简介

本系列的第一篇文章 第 1 部分:集成 BPMN 与 SoaML:动机和方法 ,介绍了集成 BPMN 与 SoaML 的动机。集成标准让建模人员可以使用 BPMN 与 SoaML 的免费功能来建模行为和结构,以便解决更广泛的问题,并支持更多利益相关者的视图。 第 2 部分:集成 BPMN 与 SoaML:引导集成的概念 ,介绍了指导集成的概念,每种语言如何实现封装、合约(或接口)、结构和行为。

这是本系列的最后一篇文章,第 3 部分:映射 BPMN 与 SoaML,使用来自第 2 部分的概念作为用来执行指导实际集成的各标准之间的共同性/变异性分析的基础。这一分析的结果被捕获在一个简单的映射表中,它描述在 SoaML 中的概念和在 BPMN 中的概念之间的一组关系。此映射可用于多种目的,包括跨标准连接相关的、免费的概念。这种映射的具体表现在 IBM Rational Software Architect 中受到支持,它描述了 BPMN 流程模型和 SoaML 服务模型之间的联系,以及这些联系如何解决第 1 部分中介绍的需求。

BPMN 和 SoaML 之间的映射,以及该映射在 Rational Software Architect 中的实现允许您利用集成 BPMN 与 SoaML,以便利用它们的免费功能和视图来获得比单独使用其中任何一个标准更大的价值。

回页首

回顾第 2 部分:引导集成的概念

BPMN 支持流程模型,包括在业务流程中活动的编排、流程之间的协作,以及流程之间的交互的筹划。SoaML 支持服务架构,以及服务架构中的参与者之间的交互的封装,使用服务合约对服务水平协议(SLA)进行建模。本系列的第 2 部分探讨了 SoaML 和 BPMN 对封装、合约、结构和行为等概念的支持,以便了解两种语言之间的异同,并指导它们之间的潜在映射。

所涵盖的概念有:

  • 封装 :对封装元素或组件的一种描述,包括它与其他原型组件的潜在交互。SoaML 使用了 Participant 组件,而 BPMN 使用了 Participant 池。
  • 合约: 组件之间的潜在交互的封装和规范,以及组件应遵守的协议,包括消息交换模式、分组和筹划。SoaML 使用 ServiceContract 和 serviceInterface 定义参与者之间的交互,而 BPMN 使用编排、协作、会话、筹划和简单的服务接口。
  • 结构: 封装组件的内部结构,包括其他组件的组装。SoaML 使用 Participant 的内部结构来指定代表对其他参与者实例的引用的部件之间的服务渠道连接。BPMN 并不区分类型和实例,同时也使用了协作、会话和筹划来描述结构。
  • 行为: 组件的内部行为实现或编排的表示,包括组件如何根据协商一致的合约来使用和/或提供服务。SoaML 可以使用 UML 的任何行为,这些行为包括活动、状态机、交互或不透明的行为,而 BPMN 使用流程来定义行为。

回页首

映射 BPMN 与 SoaML

表 1 总结了 BPMN 和 SoaML 之间的关系。此信息可以用于:

  • 从不同的角度审视它们,以便更好地了解 BPMN 或 SoaML 的概念
  • 指导模型到模型的转换,用于实现 BPMN 与 SoaML 之间的双向转换,以便在支持工具之间交换模型
  • 用一种语言中相关的概念定义了另一种语言中捕获的模型元素之间的关系联系。例如,一个 SoaML 参与者拥有的行为可能会链接到一个 BPMN 流程,该流程描述可能会使用 OSLC 链接完成该行为的实现(参见 open-services.net )。
  • 为希望最好地利用这两种建模语言的流程和服务建模人员提供指导。

该映射的目的是突出 BPMN 和 SoaML 之间的关键集成点,而不是定义详尽映射,后者可能用于两种语言之间的模型互换,没有信息或语义的丢失。这样做的目的是让映射着重于规范之间可能的联动,以显示它们的免费功能,而不是它们的重叠。

还可以定义许多其他映射,使用 BPMN 通道和池所代表意义的不同约定、建模消息交换模式的不同方法、不同的范围和/或不同的详细程度。这种映射的设计由本系列的第 1 部分所解决的需求,以及第 2 部分所介绍的概念驱动。可能需要其他映射来满足不同的要求、目的或需求。

表 1. BPMN 和 SoaML 之间的关系

SoaML 概念 BPMN 概念
ServicesArchitecture 概述筹划
参与者 参与者代表 PartnerEntity(在定义上的协作内,用池表示)
服务端口 池中的一条通道,在一个会话图中表示各参与者之间的会话的一端:上述参与者的接口(连接六边形和池的线)
请求端口 池中的一条通道表示会话的另一端,发送第一条消息的那一端
ServiceInterface 接口(不需要服务协议)或者,会话图中的会话,包括在协作图中相应的消息,以及在筹划图中这些消息的筹划
接口(由 ServiceInterface 实现或使用) 用于定义服务任务操作的接口
操作或接收(接口的) 接口或消息的操作
参数(操作的) 操作的消息输入和输出
活动(或行为) 流程
CallOperationAction (包括目标 InputPin 和参数 Pin) ServiceTask
SendSignalAction SendTask
AcceptCallAction InitialNode
AcceptEvenAction InitialNode
ControlFlow 顺序流
ObjectFlow 数据关联

回页首

现有的工具支持

文章的这一节将探讨现有工具对 SoaML 和 BPMN 之间的集成的支持,需要利用上一节中的映射表中的一些概念。目的是提供一个具体的符号和模型之间的集成示例,并说明这种集成如何提供更多的价值。

IBM® Rational® Software Architect 为 UML 2、SoaML 和 BPMN 提供支持。请参阅由 Gary Johnston 和 Todd Dunnavant 撰写的由五部分组成的文章系列 设计和开发更有效的 SOA 。这些文章描述所支持的 BPMN 和 SoaML 集成,包括:

  • 从 BPMN 链接数据对象到 UML 类型
  • BPMN ServiceTask 可以引用 UML Interface 的操作。
  • 从 SoaML Capability 到 BPMN 流程的可追溯链接,描述如何提供功能
  • UML OpaqueBehavior 和 BPMN 流程之间的链接,作为使用 BPMN 描述 UML 行为的手段
  • UML 模型元素和 BPMN 流程之间的 OSLC 链接,通过 Rational Design Manager 支持链接到其他生命周期工件,包括需求(包括 BPMN 流程草图、用例和屏幕流程)、在项目迭代计划中包含的工作项,以及测试用例

在 Rational Software Architect 中的这些集成功能为本系列的第 1 部分中列出的 BPMN 和 SoaML 集成需求提供支持,本文接下来的部分会进行介绍。

需求 1:识别来自 BPMN 流程的 SoaML 功能(或候选服务)

利用 Rational Software Architect,用户可以创建一个从 SoaML Capability 到 BPMN 流程的可追溯链接,以指示 BPMN 流程实现该功能。Rational Software Architect Design Manager 还支持在 Rational Software Architect 和其他 IBM 流程建模工具中创建 SoaML 功能和 BPMN 流程之间的 OSLC 链接。详细信息参见需求 2。

  • 也可以直接从 BPMN 流程创建一个 SoaML Capability。为此,需要创建一个 SoaML 类或自由形态图
  • 从 BPMN 元素选中调色板项 Services > Capability
  • 浏览 BPMN 模型并在其中选择一个流程(一个 .bpmx 图)

创建新的 SoaML 功能,其中包含对应于 BPMN 流程中所有活动的操作。编辑和删除不适用于此功能的任何操作。创建从 SoaML 功能到实现该功能的 BPMN 流程的 URL 链接。选择功能,右键单击并选择 Navigate > To URL ,打开所链接元素的属性。然后,可以在项目资源管理器中轻松地导航到所链接的 BPMN 流程。类似的步骤可以用于从 BPMN 通道和任务创建 SoaML 功能。

需求 2:使用 SoaML 识别、指定和实现服务。

Rational Software Architect 为 SoaML 提供完整的支持,并为IBM SOMA 方法 提供有限的支持。一个 SoaML Capability 代表由业务组织提供的一种功能,该业务组织可能暴露组织所提供的服务,以便交付可以满足客户需求的价值主张。Capability 可以拥有描述应该如何提供功能的行为。您可以使用 UML OpaqueBehavior 来描述应该如何用简单的文本提供功能。不透明的行为也可以链接到对应该如何实现功能进行建模的 BPMN 流程。

链接的实现可以使用从 UML 不透明行为到建模人员的工作区中的 BPMN 流程的 URL 链接,也可以通过 Rational Software Architect Design Manager 使用 OSLC 链接,如图 1 所示。

图 1. 将 Capability 链接到 BPMN 流程

集成 BPMN 与            SoaML: 第 3 部分. 映射 BPMN 与 SoaML

这些链接允许 BPMN 流程创建或链接到代表候选服务的 SoaML 功能。然后,可以将 Capability 链接到向潜在客户实现和暴露功能的 Participants 和 ServiceInterfaces。其结果是,SoaML 可用于全面实现 BPMN 流程中已识别的服务。

需求 3:BPMN Service Task 可以调用 SoaML 操作。

Rational Software Architect BPMN 编辑器允许将 BPMN Service Task 的 Operation 链接到在 SoaML 服务接口中的 UML 操作。在这种情况下,通道应识别包含操作的接口。

在图 2 所示的例子中,在 Invoicing 通道中的 Initiate Price Calculations 服务任务被链接到 SoaML Invoicing 服务接口的 InitiatePriceCalculation。

图 2.Initiate Price Calculations 服务任务

集成 BPMN 与            SoaML: 第 3 部分. 映射 BPMN 与 SoaML

需求 4:使用 BPMN 流程实现由 Participant 提供的一个 SoaML 服务操作。

类似于将 SoaML 功能链接到 BPMN 流程,Rational Software Architect 支持创建 UML 不透明行为和 BPMN 流程之间的 URL 链接。这可以用来表明该行为是使用 BPMN 实现的。Rational Software Architect Design Manager 还支持创建 Participant 和 BPMN 流程之间的 OSLC 链接,以及 BPMN 流程对 SoaML 服务操作的 OSLC 链接。这可以用来指示 BPMN 流程是实现参与者所提供的操作的方法。

在这种情况下,BPMN 流程包含一个表示 SoaML Participant 的池,而通道代表服务和请求端口。这些联系不是直接受支持的,但是,如果用一致的命名约定指示在不同模型元素之间的关系,就可以直接支持这些联系。

需求 5:在 BPMN 与 SoaML 之间共享信息规范(类、数据类型和消息)。

Rational Software Architect 能够定义数据项定义的结构,后者可以对 BPMN 消息、数据对象或数据存储的内容进行建模。要创建链接,需要在 BPMN 图上选中一个 消息数据对象数据存储 ,然后选中 Properties 视图中的 General 选项卡。展开 Item subject property ,单击 Structure 右边的 搜索按钮 (看起来像手电筒的图标)。导航到定义工作项主题的 UML 类。工作项定义和数据存储之间创建了一个 URL 链接,如图 4 所示。

图 3. UML 类描述的 BPMN 数据存储

集成 BPMN 与            SoaML: 第 3 部分. 映射 BPMN 与 SoaML

需求 6:使用 SoaML 定义 BPMN 中可响应业务事件的数据对象的生命周期

一个 BPMN 中介可以捕获由信号触发的事件,可以将该事件连接到一个用活动生命周期表示 UML 类的数据对象。可以将信号的 Structure 属性设置为一个工作项定义,该定义链接到相应的 UML Signal。然后,可以在一个状态机中使用该信号,状态机是活动类的一个自有行为,用于指示实例如何在对事件的响应中改变其状态。图 5 显示,接收到信号的装运请求被连接到 Schedule Data Store,并由 Schedule Requested 信号定义。

图 4. 发送到数据存储的 BPMN 信号

集成 BPMN 与            SoaML: 第 3 部分. 映射 BPMN 与 SoaML

回页首

结束语

BPMN 和 SoaML 是 OMG 采用的两项最新标准。尽管这些标准之间存在明显的重叠,但每项标准都有特定的关注点。BPMN 专注于流程模型,从业务流程中的活动的简单编排入手,可以通过扩展来支持流程之间的协作,然后通过再次扩展来支持流程之间的交互的筹划。SoaML 侧重于服务架构中的参与者之间的交互的封装,使用服务合约对服务水平协议(SLA)进行建模。此 developerWorks 文章系统探讨了如何在相同或相关的项目上(单独或结合)使用这两种建模语言,以及如何充分利用它们独特的、免费的特性做到这一点,同时避免因它们的重叠而导致的冗余。

正文到此结束
Loading...