用於商業的 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 形式提供的。
游戲規則
這些概念性模型形成了用於相關商業文檔的 XML 模式基礎。派生這些模式的過程非常嚴格。UBL TC 成立了一個附屬委員會,從事 UBL 命名和設計規則(UBL Naming and Design Rule,NDR)的工作,該附屬委員會創建了一個綜合文檔(有 73 頁),包含 UBL XML 組件中的命名和總體設計規則。這些規則的建立確保了包括在 UBL 中的范圍很廣的 XML 組件的一致性。UBL 命名規則示例:
XML 構造的名稱必須使用大小寫混合(camel-case)並且第一個字母為大寫,以便名稱中每個內部單詞的第一個字母大寫,其後跟著小寫字母(示例:AmountContentType)……XML 設計規則示例:
以上文檔片段中的數據類型特性指的是 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 采納了這個建議。
商業文檔外觀
公開評審包還提供了由 Crane Softwrights Ltd. 開發的一套 XSL 樣式表,用於將 UBL 文檔轉換成用戶友好的 Html 或 PDF(通過使用 XSL-FO)。其結果看上去就象卡車司機可能會使用的某種文檔,他向安全保衛出示該文檔,以獲准進入碼頭並卸下貨物。這個樣式表包還包含了樣本 XML UBL 文檔(在“test”子目錄中)。 清單 1 摘自其中的一個文檔,它是訂單(Order)交易示例。
清單 1. 樣本 UBL 訂單交易文檔
<po:Order XMLns:po="urn:oasis:names:tc:ubl:Order:1.0:0.70"
XMLns="urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70">
<ID>4500004875</ID>
<IssueDate>2001-12-17</IssueDate>
<!-- Cut to the buyer info -->
<BuyerParty>
<ID>R300</ID>
<PartyName>
<Name>IDES Retail INC US</Name>
</PartyName>
<Address>
<ID></ID>
<Street>West Chester Pike</Street>
<CityName>Parsippany</CityName>
<CountrySub-EntityCode listID="3166-2" listAgencyID="ISO">NY</CountrySub-EntityCode>
<Country>
<Code listID="3166-1" listAgencyID="ISO">US</Code>
</Country>
</Address>
<BuyerContact>
<ID></ID>
<Name>Joe Bloggs</Name>
</BuyerContact>
</BuyerParty>
<!-- Cut to the order line -->
<OrderLine>
<BuyersID></BuyersID>
<Quantity unitCode="unit">10</Quantity>
<Item>
<ID>R100016</ID>
<Description>Tuner X300</Description>
<BasePrice>
<PriceAmount currencyID="USD">350</PriceAmount>
</BasePrice>
</Item>
<!-- Cut to end -->
</OrderLine>
</po:Order>
UBL 在很大程度上依賴概念標識和標准化的詞匯表。交易文檔都有唯一的數字標識,而且所有 BIE 都可以有相關標識。 Country/Code 元素演示了如何引用標准詞匯表:ISO 3166,國際國家代碼標准(International Country Code Standard)。但是,大體上您可以看到 XML 格式還是相當簡單的。
結束語
這是我在本專欄中最後一次討論 UBL,我不知道它是否會成為幫助統一用於商業的 XML 詞匯表這一混亂領域的 “救世主”。UBL 當然極有可能成為主導格式。它定義得相當嚴格、適當利用了其它成果,而且由於它無須支付版稅,因此鼓勵人們廣泛采用它並提供改進。當許多其它這樣的系統似乎已停止開發時,人們還在積極地開發著 UBL。
另一方面,為了將 UBL 擴展到商業中使用的所有不同種類的交易,還有大量工作需要完成。例如,EDI 的 ANSI X12 和 UN/EDIFACT 中的每個都定義了 300 多個 交易集,UBL 必須能先使用這其中的許多交易集,之後某些行業才有可能正式開始使用 UBL。當然,這些詞匯表存在大量重復,可以使用 UBL 的綜合核心模型和可展開性來管理它們,但是毫無疑問,要實現 UBL TC 的雄心壯志,還有大量工作要完成。然而,UBL 還是提供了許多有用產品,一旦今年年中完成 UBL,那麼這些產品將會立即投入使用,這些產品包括:
希望您能夠進行更深入的研究,並分享您對 UBL TC 的想法。