xml描述uml_使用UML设计XML模式

本文探讨了在构造XML模式时使用UML的优势,通过BALTIC Shipping的案例展示如何用UML图形表示法设计XML模式,强调了UML在业务和技术团队交流中的价值,并讨论了如何从UML模型生成XML模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml描述uml

使用UML框架构造XML模式时,必须考虑三个问题:

  • UML和XML模式之间的互补
  • 如何扩展UML以捕获模式提供的所有功能
  • 从UML图设计XML模式的能力

为了在这种情况下帮助讨论这两个框架,我将使用一个虚拟公司的示例:BALTIC Shipping。

BALTIC Shipping是一家国际运输公司,专门从事从美国到东欧的运输。 它寻求建立一种机制来跟踪从纽约总部到其地区办事处(例如爱沙尼亚塔林的办事处)的货运( 见图1 )。 装运产品后,总部将以XML形式以电子方式发送有关装运的信息。 货物到达目的地后,确认信息将以电子方式发送回总部。

所有定单和确认数据都在XML文档中交换,并且必须设计纲要来概述文档的结构。 用于对运输订单进行建模的业务结构还用于与库存跟踪系统交换信息,该系统可以随时了解公司为交付而持有的包裹。 本文讨论了在构造XML模式时使用UML的功效,这些XML模式定义了这些用于XML数据传输的业务结构。

图1. BALTIC Shipping工作流程
波罗的海运输工作流程

补充框架

UML及其面向对象的建模可以与构建XML模式互补。 您可以用UML中的图形表示法轻松表示业务概念,然后开始设计XML模式。

建模的价值

关于在创建XML模式时使用UML的优势的讨论假定假定了面向对象建模的价值。 在我的上一篇文章“创建灵活和可扩展的XML模式”中,我讨论了使用面向对象方法构建XML模式的重要性和价值。 除了使用UML设计面向对象系统的技术优势之外,UML还提供了一种通用的媒体,业务和技术团队可以在其中轻松交流思想。 业务分析师是软件系统中的关键协作者,尤其是其中包含特定领域信息的协作者。 由于业务分析师参与XML文档的设计过程,因此软件架构师和业务分析师可以轻松协作对于成功完成项目至关重要。 UML的图形表示法使技术人员和非技术人员都可以轻松地就业务概念(例如装运单的定义)达成一致,从而加快并促进了项目的完成。

互补性

想象一下,BALTIC Shipping的业务经理来找您,并要求您对XML模式进行建模,该XML模式将使公司中不同系统之间传输的信息形式化。 他与您坐下来讨论该域的业务概念。 您可以在纸上画一些粗略的草图,但是UML提供了一种更好的形式化方法,可以用图表和符号对这些概念建模。

图2. UML图
UML图

图2的UML图中,概述了装运单的业务定义。 波罗的海航运公司将运输订单定义为由ShippingId原点目的地订单组成 。 每当交换有关装运单的任何数据时,它都会考虑该命令性信息。 另外,UML图用于表示构成原点或订单的内容。 显示的起点和目的地类型与地址类型相同,并且BALTIC Shipping在其数据库中存储具有以下特征的地址:名称,街道,城市和国家/地区。 这些是业务概念,已在数据库模型,软件程序以及经理和业务合作伙伴读取的文档中使用。 这些概念还包括基数(一个Order可以包含许多Item),继承(Origin继承一个Address的所有特征)和依赖关系(Order取决于其Items的详细信息); 所有这些关系都由UML图捕获。 由于您希望XML文档中包含装运单信息,因此下一步是设计符合草绘的UML图的XML模式。 以下模式表示UML图(参见图2 )到XML模式的映射。

清单1. ShippingOrder.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" 
    attributeFormDefault="unqualified">
      <xs:include schemaLocation="DataTypes.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表示。 根据业务建议,运输订单由shippingIdOriginDestinationOrder 。 要注意的一件事是,我将Origin类型和其他泛型类型放在了DataTypes模式中(参见清单2 )。 DataTypes库便于存储可重用的类型,例如地址的定义,这些类型在整个公司的XML文档中用于不同项目。

在UML图(请参见图2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值