OpenTravel XML Object Suite Mechanics
Post on 15-Jan-2015
375 Views
Preview:
DESCRIPTION
Transcript
The OpenTravelInteroperability Framework
and 2.0 XML Object Suite Mechanics
OpenTravel Alliancewww.opentravel.org
The Model-Driven Standard
Advantage
• About OpenTravel
• Open-Model Standards for the Travel Industry
• The OpenTravel Interoperability Framework• Introduction & Benefits
• Framework Components “At a Glance”
• The OpenTravel XML Object Suite Specification
© 2012 OpenTravel Alliance | www.opentravel.org
Discussion Points
© 2012 OpenTravel Alliance | www.opentravel.org
The OpenTravel Alliance provides a community where companies in the electronic distribution supply chain work together to create
an accepted structure for electronic messages, enabling suppliers and distributors to speak the same interoperability
language, trading partner to trading partner.
About
OpenTravel
OpenTravel has been a member funded not-for-profit organization.
OpenTravel has been producing open standards for the travel industry.
© 2012 OpenTravel Alliance | www.opentravel.org
Since…
1999
Since…
2001
OpenTravel has been re-architecting its open standard to support modern messaging environments…
© 2012 OpenTravel Alliance | www.opentravel.org
Since…
2011
…and implementing a model driven architecture to streamline internal standards development and support implementer enterprise software development.
© 2012 OpenTravel Alliance | www.opentravel.org
Open-ModelModel Driven Standards
Schema modeling that supports the pace of travel system evolution.
© 2012 OpenTravel Alliance | www.opentravel.org
Model Driven Standards » Open-Model Standards for the Travel Industry
Model Driven Architecture
The “Open-Model Factor”OpenTravel’s core competency is an open standard common information exchange model that supports travel industry business requirements and innovation—and this serves as the
foundation for open-model standards for the travel industry.
• A paradigm shift to “neutral” industry standards for the travel industry
– Platform/ tooling neutral– Architectural style neutral– Support travel industry ecosystem business processes and transactions
• Meets the pace of travel industry innovation– Enhancements made at the model level– Model publishing not labor intensive
• Places emphasis on common information exchange modeling– OpenTravel CIEM is the model foundation
• Includes…– A collection of UML information models– One or more transformation definitions and models
• XML, JAVA, JiBX, JSON, .NET, etc.
– One or more implementation models
• Created in a model driven architecture/ tooling environment
© 2012 OpenTravel Alliance | www.opentravel.org
Model Driven Standards » Model Driven Architecture (MDA) Overview
MDA is a framework for software development
• Defined by the Object Management Group (OMG)
• MDA places importance on models in the software development process
• The software development process is driven by the activity of modeling your software system
Key Benefits for Implementers
Productivity
Portability
Interoperability
Key Benefits for OpenTravel
Domain Modeling
CIEM Quality/ Reuse
Platform Neutrality
Model Driven Architecture
© 2012 OpenTravel Alliance | www.opentravel.org
Model Driven Architecture (MDA) » Building Blocks
It’s mostly about the model…
…but transformations are important too!
ModelDescription of a system.
PIM (independent)
PSM (specific)
Model LanguageA model is written in a well-defined language.
UMLOCL
(Object Constraint Language )
Meta Object Facility (MOF)
Source to target language.
TransformationDefinition
PIM to CodePSM to Code
Specific sourcemodel.
TransformationTool
Model Driven Architecture
© 2012 OpenTravel Alliance | www.opentravel.org
Model Driven Architecture (MDA) » OpenTravel Model Components
OpenTravel Open-Model Structure
Model Driven Architecture
*Note, all boxes with dashed borders are hypothetical components and are not included in the OpenTravel XML Suite.
© 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel
Interoperability FrameworkInteroperability just got cool.
© 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel Interoperability Framework
The OTIF Framework uses a model driven architecture (MDA)
to better serve OpenTravel members, schema implementers and the travel industry as a whole.
OpenTravel Interoperability Framework (OTIF) » Introduction
• Streamlines OpenTravel standards development
• Provides “open” common representational models of all data and business functionality contained in OpenTravel specifications
© 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel Interoperability Framework
OpenTravel Interoperability Framework (OTIF) » Key Benefits
Key benefits for OpenTravel, OpenTravel member companies and specification implementers include:
• Reduced schema enhancement time• Schema enhancements at the model level produce
final publication
• Reduced implementation time & cost• UML-based models integrate with enterprise level
development platforms
• Canonical information model for context and correlations allows IT, business and trading partners to speak the same language
• Increased schema quality• Interoperable framework components ensure optimum
reuse and reduce redundancy
• Improved schema governance• Best practices and policies integrated at the tooling
level
• Reference XML transformation
© 2012 OpenTravel Alliance | www.opentravel.org
Framework Components
At a GlanceContinuous XML component model refinement.
© 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel Interoperability Framework
Four key framework components interoperate for continuous XML component model refinement.
OTIF Key Framework Key Components
<<InformationModel>>
A SQL Server-based canonical refactoring of OpenTravel’s Common Information Exchange Model (CIEM).
OpenTravel Lexis Canonical Model
1067
211NORMALIZED TERMS
CONTEXTUAL FACETS
Key Components » Canonical Model
© 2012 OpenTravel Alliance | www.opentravel.org
Travel industry UML capability models.Provides implementers with UML support at both a business and technical level via component & service composition models that map to travel industry business processes and transactions.
273UML MODELS
Key Components » UML and Data Models
© 2012 OpenTravel Alliance | www.opentravel.org
Automated XML publication packages.
XML compiler that builds and enforces versioning for model XML transformation with type and service libraries.
Key Components » OpenTravel Library Builder
1
2
346
77
BUSINESS OBJECTS
CORE OBJECTS
A compendium of (best practice-based) reference solutions that make working with OpenTravel schema products more productive.
© 2012 OpenTravel Alliance | www.opentravel.org
XML Cookbooks
Schema Dictionaries
Data Model
UML Models
Travel Glossary
Implementation Matrix
OpenTravel Forum
Key Components » Solution Builder
Reference solutions for implementers.
© 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel XML Object Suite
Mechanics
© 2012 OpenTravel Alliance | www.opentravel.org
A View from the TopA hierarchy of XML objects and services comprise the
XML Object Suite component library
OpenTravel XML Object Suite Component Library
© 2012 OpenTravel Alliance | www.opentravel.org
Model ConstructsKey Constructs Used in the XML Object Suite Model
© 2012 OpenTravel Alliance | www.opentravel.org
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Aliases>
A mechanism for providing alternate names usable for valid element references for an object or facet.
PaymentCard
CreditCard
DebitCard
Term
Alias 1
Alias 2
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Aliases>
<CoreObject name="PaymentCard" notExtendable="false"><Aliases>DebitCard CreditCard</Aliases>
<Simple type="PaymentCard_Number"/><Summary>
<Attribute name="expire" type="Date_MMYY"><Example
context="Profile">0714</Example></Attribute><Attribute name="holder" type="String_PersonName">
<Example context="Profile">John Smith</Example>
</Attribute><Element name="Number" repeat="0"
type="PaymentCard_Simple"/></Summary>
. . .
<xsd:element name="Aliases" type="Name_XML_List"/>
<xsd:simpleType name="Name_XML_List"><xsd:list itemType="Name_XML"/>
</xsd:simpleType>
<xsd:simpleType name="Name_XML"><xsd:restriction base="xsd:string">
<xsd:pattern value="([A-Za-z_][A-Za-z0-9\.\-_]*)?"/></xsd:restriction>
</xsd:simpleType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Attribute>
A complexType that contains all the parameters used to define an attribute in the 2.0 Model Library with:• Name• Type• Mandatory indicator• Documentation collection• Equivalent collection• Example collection
• Lower camelcase naming convention
Note that boolean indicators are NOT defined as an Attribute, they are defined in the Indicator collection.
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Attribute>
<CoreObject name="PaymentCard" notExtendable="false"><Aliases>Card CreditCard</Aliases>
<Simple type="PaymentCard_Number"/><Summary>
<Attribute name="expire" type="Date_MMYY"><Example
context="Profile">0714</Example></Attribute><Attribute name="holder" type="String_PersonName">
<Example context="Profile">Joe E Smith</Example>
</Attribute><Element name="Number" repeat="0"
type="PaymentCard_Simple"/></Summary>
. . .
<xsd:complexType name="Attribute"><xsd:sequence>
<xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/><xsd:element ref="Example" minOccurs="0" maxOccurs="100"/>
</xsd:sequence><xsd:attribute name="name" type="Name_XML" use="required"/><xsd:attribute name="type" type="Name_Type" use="required"/><xsd:attribute name="mandatory" type="xsd:boolean" use="optional"/>
</xsd:complexType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Document>
• Six levels of documentation supported• All documentation strings up to 2048 characters• All but Description up to 10 instances
• Non-Contextual documentation• Description (required): The basic description of the XML structure.• Developer: Implementer-specific textual information, which may contain
tips and warnings.• Deprecated: A notification that the object has been marked for deprecation
and the publication version or date for the final object deprecation.• Reference: URL(s) to additional reference information. For example, a link
to a third-party site and/or standard.• MoreInfo: URL(s) to additional documentation that includes links to
publication schedules and instructions for submitting publication comments.
• Contextual documentation• OtherDoc: Other documentation (not included in any of the other
Documentation types) with a context-based indicator.
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Document>
<Simple name="Code_AgentDuty" pattern="[A-Z0-9]{2,5}" type="xsd:string"> <Documentation> <Description>Travel agent duty code used for agency authentication.</Description> <OtherDoc context="Definition">Typically a two to five character code assigned by a distribution partner that may be alpha, numeric, or a combination thereof and is a means of defining the capabilities of a reservation system user group for controlling access to functions and data.</OtherDoc> </Documentation> . . .
<xsd:complexType name="Documentation"> <xsd:sequence> <xsd:element name="Description" type="Description"/> <xsd:element name="Developer" type="Description" minOccurs="0" maxOccurs="10"/> <xsd:element name="Deprecated" type="Description" minOccurs="0" maxOccurs="10"/> <xsd:element name="Reference" type="xsd:anyURI" minOccurs="0" maxOccurs="10"/> <xsd:element name="MoreInfo" type="xsd:anyURI" minOccurs="0" maxOccurs="10"/> <xsd:element name="OtherDoc" type="AdditionalDoc" minOccurs="0" maxOccurs="10"/> </xsd:sequence></xsd:complexType> <xsd:complexType name="AdditionalDoc"> <xsd:complexContent> <xsd:extension base="Description"> <xsd:attribute name="context" type="xsd:string" use="required“/> </xsd:extension> </xsd:complexContent></xsd:complexType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Element>
A complexType that contains all the parameters used to define an element in the 2.0 Model Library with:• Name• Type• Mandatory indicator• Repeat• Documentation collection• Equivalent collection• Example collection
• Upper camelcase naming convention
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Element>
. . .<Detail>
<Attribute name="type" type="PaymentCard_Type"><Example context="Profile">Visa</Example>
</Attribute><Attribute name="effective" type="Date_MMYY"/><Element name="Issuer" repeat="0" type="PaymentCard_Issuer"/>
</Detail>
<xsd:element name="Element" type="Property"/>
<xsd:complexType name="Property"><xsd:sequence>
<xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/><xsd:element ref="Example" minOccurs="0" maxOccurs="100"/>
</xsd:sequence><xsd:attribute name="name" type="Name_XML" use="required"/><xsd:attribute name="type" type="Name_Type" use="required"/><xsd:attribute name="mandatory" type="xsd:boolean" use="optional"/><xsd:attribute name="repeat">
<xsd:simpleType><xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]+|\*"/></xsd:restriction>
</xsd:simpleType></xsd:attribute>
</xsd:complexType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Equivalent>
• Implementer benefit that provides a string-based value as a mechanism to relate a 2.0 element or attribute to an implementer defined application, standard, schema and/ or database
• Implementer resource specified in associated @context attribute
• Note: This is not a formal part of the OpenTravel 2.0 Object Model
• No OpenTravel-defined equivalents provided in publication
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Equivalent>
<xsd:complexType name="Age"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="ValueWithAttributes">Age</otm:OTA2Entity> <otm:Equivalent context="Profile">Age</otm:Equivalent> <otm:Example context="Profile">25</otm:Example>
</xsd:appinfo></xsd:annotation><xsd:simpleContent>
<xsd:extension base="xsd:integer"> <xsd:attribute name="birthDate" type="xsd:date" use="optional"/>
</xsd:extension></xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="Equivalent"><xsd:simpleContent>
<xsd:extension base="xsd:string"><xsd:attribute name="context" type="xsd:string"
use="required"/></xsd:extension>
</xsd:simpleContent></xsd:complexType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Example>
• One or more implementation example(s) with an associated context
• @context - a string value that describes a contextual use for the example
• Example strings used to generate sample instances
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Example>
<xsd:complexType name="Age"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="ValueWithAttributes">Age</otm:OTA2Entity> <otm:Equivalent context="Profile">Age</otm:Equivalent> <otm:Example context="Profile">25</otm:Example>
</xsd:appinfo></xsd:annotation><xsd:simpleContent>
<xsd:extension base="xsd:integer"> <xsd:attribute name="birthDate" type="xsd:date" use="optional"/>
</xsd:extension></xsd:simpleContent>
</xsd:complexType>
<xsd:element name="Example" type="Example"/><xsd:complexType name="Example">
<xsd:simpleContent><xsd:extension base="xsd:string">
<xsd:attribute name="context" type="xsd:string" use="required"/>
</xsd:extension></xsd:simpleContent>
</xsd:complexType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Extension>
• The 2.0 mechanism to represent if an object extends the definition of another Core or Business object
• Combination of namespace and object name identify the namespace of the extended object
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Extension>
<BusinessObject name="Profile" notExtendable="false"><ID>. . .</ID><Summary>. . .</Summary><Detail>. . . </Detail><Query context="Profile" label="" notExtendable="true">
. . .</Query><Custom context="Legacy" label="" notExtendable="false">
<Element name="Remarks" repeat="0" type="ota2:String_Long"/>
</Custom></BusinessObject>
<xsd:element name="Extension" type="Extension"/><xsd:complexType name="Extension">
<xsd:sequence><xsd:element ref="Documentation" minOccurs="0"/></xsd:sequence>
<xsd:attribute name="extends" type="Name_Type" use="required"/></xsd:complexType>
<xsd:element name="ExtensionPointFacet" type="ExtensionPointFacet"/><xsd:complexType name="ExtensionPointFacet">
<xsd:complexContent><xsd:extension base="Facet">
<xsd:sequence><xsd:element ref="Extension"/>
</xsd:sequence></xsd:extension>
</xsd:complexContent></xsd:complexType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Facet>
Three discrete facet types used in one of five ways
1. Provide a unique identifier for an object (ID)
2. Define an element/ attribute/ indicator collection to bind against (Summary, Detail)
3. Define a specific contextual use for an object (Query)
4. Provides a mechanism for implementers to extend an object (Custom)
5. Provide a base type and simple use for an object (Simple)
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Facet>
• May have aliases• Used in Core and Business
objects• Describe a set of elements and
attributes• Elements may repeat• Elements may be mandatory
• Indicators are grouped boolean attributes
• Extend-able• Compiler Rule
• If in current namespace when name is same as type use element ref
• If foreign namespace must use element ref
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Facet>
<BusinessObject name="Profile" notExtendable="false">
<Aliases>TravelerProfile</Aliases>
<ID><Attribute mandatory="true" name="Authority" type="xsd:string"/><Element mandatory="true" name="ProfileID" repeat="0"
type="ota2:InitiatorID"/></ID>
<Summary><Element name="Name" repeat="0" type="String_PersonName"/>
</Summary>
<Detail><Element name="HomePhone" repeat="0" type="HomePhone"/><Element name="MobilePhone" repeat="0" type="MobilePhone"/><Element name="WorkPhone" repeat="0" type="WorkPhone"/><Element name="Age" repeat="0" type="Age"/><Indicator name="HoldInd"/>
</Detail>
<Query context="Profile" label="" notExtendable="true"><Element name="PhoneNumber" repeat="0"
type="Phone_Simple_List"/><Element name="PaymentCard" repeat="0" type="PaymentCard"/>
</Query>
<Custom context="Legacy" label="" notExtendable="false"><Element name="Remarks" repeat="0" type="ota2:String_Long"/>
</Custom>
</BusinessObject>
OTM File Example
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Facet>
<xsd:complexType name="Facet"><xsd:sequence>
<xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Attribute" minOccurs="0" maxOccurs="100"/><xsd:element name="Element" type="Property" minOccurs="0"
maxOccurs="100"/><xsd:element ref="Indicator" minOccurs="0" maxOccurs="100"/>
</xsd:sequence></xsd:complexType>
<xsd:complexType name="Facet_Contextual"><xsd:complexContent>
<xsd:extension base="Facet"><xsd:sequence>
<xsd:element name="ElementRef" type="Name_XML" minOccurs="0" maxOccurs="100"/>
</xsd:sequence><xsd:attribute name="context" type="Name_XML"
use="required"/><xsd:attribute name="label" type="Name_XML"
use="optional"/><xsd:attribute name="notExtendable"
type="xsd:boolean" use="optional"/></xsd:extension>
</xsd:complexContent></xsd:complexType>
<xsd:complexType name="SimpleFacet"><xsd:sequence><xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/><xsd:element ref="Example" minOccurs="0" maxOccurs="100"/></xsd:sequence><xsd:attribute name="type" type="Name_Type" use="required"/></xsd:complexType>
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Indicator>
• All boolean indicator properties that are associated with a 2.0 component
• Example @childInd• Note that NO indicators like this should be
defined as an Attribute
• All Indicators are assumed false unless asserted true
• Indicators become boolean attributes on an “indicator” element
• Element is included into complex type create for the facet
• May have equivalents• Lower camelcase naming convention
with name ending with “Ind”
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Indicator>
<xsd:complexType name="Profile_Detailed_Indicators"> <xsd:simpleContent> <xsd:extension base="Empty"> <xsd:attribute name="id" type="xsd:ID"/> <xsd:attribute name="ShareInd"/> <xsd:attribute name="SyncInd"/>
</xsd:extension> </xsd:simpleContent> </xsd:complexType>
<xsd:element name="Indicator" type="Indicator"/>
<xsd:complexType name="Indicator"><xsd:sequence>
<xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/>
</xsd:sequence><xsd:attribute name="name" type="Name_XML" use="required"/>
</xsd:complexType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Role>
Describes multiple (contextual) uses for a Core object• May be used inline in the
schema• Manifest as an enumerated
list of roles added to the Core object list type
• May be used as element type• Core object list repeat count
is set to the number of roles defined
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Role>
<CoreObject name="Phone" notExtendable="false"><Summary>
<Attribute name="Country" type="String_Short"/></Summary><Detail>
. . . </Detail><Roles>
<Role value="Home"/><Role value="Work"/><Role value="Mobile"/></Roles>
</CoreObject>
<xsd:element name="Role" type="Role"/>
<xsd:complexType name="Role"><xsd:sequence>
<xsd:element ref="Documentation" minOccurs="0"/></xsd:sequence><xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="RoleList"><xsd:sequence>
<xsd:element ref="Role" minOccurs="0" maxOccurs="100"/></xsd:sequence>
</xsd:complexType>
OTM File Example
OTM Model Definition
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <SubGrp>
Provide key mechanism for light weight services• Allow defined Core and Business object facets to be substituted for one another
• ID, Summary and Detail facets contain varying amounts of object metadata• Substituted facets are hierarchal
• One facet is bound to during XML binding• Custom may include Summary or Detail in addition to ID
<Profile_ID Authority="MyCompany"> <ProfileID>123XyZ987</ProfileID> </Profile_ID>
<Profile Authority="MyCompany"> <ProfileID>123XyZ987</ProfileID> <Address>3 Brooks Street, Somewhere, CA</Address> <Name>Name</Name> <Phone>999-555-1212</Phone> </Profile>
<Profile_Detail Authority="MyCompany"> <ProfileID>123XyZ987</ProfileID> <Address>3 Brooks Street, Somewhere, CA</Address> <Name>Name</Name> <Phone>999-555-1212</Phone> <Remarks>send email with changes</Remarks> <Contact>Rick or Sally</Contact> </Profile_Detail>
<Profile_Custom_Web Authority="MyCompany"> <ProfileID>123XyZ987</ProfileID> <Address>3 Brooks Street, Somewhere, CA</Address> <Name>Name</Name> <Phone>999-555-1212</Phone> <Remarks>send email with changes</Remarks> </Profile_Custom_Web>
ID
Summary
Detail
includes
includes
© 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <SubGrp>
Core Object Example
Core Object Sub-Group has 4 elements• Core Object SubGrp is head of substitution
group• Use Summary and Detail to avoid
substitution
Alias Sub-Group has 4 elements
Extension Sub-Group has 4 elements
Where this is in the schema
This can be in the data
And this
Core
PhoneSubGrp
Phone
PhoneDetail
PhoneSummary
Alias
TeleSubGrp
Tele
TeleDetail
TeleSummary
Extension
PhoneExSubGrp
PhoneEx
PhoneExDetail
PhoneExSummary
© 2012 OpenTravel Alliance | www.opentravel.org
Component LibraryXML Message Suite Components Used to Construct Interoperable Web Services
with OpenTravel Payloads
© 2012 OpenTravel Alliance | www.opentravel.org
© 2012 OpenTravel Alliance | www.opentravel.org
Back to the view from the topA hierarchy of xml objects comprise the
XML Object Suite component library
OpenTravel XML Object Suite Component Library
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Simple/ Atomic Type
The most granular building block in the XML Object Suite.
ota2: Model Stereotype Icon
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Simple/ Atomic Type
• Base types• XML atomic (string, integer and date)• List• Union• Closed enumeration
• Facets may be used to constrain the content of the type• Pattern• Max Length• Min Length• Fraction Digits• Total Digits• Min Inclusive• Max Inclusive• Min Exclusive• Max Exclusive
• Associated 2.0 Component Builders• Documentation• Equivalent• Example
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:simpleType name="String_PersonName"> <xsd:annotation> <xsd:documentation source="Reference">http://dictionary.opentravel.org</xsd:documentation> <xsd:documentation source=“Description”>Unstructured name of a person.</xsd:documentation> <xsd:documentation source="OTA1">PersonWhoIsRentingTheCar</xsd:documentation> <xsd:documentation source="IATA">PADIS code A468902894</xsd:documentation> </xsd:annotation> <xsd:restriction base="String_Short"/></xsd:simpleType>
Schema Example
<Simple minLength="0" maxLength="0" type="String_Short" ex="Sally Smythe" name="String_PersonName"><Documentation>
<Description>Unstructured name of a person.</Description> <Reference>http://dictionary.opentravel.org</Reference> <OtherDoc use="OTA1">PersonWhoIsRentingTheCar</OtherDoc> <OtherDoc use="IATA">PADIS code A468902894</OtherDoc> </Documentation></Simple>
OTM File Example
Component Library: Simple Type as Base
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:simpleType name="Code_ChargeFee"> <xsd:annotation> <xsd:documentation xml:lang="en">Specifies a numeric or alphanumeric charge or fee code from 1 to 16 characters in length.</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:minLength value="1"/> <xsd:maxLength value="16"/> <xsd:pattern value="[A-Z0-9]*"/> </xsd:restriction></xsd:simpleType>
Schema Example
<Simple type= "xsd:string" ex="A234567890123456" name="Code_ChargeFee" minLength="1" maxLength="16" pattern="[A-Z0-9]*">
<Documentation> <Description>Specifies a numeric or alphanumeric charge or fee code from 1 to 16 characters in length.</Description> </Documentation> </Simple>
OTM File Example
Component Library: Atomic Type as Base
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Enumeration
An Enumeration complexType with a simpleType base list of enumerated literals.
ota2: Model Stereotype Icons
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Enumeration
Two discrete types of enumerations supported in the 2.0 Model:
Closed Enumeration
Open Enumeration
Non-extensible enumerated list• Static list values
• Days of the week
• System actionable list • Would require programmatic
changes if the list was extended
• Record Action
Implementer/ OpenTravel extensible enumerated list• List limited to <= 100 values• Reserved “other_” literal
• <Developer>This is a string list of enumerations with an “other_" literal to support an open enumeration list. Use the “other_" value in combination with the @code and other extension attributes to exchange a literal that is not in the list and is known to your trading partners.</Developer>
May be used as base type for a Value With Attribute or Element. Is base type for Core object Role.
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Enumeration
Value List may be from the OpenTravel Codelist(extension mechanism provided to support exchanging 1.0 style code values):
<OtherDoc context="OpenTravel Codelist">Source: Age Qualifying Code (AQC) OpenTravel codelist (filtered).</OtherDoc>
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:simpleType name="Enum_AM_PM"> <xsd:restriction base="xs:string"> <xsd:enumeration value="AM"> <xsd:annotation> <xsd:documentation>00:01 until 12:00 </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="PM"> <xsd:annotation> <xsd:documentation>12:01 until 24:00 </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction></xsd:simpleType>
Schema Example
<Enumeration_Closed name="Enum_AM_PM"> <Value literal="AM"> <Documentation> <Desription>00:01 until 12:00</Desription></Documentation> </Value> <Value literal="PM"> <Documentation><Description>12:01 until 24:00</Description></Documentation> </Value></Enumeration_Closed>
OTM File Example
Component Library: Closed Enumeration
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:complexType name="Enum_HotelTypes"> <xsd:simpleContent> <xsd:extension base="Enum_HotelTypes_Base"> <xsd:attribute name="extension"/> </xsd:extension> </xsd:simpleContent></xsd:complexType><xsd:simpleType name="Enum_HotelTypes_Base"> <xsd:restriction base="xs:string"> <xsd:enumeration value="Motel"/> <xsd:enumeration value="Hotel"/> <xsd:enumeration value="Other_"/> </xsd:restriction></xsd:simpleType>
Schema Example
<Enumeration_Open name="Enum_HotelTypes"><Documentation>
<Description>An open list of hotel types.</Description><Developer>This is a string list of enumerations with an
"Other_" literal to support an open enumeration list. Use the "Other_" value in combination with the @code and other extension attributes to exchange a literal that is not in the list and is known to your trading partners.</Developer>
<OtherDoc context="OpenTravel CodeList">Source: Property Type</OtherDoc>
</Documentation><Value literal="Motel"/><Value literal="Hotel"/>
</Enumeration_Open>
OTM File Example
Component Library: Open Enumeration
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Value With Attributes
Groups of attributes related to a single base value that may be a simpleType or complexType open
enumeration.
ota2: Model Stereotype Icon
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Value With Attributes
• May have one or more Attribute and/ or Boolean indicator collections
• Typically replaces 1.0 attributeGroups
• Promotes re-use
• Examples• Equipment• Fees• Locations• Loyalty Level• Operation Times• Seat
• Associated 2.0 Component Builders
• Documentation (base value and attributes and/ or indicators)
• Equivalent• Example
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:complexType name="Tax"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="ValueWithAttributes">Tax</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger"><xsd:attribute name="amount"
type="ota2:PositiveValueUnder1M" use="optional"/><xsd:attribute name="taxCode" type="xsd:string"
use="optional"/><xsd:attribute name="taxName" type="xsd:string"
use="optional"/><xsd:attribute name="ticketingCode"
type="xsd:string" use="required"><xsd:annotation>
<xsd:documentation source="Description">Required tax code used by ticketing.</xsd:documentation>
</xsd:annotation></xsd:attribute>
</xsd:extension></xsd:simpleContent>
</xsd:complexType>
Schema Example
<ValueWithAttrs name="Tax" type="xsd:positiveInteger"><Attribute name="amount" type="PositiveValueUnder1M"/><Attribute name="taxCode" type="xsd:string"/><Attribute name="taxName" type="xsd:string"/><Attribute mandatory="true" name="ticketingCode" type="xsd:string">
<Documentation><Description>Required tax code used by
ticketing.</Description></Documentation>
<Example context="Profile">R33</Example></Attribute>
</ValueWithAttrs>
OTM File Example
Component Library: Value With Attributes
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Core Object
A complexType that serves as a container for application data that defines common representations
of real world objects.
ota2: Model Stereotype Icon
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Core Object
• Commonly used as building blocks for Business Objects
• Typically not implementer extensible…
• …but may extend another Core Components
• Unique ID (xsd:ID) attribute included by Library Builder
• Examples• Address• Phone Number• Payment Card
• Associated 2.0 Component Builders
• Documentation • Equivalent• Extension• Aliases• Simple Facet• Summary Facet• Detail Facet• Roles
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Core Object
May have a property that is a typed Business object, but it can ONLY be the ID facet of the business object.
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:element name="PaymentCardSubGrp" type="ota2:PaymentCard_Summary"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation></xsd:element>
<xsd:element name="PaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"
type="ota2:PaymentCard_Summary"/>
<xsd:element name="PaymentCardSummary"substitutionGroup="ota2:PaymentCardSubGrp"
type="ota2:PaymentCard_Summary"/>
<xsd:element name="PrimaryPaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"
type="ota2:PaymentCard_Summary"/>
<xsd:element name="AlternatePaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"
type="ota2:PaymentCard_Summary"/>
<xsd:element name="SecondaryPaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"
type="ota2:PaymentCard_Summary"/>
<xsd:element name="BusinessPaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"
type="ota2:PaymentCard_Summary"/>
<xsd:element name="PersonalPaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"
type="ota2:PaymentCard_Summary"/>
<xsd:element name="PaymentCardDetail"substitutionGroup="ota2:PaymentCard" type="ota2:PaymentCard_Detail"/>
Schema Example (1/5)
Component Library: Core Object
Ro
les
Su
bG
rp D
efin
itio
n
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:element name= "DebitCardSubGrp" type="ota2:PaymentCard_Summary"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation></xsd:element>
<xsd:element name= "DebitCard" substitutionGroup="ota2:DebitCardSubGrp" type="ota2:PaymentCard_Summary"/>
<xsd:element name= "DebitCardSummary" substitutionGroup="ota2:DebitCardSubGrp" type="ota2:PaymentCard_Summary"/>
<xsd:element name= "DebitCardDetail" substitutionGroup="ota2:DebitCard" type="ota2:PaymentCard_Detail"/>
<xsd:simpleType name="PaymentCard_Simple"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:restriction base="ota2:PaymentCard_Number"/>
</xsd:simpleType>
<xsd:simpleType name="PaymentCard_Simple_List"><xsd:list itemType="ota2:PaymentCard_Simple"/>
</xsd:simpleType>
Schema Example (2/5)
Alia
sS
imp
le F
orm
Component Library: Core Object
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:complexType name="PaymentCard_Summary"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:sequence>
<xsd:element minOccurs="0" name="Number" type="ota2:PaymentCard_Simple"/>
<xsd:element minOccurs="0" ref="ota:ExtensionPoint_Summary"/>
</xsd:sequence><xsd:attribute name="expire" type="ota2:Date_MMYY"
use="optional"/><xsd:attribute name="holder" type="ota2:String_Name"
use="optional"/><xsd:attribute name="role"
type="ota2:Enum_PaymentCardRole_Base"/></xsd:complexType>
Schema Example (3/5)
Su
mm
ary
Fa
cet
Component Library: Core Object
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:complexType name="PaymentCard_Detail"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:complexContent>
<xsd:extension base="ota2:PaymentCard_Summary"><xsd:sequence>
<xsd:group ref="ota2:PaymentCard_Detail_Base"/>
<xsd:element minOccurs="0" ref="ota:ExtensionPoint_Info"/>
</xsd:sequence><xsd:attributeGroup
ref="ota2:PaymentCard_Detail_Attr_Base"/></xsd:extension>
</xsd:complexContent></xsd:complexType>
<xsd:group name="PaymentCard_Detail_Base"><xsd:sequence>
<xsd:element minOccurs="0" name="Issuer" type="ota2:PaymentCard_Issuer"/>
<xsd:element minOccurs="0" name="MagneticStrip" type="ota2:PaymentCard_MagneticStrip"/>
</xsd:sequence></xsd:group>
<xsd:attributeGroup name="PaymentCard_Detail_Attr_Base"><xsd:attribute name="type" type="ota2:PaymentCard_Type" use="optional"/><xsd:attribute name="effective" type="ota2:Date_MMYY" use="optional"/><xsd:attribute name="signatureOnFileInd" type="xsd:boolean"
use="optional"/><xsd:attribute name="isValidInd" type="xsd:boolean" use="optional"/>
</xsd:attributeGroup>
Schema Example (4/5)
De
tail
Fa
cet
Component Library: Core Object
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:complexType name="Enum_PaymentCardRole"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:simpleContent>
<xsd:extension base="ota2:Enum_PaymentCardRole_Base"><xsd:attribute name="extension"
type="xsd:string"/></xsd:extension>
</xsd:simpleContent></xsd:complexType>
<xsd:simpleType name="Enum_PaymentCardRole_Base"><xsd:restriction base="xsd:string">
<xsd:enumeration value="Primary"/><xsd:enumeration value="Alternate"/><xsd:enumeration value="Secondary"/><xsd:enumeration value="Business"/><xsd:enumeration value="Personal"/>
</xsd:restriction></xsd:simpleType>
Schema Example (5/5)
Ro
le E
nu
me
ratio
n
Component Library: Core Object
© 2012 OpenTravel Alliance | www.opentravel.org
<CoreObject name="PaymentCard" notExtendable="false"><Aliases>DebitCard CreditCard</Aliases><Simple type="PaymentCard_Number"/><Summary>
<Attribute name="expire" type="Date_MMYY"><Example context="Profile">0714</Example>
</Attribute><Attribute name="holder" type="String_PersonName">
<Example context="Profile">John Smith</Example></Attribute><Element name="Number" repeat="0" type="PaymentCard_Simple"/>
</Summary><Detail>
<Attribute name="type" type="Enum_PaymentCardType"><Example context="Profile">Visa</Example>
</Attribute><Attribute name="effective" type="Date_MMYY"/><Element name="Issuer" repeat="0" type="PaymentCard_Issuer">
<Example context="Profile">First Bank of Travel</Example>
</Element><Element name="MagneticStrip" repeat="0"
type="PaymentCard_MagneticStrip"/><Element name="Employment" repeat="0" type="Employment"/><Element name="PresentEmployment" repeat="0"
type="PresentEmployment"/><Indicator name="signatureOnFile"/><Indicator name="isValid"/>
</Detail><Roles>
<Role value="Primary"/><Role value="Alternate"/><Role value="Secondary"/><Role value="Business"/><Role value="Personal"/>
</Roles></CoreObject>
OTM File Example
Component Library: Core Object
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Business Object
A complexType that is a containers for application data (such as an itinerary or a traveler profile) that is
commonly query-able and exists as a standalone object.
ota2: Model Stereotype Icon
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Business Object
• May be comprised of one or more other Business objects or Core objects
• Typically implementer extensible
• Examples• Reservation• Seat Map• Electronic Proposal Request
• Associated 2.0 Component Builders
• Documentation • Equivalent• Extension• Aliases• ID Facet• Summary Facet• Detail Facet• Query Facet• Custom Facet
© 2012 OpenTravel Alliance | www.opentravel.org
Optimum extensibility provided via a repeating Custom facet.
Component Library: Business Object
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:element name="ProfileSubGrp" type="ota2:Profile_ID"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation></xsd:element>
<xsd:element name="ProfileID" substitutionGroup="ota2:ProfileSubGrp" type="ota2:Profile_ID"/>
<xsd:element name="ProfileIdentifier"substitutionGroup="ota2:ProfileSubGrp" type="ota2:Profile_ID"/>
<xsd:element name="Profile" substitutionGroup="ota2:ProfileID" type="ota2:Profile_Summary"/>
<xsd:element name="ProfileSummary"substitutionGroup="ota2:ProfileSubGrp" type="ota2:Profile_Summary"/>
<xsd:element name="ProfileDetail" substitutionGroup="ota2:Profile" type="ota2:Profile_Detail"/>
<xsd:element name="ProfileLegacy" substitutionGroup="ota2:Profile" type="ota2:Profile_Legacy"/>
<xsd:element name="ProfileProfileQuery" type="ota2:Profile_Profile_Query"/>
Schema Example (1/5)
Su
bG
rp’s
De
finiti
on
Component Library: Business Object
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:complexType name="Profile_ID"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:sequence>
<xsd:element minOccurs="1" name="ProfileID" type="xsd:string"/></xsd:sequence><xsd:attribute name="Authority" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="Profile_Summary"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:complexContent>
<xsd:extension base="ota2:Profile_ID"><xsd:sequence>
<xsd:group ref="ota2:Profile_Summary_Base"/><xsd:element minOccurs="0"
ref="ota:ExtensionPoint_Summary"/></xsd:sequence>
</xsd:extension></xsd:complexContent>
</xsd:complexType>
<xsd:group name="Profile_Summary_Base"><xsd:sequence>
<xsd:element minOccurs="0" name="Name" type="ota2:String_Name"/><xsd:element minOccurs="0" ref="ota2:EmploymentSubGrp"/><xsd:element maxOccurs="5" minOccurs="0" ref="ota2:PaymentCardDetail"/><xsd:element minOccurs="0" ref="ota2:HomePhone"/><xsd:element minOccurs="0" ref="ota2:MobilePhone"/><xsd:element minOccurs="0" ref="ota2:WorkPhone"/>
</xsd:sequence></xsd:group>
Schema Example (2/5)
ID F
ace
tS
um
ma
ry F
ace
t
Component Library: Business Object
© 2012 OpenTravel Alliance | www.opentravel.org
<<xsd:complexType name="Profile_Detail"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:complexContent>
<xsd:extension base="ota2:Profile_Summary"><xsd:sequence>
<xsd:group ref="ota2:Profile_Detail_Base"/>
<xsd:element minOccurs="0" ref="ota:ExtensionPoint_Detail"/>
</xsd:sequence><xsd:attributeGroup
ref="ota2:Profile_Detail_Attr_Base"/></xsd:extension>
</xsd:complexContent></xsd:complexType>
<xsd:group name="Profile_Detail_Base"><xsd:sequence>
<xsd:element minOccurs="0" name="Remarks" type="ota2:String_Long"/>
</xsd:sequence></xsd:group>
<xsd:attributeGroup name="Profile_Detail_Attr_Base"><xsd:attribute name="ShareIndInd" type="xsd:boolean" use="optional"/><xsd:attribute name="SyncIndInd" type="xsd:boolean" use="optional"/><xsd:attribute name="HoldIndInd" type="xsd:boolean" use="optional"/>
</xsd:attributeGroup>
Schema Example (3/5)
De
tail
Fa
cet
Component Library: Business Object
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:complexType name="Profile_Legacy"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:complexContent>
<xsd:extension base="ota2:Profile_Summary"><xsd:sequence>
<xsd:group ref="ota2:Profile_Legacy_Base"/>
<xsd:element minOccurs="0" ref="ota:ExtensionPoint_Custom"/>
</xsd:sequence><xsd:attributeGroup
ref="ota2:Profile_Legacy_Attr_Base"/></xsd:extension>
</xsd:complexContent></xsd:complexType>
<xsd:group name="Profile_Legacy_Base"><xsd:sequence>
<xsd:element minOccurs="0" name="Remarks" type="ota2:String_Long"/>
</xsd:sequence></xsd:group>
<xsd:attributeGroup name="Profile_Legacy_Attr_Base"><xsd:attribute name="ShareIndInd" type="xsd:boolean" use="optional"/>
</xsd:attributeGroup>
Schema Example (4/5)
Cu
sto
m F
ace
t
Component Library: Business Object
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:complexType name="Profile_Profile_Query"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:sequence>
<xsd:element maxOccurs="3" minOccurs="0" name="PhoneNumber"
type="ota2:Phone_Simple_List"/><xsd:element minOccurs="0"
ref="ota:ExtensionPoint_Query"/></xsd:sequence>
</xsd:complexType>
Schema Example (5/5)
Qu
ery
Fa
cet
Component Library: Business Object
© 2012 OpenTravel Alliance | www.opentravel.org
<BusinessObject name="Profile" notExtendable="false"><Aliases>TravelerProfile</Aliases><ID>
<Attribute mandatory="true" name="Authority" type="xsd:string"><Equivalent context="Legacy"/><Example context="Profile">Auth1</Example>
</Attribute><Element mandatory="true" name="ProfileID" repeat="0"
type="ota2:InitiatorID"><Equivalent context="Legacy"/>
</Element></ID><Summary>
<Element name="Name" repeat="0" type="String_PersonName"/><Element name="PaymentCard_Detail_List" repeat="0"
type="PaymentCard_Detail_List"/><Element name="PresentEmployment" repeat="0" type="PresentEmployment"/>
</Summary><Detail>
<Element name="Remarks" repeat="0" type="ota2:String_Long"/><Element name="HomePhone" repeat="0" type="HomePhone"/><Element name="MobilePhone" repeat="0" type="MobilePhone"/><Element name="WorkPhone" repeat="0" type="WorkPhone"/><Element name="Age" repeat="0" type="Age"/><Indicator name="Share"/><Indicator name="Sync"/><Indicator name="Hold"/>
</Detail><Query context="Profile" label="" notExtendable="true">
<Element name="PhoneNumber" repeat="0" type="Phone_Simple_List"/><Element name="PaymentCard" repeat="0" type="PaymentCard"/>
</Query><Custom context="Legacy" notExtendable="false">
<Element name="Remarks" repeat="0" type="ota2:String_Long"><Example context="Profile">Remarks</Example>
</Element><Indicator name="Share"/>
</Custom></BusinessObject>
OTM File Example
Component Library: Business Object
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Service
A collection of 2.0 components that support interoperable machine-to-machine interaction over a network specified in
Web Services Description Language (WSDL) format.
ota2: Model Stereotype Icon
© 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Service
• Service operation patterns
• Request• Response• Notification
• Response may include data or a simple acknowledgement
• Associated 2.0 Component Builders
• Documentation • Equivalent• Operation
© 2012 OpenTravel Alliance | www.opentravel.org
SOAP Style Naming Convention.
SOAP: 2.0 Service Operation Verb, Noun, Operation
Verb Noun Service Name Operation Names
Read DemandTicket AirDemandTicket ReadRQ
Read DemandTicket AirDemandTicket ReadRS
Read Fare AirFare ReadRQ
Read Fare AirFare ReadRS
Component Library: Service
© 2012 OpenTravel Alliance | www.opentravel.org
<xsd:element name="CreateRQ"substitutionGroup="Request_Payload" type="ota2:Create_RQ"/>
<xsd:complexType name="Create_RQ"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="Operation">ProfileService_Create</otm:OTA2Entity></xsd:appinfo>
</xsd:annotation><xsd:complexContent>
<xsd:extension base="Request_Payload"><xsd:sequence>
<xsd:element minOccurs="0" ref="ota2:ProfileDetail"/>
</xsd:sequence></xsd:extension>
</xsd:complexContent></xsd:complexType>
<xsd:element name="CreateRS"substitutionGroup="Response_Payload" type="ota2:Create_RS"/>
<xsd:complexType name="Create_RS"><xsd:annotation>
<xsd:appinfo><otm:OTA2Entity
type="Operation">ProfileService_Create</otm:OTA2Entity></xsd:appinfo></xsd:annotation>
<xsd:complexContent><xsd:extension base="Response_Payload">
<xsd:sequence><xsd:element minOccurs="0"
ref="ota2:ProfileIdentifier"/></xsd:sequence>
</xsd:extension></xsd:complexContent>
</xsd:complexType>
Schema Example (1/2)
Component Library: Service
© 2012 OpenTravel Alliance | www.opentravel.org
< <!-- ****************************************************** - Library: OTA2_ProfileDraft - Service: ProfileService - Message: ProfileModify-->
<xsd:element xmlns="http://www.OpenTravel.org/ns/OTA2/Library_v01_01" xmlns:ns3="http://www.opentravel.org/ns/OTA2/Profile" name="ProfileModifyRQ" substitutionGroup="OTA2_Payload" type="ns3:ProfileModifyRQ"> <xsd:annotation> <xsd:appinfo><lib:Library library="OTA2_Test"
service="ProfileService">ProfileModify</lib:Library></xsd:appinfo> </xsd:annotation> </xsd:element>
<xsd:complexType name="ProfileModifyRQ"> <xsd:complexContent> <xsd:extension xmlns=http://www.opentravel.org/ns/OTA2/Library_v01_01
base="OTA2_Payload"> <xsd:sequence> <xsd:element ref="Profile"/> <xsd:element minOccurs="0" ref="ExtensionPoint"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType>
<xsd:element xmlns="http://www.opentravel.org/ns/OTA2/Library_v01_01" . . .
Schema Example (2/2)
Component Library: Service
© 2012 OpenTravel Alliance | www.opentravel.org
<Service namespace="http://www.opentravel.org/ns/OTA2/Profile"name="ProfileService“ version="1.0.1">
<Operation Name="ProfileCreate"><Request>
<Element name="Profile" type="Profile"/></Request><Response>
<Element name="Profile" type="Profile_ID"/></Response>
</Operation>
<Operation Name="ProfileMerge"><Request>
<Element name="Profile" type="Profile"/><Element name="Profile2" type="Profile"/>
</Request><Response>
<Element name="Profile" type="Profile_ID"/></Response>
</Operation></Service>
OTM File Example
Component Library: Service
UML models just got cool.
OpenTravel Interoperability Framework
Questions?Bonnie LowellSpecification ArchitectOpenTravel Alliance
bonnie.lowell@opentravel.org
top related