opentravel xml object suite mechanics

85
The OpenTravel Interoperability Framework and 2.0 XML Object Suite Mechanics OpenTravel Alliance www.opentravel.org The Model-Driven Standard Advantage

Upload: opentravel-alliance

Post on 15-Jan-2015

379 views

Category:

Technology


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: OpenTravel XML Object Suite Mechanics

The OpenTravelInteroperability Framework

and 2.0 XML Object Suite Mechanics

OpenTravel Alliancewww.opentravel.org

The Model-Driven Standard

Advantage

Page 2: OpenTravel XML Object Suite Mechanics

• 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

Page 3: OpenTravel XML Object Suite Mechanics

© 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

Page 4: OpenTravel XML Object Suite Mechanics

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

Page 5: OpenTravel XML Object Suite Mechanics

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.

Page 6: OpenTravel XML Object Suite Mechanics

© 2012 OpenTravel Alliance | www.opentravel.org

Open-ModelModel Driven Standards

Schema modeling that supports the pace of travel system evolution.

Page 7: OpenTravel XML Object Suite Mechanics

© 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

Page 8: OpenTravel XML Object Suite Mechanics

© 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

Page 9: OpenTravel XML Object Suite Mechanics

© 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

Page 10: OpenTravel XML Object Suite Mechanics

© 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.

Page 11: OpenTravel XML Object Suite Mechanics

© 2012 OpenTravel Alliance | www.opentravel.org

OpenTravel

Interoperability FrameworkInteroperability just got cool.

Page 12: OpenTravel XML Object Suite Mechanics

© 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

Page 13: OpenTravel XML Object Suite Mechanics

© 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

Page 14: OpenTravel XML Object Suite Mechanics

© 2012 OpenTravel Alliance | www.opentravel.org

Framework Components

At a GlanceContinuous XML component model refinement.

Page 15: OpenTravel XML Object Suite Mechanics

© 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

Page 16: OpenTravel XML Object Suite Mechanics

<<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

Page 17: OpenTravel XML Object Suite Mechanics

© 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

Page 18: OpenTravel XML Object Suite Mechanics

© 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

Page 19: OpenTravel XML Object Suite Mechanics

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.

Page 20: OpenTravel XML Object Suite Mechanics

© 2012 OpenTravel Alliance | www.opentravel.org

OpenTravel XML Object Suite

Mechanics

Page 21: 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

Page 22: OpenTravel XML Object Suite Mechanics

© 2012 OpenTravel Alliance | www.opentravel.org

Model ConstructsKey Constructs Used in the XML Object Suite Model

© 2012 OpenTravel Alliance | www.opentravel.org

Page 23: OpenTravel XML Object Suite Mechanics

© 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

Page 24: OpenTravel XML Object Suite Mechanics

© 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

Page 25: OpenTravel XML Object Suite Mechanics

© 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.

Page 26: OpenTravel XML Object Suite Mechanics

© 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

Page 27: OpenTravel XML Object Suite Mechanics

© 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.

Page 28: OpenTravel XML Object Suite Mechanics

© 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

Page 29: OpenTravel XML Object Suite Mechanics

© 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

Page 30: OpenTravel XML Object Suite Mechanics

© 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

Page 31: OpenTravel XML Object Suite Mechanics

© 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

Page 32: OpenTravel XML Object Suite Mechanics

© 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

Page 33: OpenTravel XML Object Suite Mechanics

© 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

Page 34: OpenTravel XML Object Suite Mechanics

© 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

Page 35: OpenTravel XML Object Suite Mechanics

© 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

Page 36: OpenTravel XML Object Suite Mechanics

© 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

Page 37: OpenTravel XML Object Suite Mechanics

© 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)

Page 38: OpenTravel XML Object Suite Mechanics

© 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

Page 39: OpenTravel XML Object Suite Mechanics

© 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

Page 40: OpenTravel XML Object Suite Mechanics

© 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

Page 41: OpenTravel XML Object Suite Mechanics

© 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”

Page 42: OpenTravel XML Object Suite Mechanics

© 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

Page 43: OpenTravel XML Object Suite Mechanics

© 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

Page 44: OpenTravel XML Object Suite Mechanics

© 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

Page 45: OpenTravel XML Object Suite Mechanics

© 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

Page 46: OpenTravel XML Object Suite Mechanics

© 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

Page 47: OpenTravel XML Object Suite Mechanics

© 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

Page 48: OpenTravel XML Object Suite Mechanics

© 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

Page 49: OpenTravel XML Object Suite Mechanics

© 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

Page 50: OpenTravel XML Object Suite Mechanics

© 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

Page 51: OpenTravel XML Object Suite Mechanics

© 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

Page 52: OpenTravel XML Object Suite Mechanics

© 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

Page 53: OpenTravel XML Object Suite Mechanics

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Enumeration

An Enumeration complexType with a simpleType base list of enumerated literals.

ota2: Model Stereotype Icons

Page 54: OpenTravel XML Object Suite Mechanics

© 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.

Page 55: OpenTravel XML Object Suite Mechanics

© 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>

Page 56: OpenTravel XML Object Suite Mechanics

© 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

Page 57: OpenTravel XML Object Suite Mechanics

© 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

Page 58: OpenTravel XML Object Suite Mechanics

© 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

Page 59: OpenTravel XML Object Suite Mechanics

© 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

Page 60: OpenTravel XML Object Suite Mechanics

© 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

Page 61: OpenTravel XML Object Suite Mechanics

© 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

Page 62: OpenTravel XML Object Suite Mechanics

© 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

Page 63: OpenTravel XML Object Suite Mechanics

© 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.

Page 64: OpenTravel XML Object Suite Mechanics

© 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

Page 65: OpenTravel XML Object Suite Mechanics

© 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

Page 66: OpenTravel XML Object Suite Mechanics

© 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

Page 67: OpenTravel XML Object Suite Mechanics

© 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

Page 68: OpenTravel XML Object Suite Mechanics

© 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

Page 69: OpenTravel XML Object Suite Mechanics

© 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

Page 70: OpenTravel XML Object Suite Mechanics

© 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

Page 71: OpenTravel XML Object Suite Mechanics

© 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

Page 72: OpenTravel XML Object Suite Mechanics

© 2012 OpenTravel Alliance | www.opentravel.org

Optimum extensibility provided via a repeating Custom facet.

Component Library: Business Object

Page 73: OpenTravel XML Object Suite Mechanics

© 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

Page 74: OpenTravel XML Object Suite Mechanics

© 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

Page 75: OpenTravel XML Object Suite Mechanics

© 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

Page 76: OpenTravel XML Object Suite Mechanics

© 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

Page 77: OpenTravel XML Object Suite Mechanics

© 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

Page 78: OpenTravel XML Object Suite Mechanics

© 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

Page 79: OpenTravel XML Object Suite Mechanics

© 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

Page 80: OpenTravel XML Object Suite Mechanics

© 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

Page 81: OpenTravel XML Object Suite Mechanics

© 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

Page 82: OpenTravel XML Object Suite Mechanics

© 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

Page 83: OpenTravel XML Object Suite Mechanics

© 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

Page 84: OpenTravel XML Object Suite Mechanics

© 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

Page 85: OpenTravel XML Object Suite Mechanics

UML models just got cool.

OpenTravel Interoperability Framework

Questions?Bonnie LowellSpecification ArchitectOpenTravel Alliance

[email protected]