More Related Content Similar to OpenTravel XML Object Suite Mechanics (20) OpenTravel XML Object Suite Mechanics1. The Model-Driven Standard
Advantage
The OpenTravel
Interoperability Framework
and 2.0 XML Object Suite
Mechanics
OpenTravel Alliance
www.opentravel.org
2. Discussion Points
• 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
3. About
OpenTravel
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.
© 2012 OpenTravel Alliance | www.opentravel.org
4. Since…
1999
OpenTravel has been a
member funded not-for-profit
organization.
Since…
2001
OpenTravel has been
producing open standards for
the travel industry.
© 2012 OpenTravel Alliance | www.opentravel.org
5. Since…
2011
OpenTravel has been re-architecting its open
standard to support modern messaging
environments…
…and implementing a
model driven architecture
to streamline internal standards development and
support implementer enterprise software development.
© 2012 OpenTravel Alliance | www.opentravel.org
6. Open-Model
Model Driven Standards
Schema modeling that supports the pace of travel system evolution.
© 2012 OpenTravel Alliance | www.opentravel.org
7. Model Driven Standards » Open-Model Standards for the Travel Industry
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
Model Driven Architecture
– 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
8. 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 Key Benefits for OpenTravel
Productivity Domain Modeling
Model Driven Architecture
Portability CIEM Quality/ Reuse
Interoperability Platform Neutrality
© 2012 OpenTravel Alliance | www.opentravel.org
9. Model Driven Architecture (MDA) » Building Blocks
It’s mostly about the model…
Model Model Language
Description of a system. A model is written in a
well-defined language.
PIM (independent) UML
OCL
PSM (specific) (Object Constraint
Language )
PIM to Code
Meta Object Facility PSM to Code
Model Driven Architecture
(MOF) Specific source
Source to target language. model.
Transformation Transformation
Definition Tool
…but transformations are important too!
© 2012 OpenTravel Alliance | www.opentravel.org
10. 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
12. OpenTravel Interoperability Framework (OTIF) » Introduction
The OTIF Framework uses a
model driven architecture (MDA)
to better serve OpenTravel members, schema implementers
and the travel industry as a whole.
• Provides “open” common
representational models of
Framework
all data and business
functionality contained in
OpenTravel specifications
I nteroperability
• Streamlines OpenTravel
standards development
Open Travel
© 2012 OpenTravel Alliance | www.opentravel.org
13. 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
Framework
development platforms
• Canonical information model for context and
correlations allows IT, business and trading partners to
speak the same language
•
I nteroperability
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
Open Travel
© 2012 OpenTravel Alliance | www.opentravel.org
14. Framework Components
At a Glance
Continuous XML component model refinement.
© 2012 OpenTravel Alliance | www.opentravel.org
15. OTIF Key Framework Key Components
Four key framework components interoperate for continuous
XML component model refinement.
Framework
I nteroperability
Open Travel
© 2012 OpenTravel Alliance | www.opentravel.org
16. Key Components » Canonical Model
OpenTravel Lexis Canonical Model
A SQL Server-based canonical refactoring of OpenTravel’s Common
Information Exchange Model (CIEM).
NORMALIZED TERMS
211
CONTEXTUAL FACETS
1067
<<InformationModel>>
17. Key Components » UML and Data Models
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.
UML MODELS
273
© 2012 OpenTravel Alliance | www.opentravel.org
18. Key Components » OpenTravel Library Builder
Automated XML publication packages.
XML compiler that builds and enforces versioning for model XML
transformation with type and service libraries.
46
BUSINESS OBJECTS
1
2
3
77
CORE OBJECTS
© 2012 OpenTravel Alliance | www.opentravel.org
19. Key Components » Solution Builder
Reference solutions for implementers.
A compendium of (best practice-based) reference solutions that make
working with OpenTravel schema products more productive.
XML Cookbooks
Schema
Dictionaries
Data Model
UML Models
Travel Glossary
Implementation
Matrix
OpenTravel Forum
© 2012 OpenTravel Alliance | www.opentravel.org
21. OpenTravel XML Object Suite Component Library
A View from the Top
A hierarchy of XML objects and services comprise the
XML Object Suite component library
© 2012 OpenTravel Alliance | www.opentravel.org
23. Component Builders: <Aliases>
A mechanism for providing alternate names usable for
valid element references for an object or facet.
Alias 1
Term CreditCard
PaymentCard
DebitCard
Alias 2
© 2012 OpenTravel Alliance | www.opentravel.org
24. Component Builders: <Aliases>
OTM File Example
<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>
. . .
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
25. 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
26. Component Builders: <Attribute>
OTM File Example
<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>
. . .
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
27. 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
28. Component Builders: <Document>
OTM File Example
<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>
. . .
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
29. 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
30. Component Builders: <Element>
OTM File Example
. . .
<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>
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
31. 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
32. Component Builders: <Equivalent>
OTM File 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>
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
33. 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
34. Component Builders: <Example>
OTM File 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>
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
35. 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
36. Component Builders: <Extension>
OTM File Example
<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>
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
37. 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
38. 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
39. Component Builders: <Facet>
OTM File Example
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
40. Component Builders: <Facet>
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
41. 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
42. Component Builders: <Indicator>
OTM File Example
<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>
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
43. 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
44. Component Builders: <Role>
OTM File Example
<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>
OTM Model Definition
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
45. 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>
ID
<Profile Authority="MyCompany">
<ProfileID>123XyZ987</ProfileID>
<Address>3 Brooks Street, Somewhere, CA</Address>
<Name>Name</Name>
includes <Phone>999-555-1212</Phone>
</Profile>
<Profile_Detail Authority="MyCompany">
<ProfileID>123XyZ987</ProfileID>
Summary <Address>3 Brooks Street, Somewhere, CA</Address>
<Name>Name</Name>
<Phone>999-555-1212</Phone>
<Remarks>send email with changes</Remarks>
includes <Contact>Rick or Sally</Contact>
</Profile_Detail>
<Profile_Custom_Web Authority="MyCompany">
<ProfileID>123XyZ987</ProfileID>
Detail <Address>3 Brooks Street, Somewhere, CA</Address>
<Name>Name</Name>
<Phone>999-555-1212</Phone>
<Remarks>send email with changes</Remarks>
</Profile_Custom_Web>
© 2012 OpenTravel Alliance | www.opentravel.org
46. Component Builders: <SubGrp>
Core Object Example
Where this is in the
Core Object Sub-Group has 4 elements schema
• Core Object SubGrp is head of substitution
group
• Use Summary and Detail to avoid This can be in the data
substitution
Alias Sub-Group has 4 elements
Extension Sub-Group has 4 elements And this
PhoneSubGrp TeleSubGrp PhoneExSubGrp
PhoneSummary TeleSummary
PhoneExSummary
Phone Tele
PhoneEx
PhoneDetail TeleDetail
PhoneExDetail
Core Alias Extension
© 2012 OpenTravel Alliance | www.opentravel.org
47. Component Library
XML Message Suite Components Used to Construct Interoperable Web Services
with OpenTravel Payloads
© 2012 OpenTravel Alliance | www.opentravel.org
48. OpenTravel XML Object Suite Component Library
Back to the view from the top
A hierarchy of xml objects comprise the
XML Object Suite component library
© 2012 OpenTravel Alliance | www.opentravel.org
49. 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
50. 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
51. Component Library: Simple Type as Base
Schema Example
<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>
OTM File 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>
© 2012 OpenTravel Alliance | www.opentravel.org
52. Component Library: Atomic Type as Base
Schema Example
<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>
OTM File 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>
© 2012 OpenTravel Alliance | www.opentravel.org
53. Component Library: Enumeration
An Enumeration complexType with a simpleType base
list of enumerated literals.
ota2: Model
Stereotype Icons
© 2012 OpenTravel Alliance | www.opentravel.org
54. Component Library: Enumeration
Two discrete types of enumerations supported in the 2.0 Model:
Closed Enumeration Open Enumeration
Non-extensible enumerated list Implementer/ OpenTravel
• Static list values extensible enumerated list
• Days of the week • List limited to <= 100 values
• System actionable list • Reserved “other_” literal
• Would require programmatic • <Developer>This is a string list of
enumerations with an “other_" literal to
changes if the list was support an open enumeration list. Use
extended the “other_" value in combination with
• Record Action 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
55. 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
56. Component Library: Closed Enumeration
Schema Example
<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>
OTM File 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>
© 2012 OpenTravel Alliance | www.opentravel.org
57. Component Library: Open Enumeration
Schema Example
<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>
OTM File 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>
© 2012 OpenTravel Alliance | www.opentravel.org
58. 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
59. 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
60. Component Library: Value With Attributes
Schema Example
<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>
OTM File 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>
© 2012 OpenTravel Alliance | www.opentravel.org
61. 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
62. 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
63. 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
64. Component Library: Core Object
Schema Example (1/5)
SubGrp Definition
<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"/>
Roles
<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"/>
© 2012 OpenTravel Alliance | www.opentravel.org
65. Component Library: Core Object
Schema Example (2/5)
<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>
Alias
<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>
Simple Form
</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>
© 2012 OpenTravel Alliance | www.opentravel.org
66. Component Library: Core Object
Schema Example (3/5)
<xsd:complexType name="PaymentCard_Summary">
<xsd:annotation>
<xsd:appinfo>
<otm:OTA2Entity type="CoreObject">PaymentCard</otm:OTA2Entity>
Summary Facet
</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>
© 2012 OpenTravel Alliance | www.opentravel.org
67. Component Library: Core Object
Schema Example (4/5)
<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"/>
Detail Facet
</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>
© 2012 OpenTravel Alliance | www.opentravel.org
68. Component Library: Core Object
Schema Example (5/5)
<xsd:complexType name="Enum_PaymentCardRole">
<xsd:annotation>
<xsd:appinfo>
<otm:OTA2Entity type="CoreObject">PaymentCard</otm:OTA2Entity>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleContent>
Role Enumeration
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
69. Component Library: Core Object
OTM File Example
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
70. 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
71. 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
72. Component Library: Business Object
Optimum extensibility provided via a repeating Custom facet.
© 2012 OpenTravel Alliance | www.opentravel.org
73. Component Library: Business Object
Schema Example (1/5)
<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"
SubGrp’s Definition
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"/>
© 2012 OpenTravel Alliance | www.opentravel.org
74. Component Library: Business Object
Schema Example (2/5)
<xsd:complexType name="Profile_ID">
<xsd:annotation>
<xsd:appinfo>
<otm:OTA2Entity type="BusinessObject">Profile</otm:OTA2Entity>
</xsd:appinfo>
ID Facet
</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"/>
Summary Facet
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
75. Component Library: Business Object
Schema Example (3/5)
<<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>
Detail Facet
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
76. Component Library: Business Object
Schema Example (4/5)
<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"/>
Custom Facet
</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>
© 2012 OpenTravel Alliance | www.opentravel.org
77. Component Library: Business Object
Schema Example (5/5)
<xsd:complexType name="Profile_Profile_Query">
<xsd:annotation>
<xsd:appinfo>
<otm:OTA2Entity type="BusinessObject">Profile</otm:OTA2Entity>
Query Facet
</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>
© 2012 OpenTravel Alliance | www.opentravel.org
78. Component Library: Business Object
OTM File Example
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
79. 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
80. 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
81. Component Library: Service
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
© 2012 OpenTravel Alliance | www.opentravel.org
82. Component Library: Service
Schema Example (1/2)
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
83. Component Library: Service
Schema Example (2/2)
< <!-- ******************************************************
- 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"
. . .
© 2012 OpenTravel Alliance | www.opentravel.org
84. Component Library: Service
OTM File Example
<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>
© 2012 OpenTravel Alliance | www.opentravel.org
85. Questions?
Bonnie Lowell
Specification Architect
OpenTravel Alliance
bonnie.lowell@opentravel.org
OpenTravel Interoperability Framework
UML models just got cool.