内容


使用 Rational Software Architect 设计 SOA 服务,第 2 部分

使用 UML Profile for Software Services 设计服务

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用 Rational Software Architect 设计 SOA 服务,第 2 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:使用 Rational Software Architect 设计 SOA 服务,第 2 部分

敬请期待该系列的后续内容。

开始之前

首先,检阅一下您期望从本教程中学习到什么,以及您如何才能最大限度地学到更多的知识。

关于本系列教程

为了从面向服务架构和模型驱动开发获得更大的收益,您的设计和开发环境需要有以下特性:

  • 建模最佳实践:人们应该能够重新使用已被证明的结论来使问题重现,并提供解决方案为其他人所重新利用。
  • 为不同的角色和任务匹配相应的工具:工具应该使完成任务更为容易,并且是适合于执行这个任务的角色的(比如,业务分析师或者IT架构师)。
  • 提供过程支持和指南:开发环境通常会为方法或者过程提供上下文指南。
  • 提供一个可扩展平台:团队应该能够扩展或者自定义环境来满足它们的需求。
  • 允许自动化操作:这个构架的元模型和映射允许模型的半自动转换,从高层次的抽象层转换到低层次的抽象层,最终到可执行的代码。
  • 帮助跟踪抽象:它应当可能由较低层次的抽象层跟踪到较高层次的抽象层。

这些就是 IBM Rational 软件开发平台的所有特性,特别是,IBM Rational Software Architect 工具。在这个系列教程中,您可以学习到在设计面向服务架构(SOA)解决方案时如何利用 Rational 平台和它的能力。

这个教程描述了一个自顶向下的、使用 Rational Software Architect 来建模服务的方法。您将学习到怎样在不同的抽象层来表示服务模型(业务过程、统一建模语言、Web 服务描述语言以及 Java™),以及 Rational Software Architect 是怎样支持从一个抽象层到另一个抽象层的表示和转换的。

作者也讨论了统一建模语言(UML)概要文件对于特定领域语言的用途,比如 SOA。从 SOA 获得的最关键收益是重新利用现有的资产。这篇教程解释了怎样使用现有的模式来处理您的服务需求。在您阅读完这个系列之后,您将能够在 Rational Software Architect 中设计服务以及利用这些能力处理 UML 概要文件、设计模式、可重用资产、转换以及 Web 服务。

关于本教程

在这个系列的第 1 部分中,您已经了解了 Rational Software Architect,以及它是怎样集成您在 SOA 生命周期各个不同的阶段所使用的其它工具的。在这个部分中,您将学习怎样借助 UML 和 UML 2.0 Profile for Software Services,使用 Rational Software Architect 来设计服务。这个教程重点讲述了单个服务的设计而不是交互式服务或者协作服务的设计。

目标

在阅读完这个教程,您将对可视化建模和模型驱动开发(MDD)的价值有更深的理解。您还会明白什么是 UML 概要文件,什么是服务概要文件以及怎么使用它。有了这些知识,您就可以创建一个包含消息、服务规格说明以及服务的服务设计模型。

前提条件

为了从这个教程中获得更全面的收益,如果您对以下这些概念和产品比较熟悉,那将一定会有所帮助,但这些并不是必须的:

  • UML,统一建模语言
  • WSDL,Web 服务描述语言
  • Rational Software Architect 或者 Rational Software Modeler
  • SOA,面向服务架构

查看资源部分, 这个有用的连接可以得到更多关于这个主题的信息。

系统需求

为了完成此教程,您应该安装以下:

  • Rational Software Architect
  • UML 2.0 Profile for Software Services

使用 UML 2.0 Profile for Software Services 进行 SOA 设计

UML profiles 对领域无关的统一建模语言增加了一个简单的扩展机制,它们允许特定领域的定义和规则。UML profiles 与开发过程的配对十分完美。比如,UML Profile for Business Modeling ,它也是支持 IBM Rational 统一过程®(RUP®)的业务建模规程的。

