IBM® Rational® Software Architect
提供当您为您的软件开发面向服务的体系结构(Service-Oriented Architecture,SOA)时,使用
UML 来对 SOA 解决方案建模的必要工具。本系列四篇文章探究了这一 SOA 转换功能。本文说明了如何利用
IBM® WebSphere® Business Modeler 和 Rational
Software Architect 来将业务过程转换为 SOA 模型。
典型的开发周期从获取和分析商业需求和目的开始。分析工作包括确定出创建满足商业需求的面向服务的体系结构(Service-Oriented
Architecture,SOA)所必需的核心服务。
商业需求的分析任务一般落到业务分析人员身上,他们通常使用 IBM® WebSphere®
Business Modeler 来创建 Business Analysis model(业务分析模型)
(也称为 Service Specification model),并且利用 WebSphere
软件内嵌的分析和模拟功能来精炼、扩展,或优化该模型。该分析阶段的最终产品是定义了核心服务(商业过程)、它们如何交互,以及参与者或其他服务如何调用它们的模型。
您可以在 Jim Amsden 所写的“SOA 建模”(参见
参考资料)系列中的文章“SOA 建模:服务规范”中找到服务规范建模的详细概述。
周期的下一个步骤是将 Business Analysis(业务分析)模型转变为 Design Solution
Architecture (设计解决方案架构)模型。这是一般由软件架构师执行的任务。IBM® Rational®
Software Architect 的 Business Process-to-Service Model
转换特性有助于该转变。
您可以在用 WebSphere Business Modeler Integration 特性配置的
Rational Software Architect 工作平台中使用 WebSphere Business
Analysis 模型工程。当您打开它时,该软件生成一个您可用作业务操作需求建模的基础的业务模型的内存中的
UML 表示。
通过反映业务过程的基于角色的视图,将来自 WebSphere Business Modeler 的 Business
Analysis 模型转变为 UML 表示。换句话说,您可以将业务过程看作是任务所需的角色和过程中涉及的服务之间的协作。您可以将每个所需要的角色看作是为每个任务定义操作及任务所负责的
WebSphere Business Modeler 服务的 UML 接口。图 1 展示了描述如何处理交易中的客户订单的
WebSphere Business Modeler 中的业务过程的一部分。在此视图中,该过程显示了许多泳道,每个泳道表示一个参与过程的特殊角色。
Customer Order Handling 的 WebSphere
Business Modeler 过程的一部分
业务过程的 UML 表示包括代表每个过程的 UML 用例,以及对于参与用例的每个角色的参与者(Actor)。该表示在最高的抽象层次上展示了角色和过程之间的关系,这适用于概括了解业务过程。图
2 展示了 Customer Order Handling 业务过程的用例和参与者(Actor)。
图 2. Customer Order Handling 业务过程的
UML 用例表示
下面的图 3 显示了表示相同过程的 UML 协作,以及其与表示所需的角色和过程的 UML 用例的 UML
接口的关系。在下面的图中,注意,图
1 显示的获取 CRMApplication 角色(举例来说,Determine Requester
Status)的任务已经被转化为 CRMApplication UML Interface 中的操作了(参见
图 3)。
除了用例和协作之外,业务过程的行为方面(换句话说,在任务执行过程中,角色之间如何交互)被表示为协作所拥有的
UML 活动(UML Activity)。就像在前面介绍的角色接口中定义的一样,每个来自原始业务过程的任务都由调用适当操作的
UML Call Operation 行为来表示。任务之间的流,以及控制节点(决策、分叉、合并,等等)也在
UML 活动(UML Activity)中表示。协作展示了哪些角色一起定义过程,而活动(Activity)指定这些角色互相如何交互。活动中的划分表示协作中的角色。该
UML 模型实质上定义了什么是定义了任何实现了业务过程的解决方案模型都必须满足的结构和行为需求的规范。
图 3. 显示了与用例、接口和活动的关系的 Customer Order
Handling 业务过程的 UML 协作
提示:
参见参考资料中
Jim Amsden 所写的 SOA 建模系列中的商业服务建模的文章,更彻底地讨论 WebSphere
Business Modeler Business Analysis 模型的元素和 UML 副本的元素之间的关系。
图 4. Rational Software Architect
中的 WebSphere Business Modeler 模型的 UML 表示
WebSphere Business Modeler 中的模型的 UML 表示被看作由构架的解决方案模型所实现的需求约定。Rational
Software Architect 中的 Business Process-to-Service Model
SOA 转换特性的目的是创建初始、或默认的 SOA 解决方案模型。
要创建并配置这一转换,在 Modeling 透视图(参见图 5)中选择 Modeling >
Transform > Create new configuration 菜单。该转换将接受
WebSphere Business Modeler 中打开的模型为有效的源,并且接受任意的 Eclipse
工程为有效的目标。
图 5. 创建从业务过程到服务模型的转换
图 6 显示了一个单独的 WebSphere Business Modeler 模型和一个目标,该目标可以是您想要将转换所生成的输出放入的任意的
Eclipse 工程或文件夹。
图 6. 指定转换源
转换所生成的 UML 服务模型表示从每个业务过程的分析模型而来的服务分解。您可以在转换 UI 中配置分解的类型,并且将其应用于个别的业务过程。分解的结构依赖于目标领域(实现语言、部署环境,等等)。
每个服务的分解将由扩展生成。虽然转换伴随三个扩展,但是不限于这三个(高层次的 UML,一般的 SCDL
分解,和 Do Not Transform 的空的实现)。转换是可扩展的,并且允许客户创建并添加自定义的扩展。在本文后面部分中我们将详细地观察每个默认的扩展。
当转换生成模型之后,系统或软件架构师可以进一步精炼服务模型,指定更多的实现细节或者创建对于其他服务或遗留库的引用,从而用于复用。
不管是什么具体的分解,转换所生成的构架的解决方案模型(也称为 服务模型,或约定实现模型)保存着规范模型定义的约定信息。它还提供履行约定所需的实现细节。
规范模型中的业务过程是由 UML Collaboration 元素表示的。来自规范模型的 UML Collaboration
元素被转换为构架的解决方案模型中的 UML Component 元素。转换利用为业务过程所需或提供的服务指定接口的端口来填充所生成的组件。
另外,转换在每个组件中生成 CollaborationUse 元素。CollaborationUse
元素维护着一个规范模型中的原始 Collaboration 元素和服务模型中的 Component 元素之间的链接。转换创建组件端口和协作角色之间的
UML 绑定。通过 CollaborationUse 元素建立的端口和角色绑定定义了在服务软件中部分地执行了约定需求中的角色。这使得实现了解决方案及其实现的业务需求之间的可溯性,以及验证解决方案实际地满足
WebSphere Business Modeler 业务模型所表示的业务需求的方法。
考虑图 7 中的实例,哪一个描述了 Customer Order Handling 业务过程和相关的服务模型的约定验证。
图 7. 组合结构图的实例
表示服务的 Customer Order Handling 组件包含了拥有 Collaboration
类型的 CollaborationUse 元素,它指向 WebSphere Business Modeler
中创建的 Business Analysis 模型中定义的 Customer Order Handling
Collaboration 元素。Customer Order Handling Collaboration
角色由组件端口扮演(绑定到组件端口)。如 Business Analysis 模型中所概括的,每个端口指定该业务过程所提供或需要的接口。举例来说:提供到服务(myRole)的接口的端口绑定到
Collaboration 角色上,这表示业务过程本身。表示各种参与者的其他端口(可能是其他服务)绑定到
Collaboration 元素中它们各自的角色上。这些端口(举例来说,PaymentHandling、OrderVerification、CRMApplication,等等)需要接口来与有关的参与者进行通信。所需的和所提供的接口都定义在
WebSphere Business Analysis 模型中,Rational Software Architect
中的服务模型指回那些接口,如表 1 所示。
表 1. 转换映射
规范模型元素 |
转换输出(UML 高层架构模型) |
模型或包 |
转换用相同的名字创建 UML 模型或包,对于内嵌的包,和协作是容器结构。内嵌的包或协作可能还包含
UML 活动。
接口、类,和数据类型,及活动元素不被转换。当必要时,所生成的模型创建与源模型中的这些元素相对应的使用关系。
所生成的模型拥有应用于其中的 <<serviceModel>>
原型。 |
协作 |
转换从 Software Services 概要文件,用 <<serviceProvider>>
原型创建了 UML 组件。所生成的组件与源 Collaboration 元素拥有相同的名称和容器结构。
转换为每个组件创建了 CollaborationUse 元素。
CollaborationUse 元素的类型被设置为源模型中的协作元素。
所生成的组件中的每个端口都通过 CollaborationUse 元素绑定到协作中各自的角色上。要了解转换所创建的端口的详细情况,参见此表中的下一行
Collaboration role::type 。 |
协作角色 |
转换在组件上生成 UML 端口。所生成的端口与源模型中的角色有相同的名字。
通过使用协作使用关系,每个端口绑定到一个角色上。 |
协作 role::type |
如果 role::type 属性指定了与协作元素中实现的相同的接口,那么将
role::type 属性设置为端口所提供的接口。
端口的类型也设置为该接口。
将所有其他的 role::type 属性设置为所需的接口。转换将端口类型设置为与源模型中定义的接口有使用关系的
UML 类。使用关系中的 UML 类的名称与源模型中的接口名称相同,但后缀为 Protocol 。 |
业务过程到服务模型的转换提供对于转换在规范模型中的业务过程的扩展。
如 UML Componet 所表示的(参见图 8),Default Implementation 分解通过将
UML 活动分配为业务过程自身拥有的行为来描述过程的行为。该分解随后可以被 UML-to-SOA 转换所使用,以生成带有
Business Process Execution Language(BPEL)工件的 Services
Component Definition Language(SCDL)模块。
图 8. 使用转换配置为每个业务过程指定分解类型
如图 9 所示,默认的 Implementation 扩展在由业务分析模型克隆来的活动元素描述行为的地方生成分解。
图 9. Default Implementation 扩展
注意:
在您不想要考虑转换的确定过程的情况下选择 Do Not Transform 选项。该扩展仅仅意味着“忽略此过程”。
Skeleton Only 实现将行为转换为结构,为 Services Component Definition
Language 创建了一般的分解(参见图 9)。为了在调用角色分别的参与者(可能是另一个服务)之前执行任意的预处理(举例来说,例如获得代理),它为每个
Collaboration 角色生成内部的组件。像这样的模型可以由 UML-to-SOA 转换用来生成输出,这可以由
IBM® WebSphere® Integration Developer 来部署。
图 10. Skeleton Only 扩展创建的 SCDL 分解
要创建包含了对于其他领域的实现细节的 UML 服务模型,客户可以为 Business Process-to-Service
Model 转换创建并注册自定义的扩展。
本系列中的下一篇文章“向 SOA 的转换:第 2 部分. 为 IBM Rational Software
Architect 中的 Business Process-to-Service Model 转换特性创建定制的扩展”将介绍创建定制的分解的实例(参见目录表上面的
More in this series)。
本文着重于将 WebSphere Business Modeler 工件集成到 Rational Software
Architect 环境中,以及用来创建业务模型和软件分析及设计模型之间的桥梁的工具。第 2 部分向您提供了一个逐步的实例,讲述了为了将业务过程转换为服务模型而创建定制的过程分解的方法。它面向熟悉撰写转换扩展的读者。
学习
获得产品和技术
讨论
|