catalog服务
此inventory服务模型包含catalog服务和inventory lookup服务,作为RAS资产存储在dW RAS存储库中,可以从菜谱对其进行访问。通过菜谱浏览到以下所示的位置,并将Ref Example Asset:SOA Inventory Service model导入到前面创建的Rational Software Architect项目Retail中。可以从菜谱访问catalog服务,如下图中所示:

图7. SOA Inventory Design Model RAS资产
catalog服务将在产品目录中查找商品编号——产品的库存编号(Stock Keeping Unit,SKU)。在模型驱动的开发中,服务是应用了UML 2.0 Profile for Software Services的UML模型类模型。UML 2.0 Profile for Software Services提供了用于描述服务的模型的公共语言。
UML 2.0 Profile for Software Services提供了一种描述服务的公共语言(覆盖了整个开发周期的一系列活动),还可为不同的干系人提供不同的视图。UML Profile for Software Services是UML 2.0的概要,对服务建模、SOA和面向服务的解决方案进行了考虑。该概要已在IBM Rational Sofware Architect中实现,并成功地用于对复杂客户场景进行建模,同时可以帮助人们了解开发面向服务的解决方案时的注意事项(请参阅参考资料)。
我们现在有了一个用于详细地表示如何实际实现服务的模型。通过使用此类模型,可以对应用程序和体系结构模式进行应用,以满足性能、可伸缩性等相关的非功能需求。catalog服务示例使用了WS响应目标模式(请参阅参考资料)和安全模式等模式。可以从catalog服务模型应用从UML到WSDL的转换和从UML到XSD的转换,以创建服务的WSDL和XSD表示形式,从而提供两种不同但相互补充的方法来在不同的抽象级别可视化服务。这些转换不在本文的讨论范围之内,将在下一篇关于WS响应目标模式的文章中进行讨论。
·catalog服务UML模型:catalog服务(参见下文)
·catalog服务规范(WSDL):catalog服务WSDL
catalog服务模型
图8显示了catalog服务模型。该模型包含两个操作:
·getCatalog()操作接受一个主键作为参数,并返回Catalog
·getCatalogs()操作接受一个主键数组为参数,并返回Catalogs数组

图8. Catalog服务UML模型
catalog数据模型
图9显示了catalog消息模型。此模型中包含以下非常明了的事实:
·每个Catalog消息包含多个CatalogItem消息
·每个CatalogItem消息包含多个FeatureValue消息
·每个FeatureValue消息包含一个Feature消息

图9. Catalog消息UML模型
inventory服务
inventory服务提供两个操作。首先是一个查询,确定库存中是否包含足够的商品,以满足订单所需的数量。在零售行业,仓库中的现有商品数量称为现货量(Quantity on Hand,QoH)。第二个操作记录库存水平的变化,此变化是由于商品售出或新进货物引起的:这称为库存动向。此服务也能在两个不同的抽象级别进行可视化,与上面的catalog服务类似。
·inventory服务UML模型:inventory服务
·inventory服务规范(WSDL):
inventory服务模型
图10显示了inventory服务模型。根据上面的服务描述,该模型包含两个操作:
·getQoH()操作接受一个QoHRequest作为参数,并返回QoHResponse
·inventoryMovement()操作接受一个Integer作为参数,并返回Boolean

图10. inventory服务UML模型
inventory数据模型
inventory数据模型允许指定用于指定库存源的位置的请求。这个源可以为商店或地区仓库等。

图11. inventory数据UML模型
标识遗留应用程序
遗留catalog应用程序设计模型
参考示例遗留catalog应用程序设计模型可以从SOA Implementation and Optimization of Service Recipe进行访问,其访问方式与前面导入到Rational Software Architect中的SOA inventory服务模型和SOA inventory用例类似。

图12. 访问遗留catalog应用程序设计模型
图13显示了遗留catalog应用程序的UML类关系图。此应用程序是一个Java?组件,公开了一个Java接口。getCatalog()和getCatalogs()操作是非常粗粒度的操作,因为将分别返回整个目录和目录列表。

图13. 遗留catalog应用程序的UML类关系图
结束语
在本系列的第一篇文章中,我们介绍了如何将Rational Software Architect作为RAS客户机来以菜谱的形式检索可重用资产。本文对此方法进行了扩展,以演示如何使用这些菜谱产生服务,以及可以如何使用模式来构建这些服务,以满足特定的非功能需求。
可以通过采用自顶向下业务分析方法(构建新服务时)或自底向上方法(将SOA用于遗留系统转换时)来标识服务。
为了演示如何在服务构造期间应用模式,我们使用了一个参考服务示例(可作为RAS资产下载):此参考示例以SOA Implementation and Optimization of Services Recipe为基础,提供了使用此菜谱的详细指南。
本系列的下一篇文章将说明如何将WS响应模板模式应用于Catalog服务模型(请参阅参考资料),以得到一个更为灵活的客户机友好接口。
作者简介
Clive Gee是具有近30年IT行业经验的执行顾问。过去三年,他的工作重点是SOA,特别是服务开发流程及其控制的各个方面。
Eoin Lane博士是高级解决方案工程师,负责对主要IBM SOA工作的应用程序开发模式进行收集和制订,并通过IBM模式控制流程对这些模式进行处理,以促进其推广应用。Eoin也是用于帮助SOA开发的模型驱动的开发(Model Driven Development,MDD)、基于资产的开发和可重用资产规范(Reusable Asset Specification,RAS)方面的专家。
原文出处:http://www.ibm.com/developerworks/cn/webservices/ws-soa-reuse2/index.html