概要文件(Profile) 主要由原型组成。一个原型定义了什么是它所关联的 UML 类(元对象类),这个类的属性,以及这个原型元素与其它元素如何进行关联的约束条件。比如,在 UML 2.0 Profile for Software Services 中,一个 Service Specification 可以扩展接口元对象类。它定义了一个称作 Published 的属性,表明这个 Service Specification 原型是否已经公布在服务注册中心。最后,其中一个约束条件是所有的操作都必须标明 Public。

在 Rational Software Architect 工具中,概要文件有以下特性:

  • 概要文件定义的规则可以被验证。
  • 原型可以附有图形化表示。
  • 概要文件储存在模型中,并带.epx 的文件扩展名。
  • 概要文件有其版本以及版本号。

概要文件介绍

正如在 IBM® developerWorks® 网站上的一篇文章(http://www.ibm.com/developerworks/cn/rational/419_soa/)所描述的,UML 2.0 Profile for Software Services [以后简称 services profile ] 就是一个 UML 概要文件,“用它可以进行服务建模,面向服务(SOA)的建模以及设计面向服务的解决方案。这个概要文件已经可以在 IBM Rational Software Architect 中执行,成功地运用在复杂用户情景的开发模型中,同时可以用来帮助与开发面向服务解决方案相关的人们。”

步骤1:安装 services profile

services profile 被打包成一个 Rational Software Architect 插件,可以在这个网站上免费下载(请看 资源中的"获得产品与技巧"部分.)

从安装插件开始。

  1. 点击 下载连接,保存压缩文件到您的计算机上,然后解压缩到当前地址(比如,C:\sftsvc)。您的新 services profile 地址现在包含一个本地更新地址。您可以更新您的 Rational Software Architect 配置,增加这个 services profile 特性和插件。
  2. 如果您还没有做过这些,启动 Rational Software Architect 工具。
  3. Help 菜单中选择Software Updates > Find and Install ...
  4. 当显示Install/Update向导时,选择Search for new features to install,然后点击Next。(参见 图 1。)
  5. Update sites to visit,点击 New Local Site...,然后浏览您所解压缩的 services profile 的更新地址(将此目录按照您所想要的进行命名,但是这些指导中使用 C:\sftsvc hereafter。)
  6. 然后,在Sites to include in search list下选择C:\sftsvc site,点击Next
图1. 安装向导
install wizard
install wizard
  1. Select features to install 列表下选择 com.ibm.rational.softsvc.feature,然后点击 Next
  2. 选择I accept the terms in the licence agreement ,然后点击Next
  3. Install Location 页面中,点击Add site...。(请看图 2)。
  4. 创建一个新的文件夹(例如,C:\Program Files\IBM\Rational\SDP\6.0\services_profile)。
  5. 确定您最近创建的作为 services profile 特性的安装地址已经被选定,然后点击Finish
图2. 您的新安装站点
new installation site
new installation site
  1. 当 JAR 确认窗口显示出来,点击 Install
  2. 最后,点击Yes ,重新启动工作台。一会以后,这个 Rational Software Architect 屏幕就可以重新显示了。

现在 UML Profile for Software Services 就已经安装在 Rational Software Architect 了。

如何使用 UML Profile for Software Services

这里有好几种使用概要文件的方法:

选择1:使用概要文件所提供的模型模板

有了这个选择,您可以用概要文件的模型模板创建一个新的模型。您的模型是一个由包、可重用元素以及图表预先组装的前端接口,如 图 3所示。

图3. 服务模型模板
service model template
service model template

使用 services profile 模板的优势是它提供了一个含有消息、协作或者服务元素以及图表的独立包的预构建结构。同时,它还提供了由概要文件定义的每个概念(原型)的构建模块,称作可重用设计元素,比如 Service、Provider,或者 Message。另外还包含了有关 services profile 的文档以及如何使用模版的信息。

选择2:创建原型元素,而不使用模版

您也许更喜欢用不同的方法来构建您的模型,或者从一个空白的模型来构建。如果那样的话,您可以考虑第二个选择。

选择这个方法,您创建一个空白的 UML 模型,然后增加您所需要的包、元素和图表。您所创建的元素可以由 services profile 来构造。比如,您可以创建一个新的 Messages,Service Specifications 和 Service 等等。因为例子很简单,您使用本教程中的这个方法,并且当它们被引入时,您会创建服务设计元素。

选择3:将概要文件的原型应用到现有的模型元素中

在有些情况下您可能想要重新使用现有的模型,并在这其中应用面向服务的概念。如果您处于这种情况,可以考虑选择3。

选择了这种方法,您可以将这个概要文件的原型应用到现有的 UML 元素中。比如,您可以在一个类中应用消息原型,这个类从而就代表一个服务消息(一个包含着表示服务提供者和消费者数据的储存库)。当您应用消息原型时,这个类的可视化显示就变为一个消息,并增加一个编码属性。您可以为这个编码属性指定一个值。

注意:
选择2和选择3不是相互排斥的。

定义 UML 设计模型和结构

现在您已经准备好创建一个设计模型的样本了。

创建 Claims Processing Service 设计模型

创建您的设计样本有三个步骤:

  1. 首先,您要输入您在这个系列的第 1 部分创建的项目。
  2. 然后您要创建一个新的设计模型来保存您的服务设计元素。
  3. 最后您将用 services profile 来配置您的模型。

步骤2:导入项目交换

  1. 保存 Part1-Intrchg.zip到您的文件系统中的一个临时地址(比如,C:\temp)。
  2. 在 Rational Software Architect 中,从File 菜单中选择 Import
  3. 选择Project Interchange,然后点击Next
  4. 点击Browse...,指向您文件系统的 Part1-Intrchg.zip文件。
  5. 选择 Select All,然后点击Finish

在这篇文章的接下来的部分,您将在 Rational Software Architect 的建模透视图下进行操作。如果您还没有打开,从菜单中选择Open Perspective > Modeling 。(如果打开了请关闭掉欢迎页面。)

您现在的工作空间应该包括一个称作 ClaimManagementDemoDesign 的项目,带有一个 ClaimManagementDemoDesign WebSphere Business Modeler model 和 一个Claim Management Use Case Model。现在您可以在相同的项目下为您的服务设计创建一个新的UML模型。

步骤3:创建一个新的 UML 模型

  1. 在这个模型浏览器中,选择 ClaimManagementDemoDesign 项目,右键点击,然后选择New > UML Model
  2. New UML Model向导上,确保Templates下的 Blank Model 已被选定。
  3. 输入 Processing Service Design Model 作为文件名,并确保这个类图是在新的模型中创建的,如图 4 所示。
  4. 点击完成
图4. 新建 UML 模型向导
new UML model wizard
new UML model wizard

Model Explorer中, 您现在应该可以在 Claims Processing Design project 项目下看到一个称作Claims Processing Service Design Model.emx的文件。

步骤4:使用 services profile 来配置这个模型

  1. Model Explorer下,双击Claims Processing Service Design Model.emx 文件并打开它。
  2. 然后在它下面选择实际的模型,如图5所示。
图5. Model Explorer 中的 UML 模型
UML model in Model Explorer
UML model in Model Explorer

注意:
正如您所看到的 图 6,您可以将更多的概要文件运用到同一个模型。同时,针对这个模型,Rational Software Architect 在您创建一个新的模型时可以自动应用不同的概要文件。

图6. 应用到一个模型中的概要文件
Profiles applied to model
Profiles applied to model

'

  1. Properties窗口下,选择Profile标签,您可以看到默认应用到UML模型的概要文件。
  2. 增加您的services profile到这个列表中。
  3. 选择Add Profiles... ”,然后选择 Deployed Profile 下的Software Services Profile。

您现在已经准备好创建您服务设计的元素了。

项目结构与关联关系

在这个教程中您所创建的例子十分简单,只有一个基本的包结构:三个包,没有子包。然而,当您设计您自己的服务时,可能为了满足您的需要想构建一个更为复杂的结构,比如一个内嵌包含子包的结构。同时,在同一个模型或者项目中可能没有包含每个设计元素,因此,您也许需要涉及到模型以外的元素。

步骤5. 创建您的项目结构

在这个部分,您将为您的UML模型创建一个结构,它包含以下三个包:

  • Messages
  • Service Specifications
  • Services

然后您连接这些包来展示它们的依赖性。

默认状况下,Rational Software Architect 在每个新的包下创建一个自由形式的图。首先,按照这些步骤来变更参数选择,以确保您在每个新包下面创建了一个类:

  1. 选择Window 菜单下的Preferences
  2. Modeling > Default Diagrams下,将默认图表变更为Class Diagram,如图 7 所示。
  3. 点击Apply
  4. 点击 OK
图7. 默认的图
Default diagram
Default diagram
  1. 通过选择它,并按下F2键,将Main 类图重新命名为Main - Claims Processing Service Design Model
  2. 选择 Claims Processing Service Design Model。右键点击,并选择 Add UML > Package,如图 8所示。
图8. 创建一个新的包
Creating new package
Creating new package
  1. 将这个包命名为Messages
  2. 重新将Main类图命名为 Main - Messages
  3. 类似地,创建两个其它的包,命名为 Service SpecificationsServices,然后分别重新命名它们的 Main 类图为Main - Service SpecificationMain - Services

步骤6:定义您项目中的关联关系

现在您可以在这两个包之间创建一个使用依赖关系

  1. 如果还没打开,就请打开模型的 Main类图。
  2. 将 Model Explorer 中的三个包拖拽到这个图上。
  3. 在 Service Specifications 和 Service Message 之间增加一个关联关系,将您的指针指向Service Specifications,并点击向外的箭头
  4. 现在请将您的指针指向Service Messages,并释放您的鼠标,如 图9所示。
图9. 创建一个使用依赖关系
usage dependency
usage dependency
  1. 用相同的技巧在 Service 和 Service Specification 之间创建一个使用相依关系。
  2. 点击 Save All (或者使用组合键 Ctrl + Shift + s)。

您的图现在看起来应该如图10所示。

图10. 包依赖关系
dependencies

您必须在这些包之间创建使用依赖关系,比如 Service Specifications 包需要 Service Message 包来协助它的实现。这种特殊的依赖性对您度量一个变更的影响是十分方便的。Rational Software Architect 提供的特性可以帮助您实现,根据您所创建的关联关系和其它固有的关系都可以帮助您实现。

您的 Rational Software Architect 下的项目结构现在看起来应该如 图 11所示。

图11. 项目结构
Project structure
Project structure

在紧接着的这个部分中,您将把这些包和服务设计元素组装起来。

完成您的服务设计

在教程的这个部分,您设计的消息将在服务提供者和请求者之间互换。

消息设计

您以在保险领域设计一个消息模型开始,然后您设计的SOA消息应该包含保险模型的元素。

步骤7: 设计保险领域的消息模型

  1. 打开Messages文件夹下面的Main类图(双击Model Explorer)。
  2. 您现在可以创建下面的类:
    • Claim,包含这些属性:item、type、amount 和 location
    • Customer,包含这些属性:firstName、 lastName 和 eMailAddress
    • Policy,包含这些属性:policyNumber 和 deductible

注意:
由于这个教程的原因,所有的属性都必须是String类型,除了Integer类型的 amount deductible 以外。目标不是拥有一个正确的保险领域模型,而是学会如何使用 Rational Software Architect 来设计模型。

  1. 为了从这个图中创建一个类,请将您的指针移到空白(白色的)区域,一直等到这个操作条出现(请看图 12)。
  2. 点击 绿色的 C 图标,然后选择Add a new class
图12. 操作条
Action bar
  1. 给这个类命名为Claim
  2. 将您的指针指向Claim类。这个操作条就可以出现。
  3. 点击Add new attribute (参见 图 13。)
  4. 给这个属性命名。
图13. 创建一个新的属性
new attribute
  1. 确定这个项目属性已经被选定,点击Properties窗口下General标签中的Select Type...
  2. 选择UML2下的String,并点击OK
  3. 用类似的步骤创建 type、 amount 和 location 属性。
  4. 用相同的方式创建CustomerPolicy类以及它们的属性。

您的图现在看起来大概应该如图 14所示。

图14. 保险信息模型
Insurance information model
Insurance information model

您应该为 ClaimPolicy,和Customer类创建一个基本信息模型。下一步,您应该使用这些您为服务消息设计创建的类。

步骤8:设计消息模型

为了进行此练习,假定您正在设计一个记录请求详细情况的服务,并以设计这个操作请求和应答来开始这项工作。

注意:
不是所有的服务都必须有请求和应答消息的。

  1. 仍然在这个 Messages 包的Main类图下,将您的指针移到一个空白区域,等待,然后选择Add a new stereotyped class。这将显示一个所有在您的模型中可以应用到一类的原型的列表,如图图15所。这个 services profile 原型很容易被识别,因为它们都有图。
  2. 选择Create New Message Class(信封图标)。
图15. 创建一个原型类
stereotyped class
stereotyped class
  1. 将这个信息命名为RecordClaimRequest
  2. 现在,确定RecordClaimRequest信息已经被选定,然后点击Properties窗口下的Stereotypes标签(参见图 16)。在那里,您可以看到RecordClaimRequest 是一个类,并有一个原型、一个Message应用在其中。在底部,您可以看到这个原型的属性详细信息。这个 services profile 定义了一个称作encoding的属性,您可以看到它的默认值是document-literal
图16. 消息原型
Message stereotype
Message stereotype

为了达到练习的目的,假定这个消息的请求包括每一个Claim、Policy和 Customer的实例。在这,您将进一步设计RecordClaimRequest类来满足它。

  1. 将您的指针指向RecordClaimRequest消息,将出现两个小箭头,一个向内,一个向外。
  2. 点击向外的箭头图 17),将您的指针指向Policy类,然后释放您的鼠标。这将会出现一个您所创建的关联关系列表。
