首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> 工程管理 >> 正文
使用UML设计XML模式
来源:ChinaItLab 作者:佚名 时间:2007-4-7

  统一建模语言(Unified Modeling Language, UML)是一种业界标准,当以面向对象的方法构建软件系统时,用它来对业务概念建模。就信息和命令的传输方面而言,近来 XML 已经愈发成为实现这些系统的关键因素。XML 模式用于定义和限制被交换 XML 的本质,因此它成为了人们注意的焦点。本文讨论了 UML 在设计 XML 模式方面的用法,并为使用 UML 框架创建 XML 词汇表提供了一种实用的方法。 在将 UML 框架用于构造 XML 模式时,必须考虑三个问题:
 
  • UML 和 XML 模式之间的互补性
  • 如何扩展 UML 以捕获模式提供的全部功能
  • 根据 UML 图设计 XML 模式的能力

  为了有助于在本文中讨论这两种框架,将使用一家虚拟公司:BALTIC Shipping 作为示例。
 
  BALTIC Shipping是一家国际性的运输公司,专门从事美国到东欧的货运业务。该公司希望创建一种机制,用于跟踪从其纽约总部到各分公司(如位于爱沙尼亚塔林(Tallinn)的一个分公司)的装运物情况(请参阅图 1)。当产品起运时,总部通过电子方式以 XML 形式发送关于本次装运物的信息。一旦货物抵达目的地,分公司将以电子方式把确认信息发回给总部。
 
  所有订单和确认数据都以 XML 文档形式交换,必须设计模式来概括文档的结构。用于对装运订单建模的业务构造也用来与库存跟踪系统(Inventory Tracking System)交换信息,库存跟踪系统随时都知道公司现有哪些包装箱要交运。本文讨论了构造 XML 模式时使用 UML 的功效,这些 XML 模式定义了这些以 XML 格式进行数据传输的业务构造。
 
  图 1. BALTIC Shipping 工作流
 


  补充框架

  UML 及其面向对象的建模可以为构建 XML 模式提供补充。您可以方便地用 UML 中的图形符号来表示业务概念,并开始设计您的 XML 模式。
 
  建模的价值有关 UML 在创建 XML 模式时的优点的讨论假定了面向对象建模的价值是已知的。在我上一篇文章“Create flexible and extensible XML schemas”中,我讨论了使用面向对象方法构建 XML 模式的重要性和价值。使用 UML 设计面向对象系统除了具有技术优势之外,UML 还提供了一个公共媒介,业务团队和技术团队可以通过该媒介方便地交流看法。业务分析人员是软件系统(尤其是一个包含特定于领域信息的系统)中的关键协作者。由于业务分析人员参与设计 XML 文档的过程,因此软件架构设计师和业务分析人员之间默契的合作对于项目的成功变得非常重要。UML 的图形符号使得技术人员和非技术人员很容易就诸如 Shipping Order 的定义之类的业务概念达成一致,因此也就加速并促进了项目的完成。
 
  互补设想一下,BALTIC Shipping 的业务经理找到您,请您对一个 XML 模式建模,该模式将对在公司内不同系统之间传输的信息进行形式化。他与您坐下来,一起讨论该领域的业务概念。您可以在纸上绘制一些草图,但 UML 使用图和符号对这些概念建模提供了一种更好的正式方法。
 
  图 2. UML 图



清单 1. ShippingOrder.xsd

<xs:element name="shippingOrder">

<xs:complexType>

<xs:sequence>

<xs:element name="shippingId"type="int"/>

<xs:element name="origin" type="Origin"/>

<xs:element name="destination" type="Destination"/>

<xs:element name="order" type="Order"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

  正如您在清单 1 中可看到的那样,UML 中的 Shipping Order 类由模式中的复杂类型 shippingOrder 表示。正如业务推荐的那样,Shipping Order 由 shippingId、Origin、Destination 和 Order 组成。要说明的一点是,我将 Origin 类型连同其它一些通用类型一起放在了 DataTypes 模式中(请参阅清单 2)。DataTypes 库便于存储诸如 Address 定义之类的可重用类型,整个公司不同项目的 XML 文档中都使用了这些可重用类型。
 
  在 UML 图中(请参阅图 2),Address 是一种抽象类型,单词“Address”用斜体书写以表示它是抽象类型。类型 Origin 和 Destination 从 Address 继承了特征 Name、Street、City 和 Country.为可重用类型创建蓝图被认为是一种好的面向对象设计。在 XML 模式中(请参阅清单 2),我已经通过使用关键字 abstract="true" 将类型 Address 指定为抽象类型。类型 Origin 和 Destination 模仿了我最初在 UML 图中所勾画的设计,这里我使用 extension base="Address" 来表明它们继承了 Address 的特征。此外,我还捕获了这样一个业务模型:通过用代码 type="Item" maxOccurs="unbounded",Order 可以包含许多 Item.清单 2. DataTypes.xsd
         <?xml version="1.0" encoding="UTF-8"?>


<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema


elementFormDefault="qualified"


attributeFormDefault="unqualified">


<xs:complexType name="Address" abstract="true">


<xs:sequence>


<xs:element name="name" type="xs:string"/>


<xs:element name="street" type="xs:string"/>


<xs:element name="city" type="xs:string"/>


<xs:element name="country" type="xs:string"/>


</xs:sequence>


</xs:complexType>


<xs:complexType name="Origin"> 


<xs:complexContent>


<xs:extension base="Address"/>


</xs:complexContent> 


</xs:complexType>   


<xs:complexType name="Destination"> 


<xs:complexContent>    


<xs:extension base="Address"/>


</xs:complexContent>


</xs:complexType>


<xs:complexType name="Order">


<xs:sequence>


<xs:element name="item" type="Item" maxOccurs="unbounded"/>


</xs:sequence>


</xs:complexType>


<xs:complexType name="Item">


<xs:sequence>


<xs:element name="description" type="xs:string"/>


<xs:element name="weight" type="xs:double"/>


<xs:element name="tax" type="xs:double"/>


</xs:sequence>


</xs:complexType>

 

[1] [2] [3] [4] [5] [6] 下一页

【责编:Lili】
中国IT教育热线咨询
相关文章
深入浅出基于Java的责任链模式
深入浅出Java的访问者模式
在Visual C#中使用XML指南之读取XML…
解析UML的静态建模机制
使用模式集成UML视图
解析UML的动态建模机制
UML建模工具比较
XMI与UML合力推动产品开发
详解从UML到BPEL
解析UML的要点与应用
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05