用于商业的 XML 格式很混乱,而通用商业语言(Universal Business Language,UBL)就志在统一这个混乱的领域。最近,UBL 背后的小组首次发布了该产品,供公开评审。本文中,Uche Ogbuji 首次对 UBL 作了深入探讨。
正如我在 上一篇专栏文章中提到的那样,通用商业语言(UBL)OASIS 技术委员会在 2001 年 10 月 17 日宣告成立。UBL 是用于商业交易的文档库,它是从中小型组织以及大型组织的角度来设计的。UBL 背后的委员会(UBL TC)对他们的雄心作了极佳的概括:
UBL TC 的目的是,通过修改现有 XML 模式库来开发 XML 商业文档(采购订单和发票等等)的标准库,以合并其它现有 XML 商业库的最佳特性。随后 TC 将设计一种机制,该机制通过将转换规则应用于常见的 UBL 源库,来生成特定于上下文的商业模式。UBL 旨在成为每个人都不必获得特许或支付其它费用就可自由使用的电子交易国际标准。UBL TC 最近生产了首个主要产品:UBL Library Content 0p70,以供公开评审。您可以从其主页下载评审包(请参阅 参考资料)。我鼓励任何对此感兴趣的人仔细研究 UBL,并向 UBL TC 发送任何意见。使用这一产品无须支付版税,而且为了避免与此有关的知识产权障碍已经做了所有努力。能够自由使用这么重要的产品可以产生相当大的公共利益,而且通过改进这一产品,我们都可以获得许多收益。这个发行版中的材料并不是最终形式:其最终形式可望大约在今年年中完成,甚至到那时,完成的也只是最终 UBL 材料的一部分,因此有充足的时间来对它提出意见并对其内容作补充。您可能想回顾本专栏近期的文章,以了解有关 UBL 和相似倡议的大致背景,以及驱动这些倡议的一些核心问题。
UBL 概况
对于 UBL,首先要注意的是它非常大而且内容涉及方方面面。最初的发行版是一个 5.6 MB 的 ZIP 文件,包含可能是最常见的商业表单(而且最可能作为 XML 文档提供):买方和卖方之间从订单到发票的整个贸易过程。特别是,它包含以下交易的规范:
订单 简单及复杂订单回复 取消订单 发送通知(通常称为发货通知) 收据通知 发票一组基本的商业概念构成了上述规范。它们称为 基本商业信息实体(Basic Business Information Entity,BBIE),并用常见的 UBL 模式表示为核心组件类型(Core Component Type,CCT)。除了 BBIE 以外,其它规范定义了它们专门的 商业信息实体(Business Information Entity,BIE),它们形成了 UBL 概念模型,从而将商业概念组织到类及其相关组件中。UBL 概念性模型基于诸如统一建模语言(Unified Modeling Language,UML)和实体/关系(Entity/Relational)建模之类的其它建模系统。实际上,UBL 使用 UML 来提供概念性模型的高级视图。
但是,管理所有实质性详细信息时都使用电子表格。是的。电子表格。它们是一流的用户友好的信息管理典范。UBL TC 发觉电子表格用途最为广泛且易管理,适用于维护概念详细信息。UML 类图从这些电子表格生成而来。电子表格是以 Microsoft Excel 格式提供的,但是我使用 OpenOffice.org打开它们时也没有出现问题。UML 图表是以简单 GIF 形式提供的。
游戏规则
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)这些概念性模型形成了用于相关商业文档的 XML 模式基础。派生这些模式的过程非常严格。UBL TC 成立了一个附属委员会,从事 UBL 命名和设计规则(UBL Naming and Design Rule,NDR)的工作,该附属委员会创建了一个综合文档(有 73 页),包含 UBL XML 组件中的命名和总体设计规则。这些规则的建立确保了包括在 UBL 中的范围很广的 XML 组件的一致性。UBL 命名规则示例:
XML 构造的名称必须使用大小写混合(camel-case)并且第一个字母为大写,以便名称中每个内部单词的第一个字母大写,其后跟着小写字母(示例:AmountContentType)XML 设计规则示例:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)对于每个基于对象类的复杂类型定义,必须定义其内容模型,以便它将对象类的每个特性反映为一个元素声明,它在内容模型内的基数和定位由与语法无关的模型详细信息确定。以上文档片段中的数据类型特性指的是 W3C XML Schemas(WXS)数据类型,而且 WXS 确实被选为 UBL 的标准模式语言。作为辅助格式,这些文档类型(也称为 传送格式(transfer format))用一号抽象语法表示法(Abstract Syntax Notation number One,ASN.1)模式定义。自二十世纪八十年代中期产生以来,ASN.1 一直被使用至今,它是通信协议中用于指定数据格式的 ISO 标准。对 UBL 使用 ASN.1 模式让 UBL 可以使用一大批 ASN.1 工具,而且通过使用 ASN.1 的压缩编码规则(Packed Encoding Rule),该模式还允许有效地进行 UBL 编码,这是很有效的二进制编码,并且因此也非常紧凑。确实,在许多 XML 讨论中,每当论及 XML 的冗长并建议对 XML 进行二进制序列化时,对于这样的情况,贤人智士总是建议映射到 ASN.1。UBL TC 采纳了这个建议。