图17:关联关系
Relationships
  1. 选择Create New Composition Association,如 图 18所示。
图18. 创建一个关联关系
Creating relationship
Creating relationship

您现在应该在图中可以看到一个新的复合关系,使用这个关系您可以直接进行从RecordClaimRequestPolicy 的操作。您还应该看到在 RecordClaimRequest 旁边的黑色菱形图标(复合),它表示这个 RecordClaimRequest 类(消息)包含有 Policy类。在 Policy 旁边的星号表示它是一个为many的多重性。

下一步,您将进行一些变更使一个请求仅仅包含一个政策。

  1. 选择最新创建的连接,确保这个Properties窗口下的General标签已被选定(图 19)。
图19. 关联属性
Association properties
Association properties
  1. Policy(右)侧,使用数字 1(1)代替星号(*)多重性。
  2. 类似的,进一步设计您的请求消息,使其包含Claim 和 Customer 各一个实例。
  3. 假定这个回复消息十分简单,仅仅包含一个要求编号。创建一个新的消息,称作RecordClaimResponse,指定它的属性为claimNumber,类型为Integer

您最后将以设计您的服务消息模型来结束您的工作,它看起来应该如图 20所示。

图20:服务消息模型
Service Message model
Service Message model

您在下一个部分的 Service Specification 中,将会用到您刚刚设计的消息。

