Web services along with XML have allowed many an organization to establish tight information technology ties among partnering companies without worrying about vendor, programming language or platform issues, which are the typical barriers to cross-company IT initiatives.
But besides using the many well known standards behind these technologies -- such as SOAP, Schema, WSDL, UDDI and WS-* among others, it is essential that any two parties also agree on higher level business details. Looking to address such issues within the context of XML the Universal Business Language was created.
The purpose of the Universal Business Language (UBL) is straightforward: it defines a common XML library for business documents. In a typical scenario involving Web services, the same flexibility provided by XML can be a boon or a misfortune to describe business documents, creating open ended possibilities, but equally innumerable outcomes.
Take the simple example of an order or invoice fulfilling Web service, if left to the discretion of a single group of developers, it is very likely that each member would come up with different XML structures to describe the same information. While workable if confined to the same organization, it could quickly result in excessive overhead once accessed across company lines. With UBL, many business concepts equally applicable to vertical and horizontal industries can be modeled in XML, establishing a common language for representing catalogs, invoices, orders, quotations or way-bills, among other things.
If you have worked with software or used XML long enough, you may realize the purpose of UBL is very similar to other initiatives, such as: Electronic Data Interchange (EDI), Commerce XML (cXML), Electronic Business using XML(ebXML), XML Common Business Library (xCBL) and RosettaNet. However, as we will explore shortly, UBL was not created in a vacuum, but rather designed to complement many of aforementioned standards.
Currently in its 2.0 version and built on top of xCBL -- one of the earliest initiatives for XML business syntax -- UBL is developed under the auspices of OASIS, the same consortium behind ebXML which also produces many other Web services standards, thus guaranteeing a high level of relevancy in the overall scope of Web services and reducing possible overlap among competing technologies.
Providing more than 30 business level contracts -- technically known as XML Schemas -- the UBL Library is based on a conceptual model of information components known as Business Information Entities (BIE), like those used by ebXML. However, contrary to this latter specification orientated toward general business process modeling, the focus of UBL is on implementing the contracts behind these BIE's. Listing 1.1 illustrates sections of an Order BIE based on UBL :
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="https://www.w3.org/2001/XMLSchema" targetNamespace="urn:oasis:names:specification:ubl:schema:xsd:Order-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Order-2" version="2.0"> <xsd:element name="Order" type="OrderType"> <xsd:annotation> <xsd:documentation>This element MUST be conveyed as the root element in any instance document based on this Schema
expression</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="OrderType"> <xsd:annotation> <xsd:documentation> <ccts:Component> <ccts:ComponentType>ABIE</ccts:ComponentType> <ccts:DictionaryEntryName>Order. Details</ccts:DictionaryEntryName> <ccts:Definition>The document used to order goods and services.</ccts:Definition> <ccts:ObjectClass>Order</ccts:ObjectClass> <ccts:AlternativeBusinessTerms>Purchase Order</ccts:AlternativeBusinessTerms> </ccts:Component> </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="ext:UBLExtensions" minOccurs="0" maxOccurs="1"> <xsd:annotation> <xsd:documentation>A container for all extensions present in the document.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element ref="cbc:UBLVersionID" minOccurs="0" maxOccurs="1"> <xsd:annotation> <xsd:documentation> <ccts:Component> <ccts:ComponentType>BBIE</ccts:ComponentType> <ccts:DictionaryEntryName>Order. UBL Version Identifier. Identifier</ccts:DictionaryEntryName> <ccts:Definition>The earliest version of the UBL 2 schema for this document type that defines all of the elements
that might be encountered in the current instance.</ccts:Definition> <ccts:Cardinality>0..1</ccts:Cardinality> <ccts:ObjectClass>Order</ccts:ObjectClass> <ccts:PropertyTerm>UBL Version Identifier</ccts:PropertyTerm> <ccts:RepresentationTerm>Identifier</ccts:RepresentationTerm> <ccts:DataType>Identifier. Type</ccts:DataType> <ccts:Examples>2.0.5</ccts:Examples> </ccts:Component> </xsd:documentation> </xsd:annotation> </xsd:element> <!-- More elements here --> </xsd:sequence> </xsd:complexType>
These XML Schemas could then be used under various validating scenarios involving Web services, helping ensure a uniform XML syntax when operating across different industries or country boundaries. Inclusively, to accommodate even the most demanding needs between trading partners, UBL's support for XSLT, XPath and ISO Schematron, allows for the creation of subsets and extensions capable of being applied to particular elements and subtrees within UBL instances, making extensibility to standard UBL Schemas a simple process.
Though UBL is clearly steered toward the pressing IT business requirements faced by multi-nationals, given the sheer scope and detail of its technical contracts, smaller and medium sized using Web services should not shrug off UBL as a large entity solution. As a matter of fact, UBL might very well serve as a catalyst to smaller players in opening up their business process to more established conglomerates.
So the next time you start a Web services design and face the possibility of creating an XML contract to describe a business entity, give UBL a look. It might offer you a widely accepted contract backed by a leading consortium that cannot only save you a substantial amount work, but will likely be more recognized by your business partners than a custom made solution.
About the author
Daniel Rubio is a software consultant with over 10 years of experience in enterprise software development, having recently founded Mashup Soft, a startup specializing in the use Web services for Mashups. He is a technology enthusiast in all areas related to software platforms and maintains a blog on these topics at http://webforefront.com