本节向大家介绍一下如何使用UML设计XML模式,主要包括补充框架,建模的价值和补充等内容,希望通过本节的介绍你对使用UML设计XML模式方法有所掌握。
使用UML设计XML模式
统一建模语言(UnifiedModelingLanguage,UML)是一种业界标准,当以面向对象的方法构建软件系统时,用它来对业务概念建模。就信息和命令的传输方面而言,近来XML已经愈发成为实现这些系统的关键因素。XML模式用于定义和限制被交换XML的本质,因此它成为了人们注意的焦点。本文讨论了UML在设计XML模式方面的用法,并为使用UML框架创建XML词汇表提供了一种实用的方法。
在将UML框架用于构造XML模式时,必须考虑三个问题:
◆UML和XML模式之间的互补性
◆如何扩展UML设计以捕获模式提供的全部功能
◆根据UML图设计XML模式的能力
为了有助于在本文中讨论这两种框架,我将使用一家虚拟公司:BALTICShipping作为示例。
BALTICShipping是一家国际性的运输公司,专门从事美国到东欧的货运业务。该公司希望创建一种机制,用于跟踪从其纽约总部到各分公司(如位于爱沙尼亚塔林(Tallinn)的一个分公司)的装运物情况(请参阅图1)。当产品起运时,总部通过电子方式以XML形式发送关于本次装运物的信息。一旦货物抵达目的地,分公司将以电子方式把确认信息发回给总部。
所有订单和确认数据都以XML文档形式交换,必须设计模式来概括文档的结构。用于对装运订单建模的业务构造也用来与库存跟踪系统(InventoryTrackingSystem)交换信息,库存跟踪系统随时都知道公司现有哪些包装箱要交运。本文讨论了构造XML模式时使用UML的功效,这些XML模式定义了这些以XML格式进行数据传输的业务构造。
图1.BALTICShipping工作流
补充框架
UML设计及其面向对象的建模可以为构建XML模式提供补充。您可以方便地用UML中的图形符号来表示业务概念,并开始设计您的XML模式。
建模的价值
有关UML在创建XML模式时的优点的讨论假定了面向对象建模的价值是已知的。在我上一篇文章“CreateflexibleandextensibleXMLschemas”中,我讨论了使用面向对象方法构建XML模式的重要性和价值。使用UML设计面向对象系统除了具有技术优势之外,UML还提供了一个公共媒介,业务团队和技术团队可以通过该媒介方便地交流看法。业务分析人员是软件系统(尤其是一个包含特定于领域信息的系统)中的关键协作者。由于业务分析人员参与设计XML文档的过程,因此软件架构设计师和业务分析人员之间默契的合作对于项目的成功变得非常重要。UML的图形符号使得技术人员和非技术人员很容易就诸如ShippingOrder的定义之类的业务概念达成一致,因此也就加速并促进了项目的完成。
互补
设想一下,BALTICShipping的业务经理找到您,请您对一个XML模式建模,该模式将对在公司内不同系统之间传输的信息进行形式化。他与您坐下来,一起讨论该领域的业务概念。您可以在纸上绘制一些草图,但UML设计使用图和符号对这些概念建模提供了一种更好的正式方法。
图2中的UML图里勾画出了ShippingOrder的业务定义。BALTICShipping将ShippingOrder定义为包含ShippingId、Origin、Destination和Order。无论何时交换有关ShippingOrder的任何数据,它都考虑这些必需的信息。此外,UML图也用来表示组成Origin或Order的内容。所显示的Origin和Destination的类型与类型Address相同,BALTICShipping将具有下列特征的Address:Name、Street、City和Country存储在其数据库中。这些都是业务概念,数据库模型、软件程序以及供经理和业务伙伴们阅读的文档中都用到了它们。这些概念还包括基数(Order可以包含许多Item)、继承(Origin继承Address的全部特征)以及依赖关系(Order依赖于其Item的详细信息);UML图捕获了所有这些关系。由于您希望您的XML文档携带ShippingOrder信息,因此下一步就是设计符合草拟的UML图的XML模式。下面的模式表示UML图(参阅图2)到XML模式的映射。
在UML图中(请参阅图2),Address是一种抽象类型,单词“Address”用斜体书写以表示它是抽象类型。类型Origin和Destination从Address继承了特征Name、Street、City和Country。为可重用类型创建蓝图被认为是一种好的面向对象设计。在XML模式中(请参阅清单2),我已经通过使用关键字abstract="true"将类型Address指定为抽象类型。类型Origin和Destination模仿了我最初在UML设计图中所勾画的设计,这里我使用extensionbase="Address"来表明它们继承了Address的特征。此外,我还捕获了这样一个业务模型:通过用代码type="Item"maxOccurs="unbounded",Order可以包含许多Item。
如果您是从头开始设计XML模式的,那么将很难只使用XML写下对象类型。此外,要想向不熟悉XML模式术语的业务经理解释它们也几乎是不可能的。根据UML图,您可以有效地转换公司的业务概念,然后使用您面前的这一可视化表示创建XML模式。以下是运用您创建的模式为一批从纽约运往塔林的草莓酱生成的实例文档。
【编辑推荐】