服务规格设计

一个服务规格是一个接口,或者一组操作,它描述了服务的交互作用。在这个部分,您将创建两个服务规格:

  • IClaimRecorder
  • IClaimValidator

您这样做实际上创建了新的接口,然后用 services profile 的 Service Specification 将它们原型化。之后,您要在这些接口下面创建新的操作,用您前面所创建的消息来返回类型和参数。

步骤9:创建新的接口

  1. 打开Service Specification包下的Main类图.
  2. palette(右侧),class diagram drawer下面,选择Interface, 然后点击图表中空白区域来创建一个新接口的实例,如 图 21所示.
  3. 给这个接口命名为IClaimRecorder.
图21.创建一个新的接口
new interface

注意:
您同样要用 Message 部分(操作条)中显示的技术来创建一个新的接口.

  1. 确保IClaimRecorder接口已被选定.
  2. Properties窗口的Stereotypes标签下,点击Add Stereotypes....
  3. 然后选择Service Specification点击OK(请看图 22).
图22.增加 Service Specification 原型
Adding Service Specification stereotype
Adding Service Specification stereotype

IClaimRecorder 现在应该用 ServiceSpecification 来原型化,您应该可以看到它看起来已经变成了 Service Specification 显示的图形.

  1. 选择IClaimRecorder,点击Properties窗口的Stereotype 标签。注意这个新的属性称作Published, 它表示 Service Specification 是否已经发布在服务注册表中心或者资产数据库中。

步骤10:创建一个操作

您现在要创建一个操作,称作recordClaimDetails,在IClaimRecorder下面。

  1. 将您的指针指向IClaimRecorder,当它出现时点击Add new Operation 图标,如图 23所示。
  2. 给这个操作命名为recordClaimDetails
图23. 增加新的操作
Adding new operation
  1. 确定operation 已经被选定,点击Properties窗口中General标签下的Set return type
  2. 然后选择Messages package 下的RecordClaimResponse,点击OK
  3. 仍旧在Properties窗口下,选择Parameters 标签,点击右侧的 Insert new parameter 按钮,如图 24所示。
图24. 插入新参数
Insert New Parameter
Insert New Parameter
  1. 在最近创建的参数一行中,选择Type 单元,点击... 按钮来指定类型。
  2. 然后,在Messages package下,选择RecordClaimRequest点击OK
  3. recordClaimRequest 取代默认的Name value
  4. 看看这个图中的这些变化,选择图中的IClaimRecorder,点击右键,然后选择Filter > Show Signature
  5. IClaimRecorder 再看起来应该如图 25所示。
图25. IclaimRecorder
IClaimRecorder
IClaimRecorder
  1. 用类似的方式,在IClaimRecorder Service Specification 下创建另外的操作,称作adjustClaim,带有参数 claim(type Claim)和newAmount(Integer类型),但是没有返回类型。
  2. 最后,完成您的 Service Specification 设计,创建一个新的 Service Specification,称作IClaimValidator,带有操作validate (返回类型:Boolean,一个类型要求参数 Claim)。
  3. 选择Save All

注意:
对于一个真实的服务,您可能还需要为确认Claim操作而设计消息。

这个教程所强调的不是服务粒度或者服务消息的设计,而是如何使用 Rational Software Architect、UML 和 services profile 来设计服务。同样,您需要描述每一个操作是如何处置validateClaim的,例如,它可能是一个非常简单或者十分复杂的操作需要实现,它可能调用其它的服务。

您的 Service Specification 模型现在看起来应该如图 26所示。

图26. Service Specification 模型
Service Specification model
Service Specification model

您现在已经完成了您的 Service Specification 设计。接下来,您将设计服务提供者,它将实现这个规范。如果您需要暂停一会,您可以在您回来的时候回到您现在所在这个教程的位置。

服务设计

现在您要准备设计您在前面部分指定的能够提供服务的元素。您将使用下面的两个原型,它们已在 services profile 中被详细定义,并且被 Web服务描述语言(WSDL)规范所影响:

  • Service Provider:表示“一个提供一个或者多个服务的软件元素。”它认为一个服务提供者就是一个 UML 组件。一个服务提供者必须使用公共端口(称作 Service)来显示其功能。
  • Service:不能与 Service Specification 混淆,一个服务代表一个网络终端或者端口。它的类型由 Service Specification (接口)决定,它由绑定和一个网络地址来定义。

总之,一个服务提供者(组件)就是一个服务(端口)的集合。一个服务支持一个 Service Specification(接口)。如果您了解 Web 服务和 WSDL,您可能早已经熟悉这些术语。

您即将创建的服务提供者原型,称作ClaimProcessor,支持您先前定义的两个Service Specification。首先,创建一个服务提供者的组件。然后您需要用两个接口创建两个服务端口。

步骤11:创建一个服务提供者原型

  1. 打开Service包下的Main类图。

注意:
您可以在任何一个类中使用服务提供者原型。在这个教程中,您在一个组件中使用它。另一个选择是创建一个新的 Service Provider 类。

  1. palette中,打开 Component Diagram 绘图器,然后选择Component下的Stereotyped Component
  2. 点击创建一个新的实例,然后从这个选择列表中选择Create a New ServiceProvider component ,如图 27所示。
图27. 创建一个服务提供者
Creating service provider
Creating service provider
  1. Model Explorer下,选择 ClaimProcessor Service Provider。
  2. 右键点击,然后选择 Add UML > Port,如图 28所示。
  3. 点击Select Existing 绑定,然后选择Service Specification 包下的服务规格。
  4. 点击OK
  5. 将此端口命名为ClaimRecorderService
  6. 注意在这个图中,ClaimProcessor Service Provider 目前在它提供的接口下下显示的是 IclaimRecorder。
图28. 增加一个端口
Adding port
Adding port

步骤12:创建一个服务原型

  1. 确保这个端口已被选定,然后选择Properties窗口中的Stereotypes标签。
  2. 点击 Add Stereotypes... 然后选择Service
  3. 注意ClaimRecorderService 图标在 Model Explorer中已经变化。
  4. 使用相同的技巧,在ClaimProcessor下创建另一个称作ClaimValidatorService的服务,类型为 IClaimValidator
  5. 选择Save All

您的服务模型现在看起来应该如图 29所示。

图29. 服务图
Service diagram
Service diagram

您已经完成了使用 Rational Software Architect、UML 和 UML 2.0 Services Profile for Software Service 进行服务设计的工作。下面回顾一下整个过程:

  1. 首先,您创建了在服务接口将会互换的消息。
  2. 然后,您创建了 Service Specifications 或者接口,以及与它们相关的操作。
  3. 最后,您设计了将会实现这个规范的服务。

总结

您的图现在看起来应该如图 30所示。

图30. 服务设计模型
Service design model

对完成情况的回顾

在这个教程中,您使用 Rational Software Architect 在保险索赔域中设计了一个简单的服务模型。您以一个被认为对开发帮助的服务列表开始,以 UML 的服务设计模型结束。

根据第 1 部分的内容,您们学习了这个这个系列所涵盖的工作流,熟悉了这个教程所使用的不同工具,您了解了 UML profiles 和 UML 2.0 Profile for Software Services (services profile)。您还安装了 services profile,了解了使用是的方法选择。您创建了一个新的服务设计模型和一个简单的包结构。最后,您设计了消息、服务规格和服务。

下面的步骤

当您谈论到服务描述或者规格时,出现在您脑海中的一个东西就是 WSDL。Rational Software Architect 允许您从这个 UML 模型中产生 WSDL 和一个 XML 计划(XSD),接着是一个模型驱动开发的方法,更重要的是,使用了一个转换。

然而,在您做这些事情之前,要确保完成这个 developerWorks 系列的剩下的内容。您将在其中一个部分学习到如何将一个设计模式应用到您的模型中来满足一个需求。在另一个部分,您将明白您是如何将服务设计模型转换到WSDL 和 XSD 的,然后在 WSDL 和 XSD 中产生并测试 Java™ 2 Platform,Enterprise Edition(J2EE™)Web 服务代码。

您已经完成了第2部分,现在作好开始这个教程系列的第3部分:如何在您的设计中使用资产和模式。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational, SOA and web services
ArticleID=226220
ArticleTitle=使用 Rational Software Architect 设计 SOA 服务,第 2 部分: 使用 UML Profile for Software Services 设计服务
publish-date=05242007