Transcript

The OpenTravelInteroperability Framework

and 2.0 XML Object Suite Mechanics

OpenTravel Alliancewww.opentravel.org

The Model-Driven Standard

Advantage

• About OpenTravel

• Open-Model Standards for the Travel Industry

• The OpenTravel Interoperability Framework• Introduction & Benefits

• Framework Components “At a Glance”

• The OpenTravel XML Object Suite Specification

© 2012 OpenTravel Alliance | www.opentravel.org

Discussion Points

© 2012 OpenTravel Alliance | www.opentravel.org

The OpenTravel Alliance provides a community where companies in the electronic distribution supply chain work together to create

an accepted structure for electronic messages, enabling suppliers and distributors to speak the same interoperability

language, trading partner to trading partner.

About

OpenTravel

OpenTravel has been a member funded not-for-profit organization.

OpenTravel has been producing open standards for the travel industry.

© 2012 OpenTravel Alliance | www.opentravel.org

Since…

1999

Since…

2001

OpenTravel has been re-architecting its open standard to support modern messaging environments…

© 2012 OpenTravel Alliance | www.opentravel.org

Since…

2011

…and implementing a model driven architecture to streamline internal standards development and support implementer enterprise software development.

© 2012 OpenTravel Alliance | www.opentravel.org

Open-ModelModel Driven Standards

Schema modeling that supports the pace of travel system evolution.

© 2012 OpenTravel Alliance | www.opentravel.org

Model Driven Standards » Open-Model Standards for the Travel Industry

Model Driven Architecture

The “Open-Model Factor”OpenTravel’s core competency is an open standard common information exchange model that supports travel industry business requirements and innovation—and this serves as the

foundation for open-model standards for the travel industry.

• A paradigm shift to “neutral” industry standards for the travel industry

– Platform/ tooling neutral– Architectural style neutral– Support travel industry ecosystem business processes and transactions

• Meets the pace of travel industry innovation– Enhancements made at the model level– Model publishing not labor intensive

• Places emphasis on common information exchange modeling– OpenTravel CIEM is the model foundation

• Includes…– A collection of UML information models– One or more transformation definitions and models

• XML, JAVA, JiBX, JSON, .NET, etc.

– One or more implementation models

• Created in a model driven architecture/ tooling environment

© 2012 OpenTravel Alliance | www.opentravel.org

Model Driven Standards » Model Driven Architecture (MDA) Overview

MDA is a framework for software development

• Defined by the Object Management Group (OMG)

• MDA places importance on models in the software development process

• The software development process is driven by the activity of modeling your software system

Key Benefits for Implementers

Productivity

Portability

Interoperability

Key Benefits for OpenTravel

Domain Modeling

CIEM Quality/ Reuse

Platform Neutrality

Model Driven Architecture

© 2012 OpenTravel Alliance | www.opentravel.org

Model Driven Architecture (MDA) » Building Blocks

It’s mostly about the model…

…but transformations are important too!

ModelDescription of a system.

PIM (independent)

PSM (specific)

Model LanguageA model is written in a well-defined language.

UMLOCL

(Object Constraint Language )

Meta Object Facility (MOF)

Source to target language.

TransformationDefinition

PIM to CodePSM to Code

Specific sourcemodel.

TransformationTool

Model Driven Architecture

© 2012 OpenTravel Alliance | www.opentravel.org

Model Driven Architecture (MDA) » OpenTravel Model Components

OpenTravel Open-Model Structure

Model Driven Architecture

*Note, all boxes with dashed borders are hypothetical components and are not included in the OpenTravel XML Suite.

© 2012 OpenTravel Alliance | www.opentravel.org

OpenTravel

Interoperability FrameworkInteroperability just got cool.

© 2012 OpenTravel Alliance | www.opentravel.org

OpenTravel Interoperability Framework

The OTIF Framework uses a model driven architecture (MDA)

to better serve OpenTravel members, schema implementers and the travel industry as a whole.

OpenTravel Interoperability Framework (OTIF) » Introduction

• Streamlines OpenTravel standards development

• Provides “open” common representational models of all data and business functionality contained in OpenTravel specifications

© 2012 OpenTravel Alliance | www.opentravel.org

OpenTravel Interoperability Framework

OpenTravel Interoperability Framework (OTIF) » Key Benefits

Key benefits for OpenTravel, OpenTravel member companies and specification implementers include:

• Reduced schema enhancement time• Schema enhancements at the model level produce

final publication

• Reduced implementation time & cost• UML-based models integrate with enterprise level

development platforms

• Canonical information model for context and correlations allows IT, business and trading partners to speak the same language

• Increased schema quality• Interoperable framework components ensure optimum

reuse and reduce redundancy

• Improved schema governance• Best practices and policies integrated at the tooling

level

• Reference XML transformation

© 2012 OpenTravel Alliance | www.opentravel.org

Framework Components

At a GlanceContinuous XML component model refinement.

© 2012 OpenTravel Alliance | www.opentravel.org

OpenTravel Interoperability Framework

Four key framework components interoperate for continuous XML component model refinement.

OTIF Key Framework Key Components

<<InformationModel>>

A SQL Server-based canonical refactoring of OpenTravel’s Common Information Exchange Model (CIEM).

OpenTravel Lexis Canonical Model

1067

211NORMALIZED TERMS

CONTEXTUAL FACETS

Key Components » Canonical Model

© 2012 OpenTravel Alliance | www.opentravel.org

Travel industry UML capability models.Provides implementers with UML support at both a business and technical level via component & service composition models that map to travel industry business processes and transactions.

273UML MODELS

Key Components » UML and Data Models

© 2012 OpenTravel Alliance | www.opentravel.org

Automated XML publication packages.

XML compiler that builds and enforces versioning for model XML transformation with type and service libraries.

Key Components » OpenTravel Library Builder

1

2

346

77

BUSINESS OBJECTS

CORE OBJECTS

A compendium of (best practice-based) reference solutions that make working with OpenTravel schema products more productive.

© 2012 OpenTravel Alliance | www.opentravel.org

XML Cookbooks

Schema Dictionaries

Data Model

UML Models

Travel Glossary

Implementation Matrix

OpenTravel Forum

Key Components » Solution Builder

Reference solutions for implementers.

© 2012 OpenTravel Alliance | www.opentravel.org

OpenTravel XML Object Suite

Mechanics

© 2012 OpenTravel Alliance | www.opentravel.org

A View from the TopA hierarchy of XML objects and services comprise the

XML Object Suite component library

OpenTravel XML Object Suite Component Library

© 2012 OpenTravel Alliance | www.opentravel.org

Model ConstructsKey Constructs Used in the XML Object Suite Model

© 2012 OpenTravel Alliance | www.opentravel.org

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Aliases>

A mechanism for providing alternate names usable for valid element references for an object or facet.

PaymentCard

CreditCard

DebitCard

Term

Alias 1

Alias 2

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Aliases>

<CoreObject name="PaymentCard" notExtendable="false"><Aliases>DebitCard CreditCard</Aliases>

<Simple type="PaymentCard_Number"/><Summary>

<Attribute name="expire" type="Date_MMYY"><Example

context="Profile">0714</Example></Attribute><Attribute name="holder" type="String_PersonName">

<Example context="Profile">John Smith</Example>

</Attribute><Element name="Number" repeat="0"

type="PaymentCard_Simple"/></Summary>

. . .

<xsd:element name="Aliases" type="Name_XML_List"/>

<xsd:simpleType name="Name_XML_List"><xsd:list itemType="Name_XML"/>

</xsd:simpleType>

<xsd:simpleType name="Name_XML"><xsd:restriction base="xsd:string">

<xsd:pattern value="([A-Za-z_][A-Za-z0-9\.\-_]*)?"/></xsd:restriction>

</xsd:simpleType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Attribute>

A complexType that contains all the parameters used to define an attribute in the 2.0 Model Library with:• Name• Type• Mandatory indicator• Documentation collection• Equivalent collection• Example collection

• Lower camelcase naming convention

Note that boolean indicators are NOT defined as an Attribute, they are defined in the Indicator collection.

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Attribute>

<CoreObject name="PaymentCard" notExtendable="false"><Aliases>Card CreditCard</Aliases>

<Simple type="PaymentCard_Number"/><Summary>

<Attribute name="expire" type="Date_MMYY"><Example

context="Profile">0714</Example></Attribute><Attribute name="holder" type="String_PersonName">

<Example context="Profile">Joe E Smith</Example>

</Attribute><Element name="Number" repeat="0"

type="PaymentCard_Simple"/></Summary>

. . .

<xsd:complexType name="Attribute"><xsd:sequence>

<xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/><xsd:element ref="Example" minOccurs="0" maxOccurs="100"/>

</xsd:sequence><xsd:attribute name="name" type="Name_XML" use="required"/><xsd:attribute name="type" type="Name_Type" use="required"/><xsd:attribute name="mandatory" type="xsd:boolean" use="optional"/>

</xsd:complexType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Document>

• Six levels of documentation supported• All documentation strings up to 2048 characters• All but Description up to 10 instances

• Non-Contextual documentation• Description (required): The basic description of the XML structure.• Developer: Implementer-specific textual information, which may contain

tips and warnings.• Deprecated: A notification that the object has been marked for deprecation

and the publication version or date for the final object deprecation.• Reference: URL(s) to additional reference information. For example, a link

to a third-party site and/or standard.• MoreInfo: URL(s) to additional documentation that includes links to

publication schedules and instructions for submitting publication comments.

• Contextual documentation• OtherDoc: Other documentation (not included in any of the other

Documentation types) with a context-based indicator.

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Document>

<Simple name="Code_AgentDuty" pattern="[A-Z0-9]{2,5}" type="xsd:string"> <Documentation> <Description>Travel agent duty code used for agency authentication.</Description> <OtherDoc context="Definition">Typically a two to five character code assigned by a distribution partner that may be alpha, numeric, or a combination thereof and is a means of defining the capabilities of a reservation system user group for controlling access to functions and data.</OtherDoc> </Documentation> . . .

<xsd:complexType name="Documentation"> <xsd:sequence> <xsd:element name="Description" type="Description"/> <xsd:element name="Developer" type="Description" minOccurs="0" maxOccurs="10"/> <xsd:element name="Deprecated" type="Description" minOccurs="0" maxOccurs="10"/> <xsd:element name="Reference" type="xsd:anyURI" minOccurs="0" maxOccurs="10"/> <xsd:element name="MoreInfo" type="xsd:anyURI" minOccurs="0" maxOccurs="10"/> <xsd:element name="OtherDoc" type="AdditionalDoc" minOccurs="0" maxOccurs="10"/> </xsd:sequence></xsd:complexType> <xsd:complexType name="AdditionalDoc"> <xsd:complexContent> <xsd:extension base="Description"> <xsd:attribute name="context" type="xsd:string" use="required“/> </xsd:extension> </xsd:complexContent></xsd:complexType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Element>

A complexType that contains all the parameters used to define an element in the 2.0 Model Library with:• Name• Type• Mandatory indicator• Repeat• Documentation collection• Equivalent collection• Example collection

• Upper camelcase naming convention

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Element>

. . .<Detail>

<Attribute name="type" type="PaymentCard_Type"><Example context="Profile">Visa</Example>

</Attribute><Attribute name="effective" type="Date_MMYY"/><Element name="Issuer" repeat="0" type="PaymentCard_Issuer"/>

</Detail>

<xsd:element name="Element" type="Property"/>

<xsd:complexType name="Property"><xsd:sequence>

<xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/><xsd:element ref="Example" minOccurs="0" maxOccurs="100"/>

</xsd:sequence><xsd:attribute name="name" type="Name_XML" use="required"/><xsd:attribute name="type" type="Name_Type" use="required"/><xsd:attribute name="mandatory" type="xsd:boolean" use="optional"/><xsd:attribute name="repeat">

<xsd:simpleType><xsd:restriction base="xsd:string">

<xsd:pattern value="[0-9]+|\*"/></xsd:restriction>

</xsd:simpleType></xsd:attribute>

</xsd:complexType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Equivalent>

• Implementer benefit that provides a string-based value as a mechanism to relate a 2.0 element or attribute to an implementer defined application, standard, schema and/ or database

• Implementer resource specified in associated @context attribute

• Note: This is not a formal part of the OpenTravel 2.0 Object Model

• No OpenTravel-defined equivalents provided in publication

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Equivalent>

<xsd:complexType name="Age"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="ValueWithAttributes">Age</otm:OTA2Entity> <otm:Equivalent context="Profile">Age</otm:Equivalent> <otm:Example context="Profile">25</otm:Example>

</xsd:appinfo></xsd:annotation><xsd:simpleContent>

<xsd:extension base="xsd:integer"> <xsd:attribute name="birthDate" type="xsd:date" use="optional"/>

</xsd:extension></xsd:simpleContent>

</xsd:complexType>

<xsd:complexType name="Equivalent"><xsd:simpleContent>

<xsd:extension base="xsd:string"><xsd:attribute name="context" type="xsd:string"

use="required"/></xsd:extension>

</xsd:simpleContent></xsd:complexType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Example>

• One or more implementation example(s) with an associated context

• @context - a string value that describes a contextual use for the example

• Example strings used to generate sample instances

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Example>

<xsd:complexType name="Age"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="ValueWithAttributes">Age</otm:OTA2Entity> <otm:Equivalent context="Profile">Age</otm:Equivalent> <otm:Example context="Profile">25</otm:Example>

</xsd:appinfo></xsd:annotation><xsd:simpleContent>

<xsd:extension base="xsd:integer"> <xsd:attribute name="birthDate" type="xsd:date" use="optional"/>

</xsd:extension></xsd:simpleContent>

</xsd:complexType>

<xsd:element name="Example" type="Example"/><xsd:complexType name="Example">

<xsd:simpleContent><xsd:extension base="xsd:string">

<xsd:attribute name="context" type="xsd:string" use="required"/>

</xsd:extension></xsd:simpleContent>

</xsd:complexType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Extension>

• The 2.0 mechanism to represent if an object extends the definition of another Core or Business object

• Combination of namespace and object name identify the namespace of the extended object

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Extension>

<BusinessObject name="Profile" notExtendable="false"><ID>. . .</ID><Summary>. . .</Summary><Detail>. . . </Detail><Query context="Profile" label="" notExtendable="true">

. . .</Query><Custom context="Legacy" label="" notExtendable="false">

<Element name="Remarks" repeat="0" type="ota2:String_Long"/>

</Custom></BusinessObject>

<xsd:element name="Extension" type="Extension"/><xsd:complexType name="Extension">

<xsd:sequence><xsd:element ref="Documentation" minOccurs="0"/></xsd:sequence>

<xsd:attribute name="extends" type="Name_Type" use="required"/></xsd:complexType>

<xsd:element name="ExtensionPointFacet" type="ExtensionPointFacet"/><xsd:complexType name="ExtensionPointFacet">

<xsd:complexContent><xsd:extension base="Facet">

<xsd:sequence><xsd:element ref="Extension"/>

</xsd:sequence></xsd:extension>

</xsd:complexContent></xsd:complexType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Facet>

Three discrete facet types used in one of five ways

1. Provide a unique identifier for an object (ID)

2. Define an element/ attribute/ indicator collection to bind against (Summary, Detail)

3. Define a specific contextual use for an object (Query)

4. Provides a mechanism for implementers to extend an object (Custom)

5. Provide a base type and simple use for an object (Simple)

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Facet>

• May have aliases• Used in Core and Business

objects• Describe a set of elements and

attributes• Elements may repeat• Elements may be mandatory

• Indicators are grouped boolean attributes

• Extend-able• Compiler Rule

• If in current namespace when name is same as type use element ref

• If foreign namespace must use element ref

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Facet>

<BusinessObject name="Profile" notExtendable="false">

<Aliases>TravelerProfile</Aliases>

<ID><Attribute mandatory="true" name="Authority" type="xsd:string"/><Element mandatory="true" name="ProfileID" repeat="0"

type="ota2:InitiatorID"/></ID>

<Summary><Element name="Name" repeat="0" type="String_PersonName"/>

</Summary>

<Detail><Element name="HomePhone" repeat="0" type="HomePhone"/><Element name="MobilePhone" repeat="0" type="MobilePhone"/><Element name="WorkPhone" repeat="0" type="WorkPhone"/><Element name="Age" repeat="0" type="Age"/><Indicator name="HoldInd"/>

</Detail>

<Query context="Profile" label="" notExtendable="true"><Element name="PhoneNumber" repeat="0"

type="Phone_Simple_List"/><Element name="PaymentCard" repeat="0" type="PaymentCard"/>

</Query>

<Custom context="Legacy" label="" notExtendable="false"><Element name="Remarks" repeat="0" type="ota2:String_Long"/>

</Custom>

</BusinessObject>

OTM File Example

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Facet>

<xsd:complexType name="Facet"><xsd:sequence>

<xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Attribute" minOccurs="0" maxOccurs="100"/><xsd:element name="Element" type="Property" minOccurs="0"

maxOccurs="100"/><xsd:element ref="Indicator" minOccurs="0" maxOccurs="100"/>

</xsd:sequence></xsd:complexType>

<xsd:complexType name="Facet_Contextual"><xsd:complexContent>

<xsd:extension base="Facet"><xsd:sequence>

<xsd:element name="ElementRef" type="Name_XML" minOccurs="0" maxOccurs="100"/>

</xsd:sequence><xsd:attribute name="context" type="Name_XML"

use="required"/><xsd:attribute name="label" type="Name_XML"

use="optional"/><xsd:attribute name="notExtendable"

type="xsd:boolean" use="optional"/></xsd:extension>

</xsd:complexContent></xsd:complexType>

<xsd:complexType name="SimpleFacet"><xsd:sequence><xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/><xsd:element ref="Example" minOccurs="0" maxOccurs="100"/></xsd:sequence><xsd:attribute name="type" type="Name_Type" use="required"/></xsd:complexType>

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Indicator>

• All boolean indicator properties that are associated with a 2.0 component

• Example @childInd• Note that NO indicators like this should be

defined as an Attribute

• All Indicators are assumed false unless asserted true

• Indicators become boolean attributes on an “indicator” element

• Element is included into complex type create for the facet

• May have equivalents• Lower camelcase naming convention

with name ending with “Ind”

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Indicator>

<xsd:complexType name="Profile_Detailed_Indicators"> <xsd:simpleContent> <xsd:extension base="Empty"> <xsd:attribute name="id" type="xsd:ID"/> <xsd:attribute name="ShareInd"/> <xsd:attribute name="SyncInd"/>

</xsd:extension> </xsd:simpleContent> </xsd:complexType>

<xsd:element name="Indicator" type="Indicator"/>

<xsd:complexType name="Indicator"><xsd:sequence>

<xsd:element ref="Documentation" minOccurs="0"/><xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/>

</xsd:sequence><xsd:attribute name="name" type="Name_XML" use="required"/>

</xsd:complexType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Role>

Describes multiple (contextual) uses for a Core object• May be used inline in the

schema• Manifest as an enumerated

list of roles added to the Core object list type

• May be used as element type• Core object list repeat count

is set to the number of roles defined

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <Role>

<CoreObject name="Phone" notExtendable="false"><Summary>

<Attribute name="Country" type="String_Short"/></Summary><Detail>

. . . </Detail><Roles>

<Role value="Home"/><Role value="Work"/><Role value="Mobile"/></Roles>

</CoreObject>

<xsd:element name="Role" type="Role"/>

<xsd:complexType name="Role"><xsd:sequence>

<xsd:element ref="Documentation" minOccurs="0"/></xsd:sequence><xsd:attribute name="value" type="xsd:string" use="required"/>

</xsd:complexType>

<xsd:complexType name="RoleList"><xsd:sequence>

<xsd:element ref="Role" minOccurs="0" maxOccurs="100"/></xsd:sequence>

</xsd:complexType>

OTM File Example

OTM Model Definition

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <SubGrp>

Provide key mechanism for light weight services• Allow defined Core and Business object facets to be substituted for one another

• ID, Summary and Detail facets contain varying amounts of object metadata• Substituted facets are hierarchal

• One facet is bound to during XML binding• Custom may include Summary or Detail in addition to ID

<Profile_ID Authority="MyCompany"> <ProfileID>123XyZ987</ProfileID> </Profile_ID>

<Profile Authority="MyCompany"> <ProfileID>123XyZ987</ProfileID> <Address>3 Brooks Street, Somewhere, CA</Address> <Name>Name</Name> <Phone>999-555-1212</Phone> </Profile>

<Profile_Detail Authority="MyCompany"> <ProfileID>123XyZ987</ProfileID> <Address>3 Brooks Street, Somewhere, CA</Address> <Name>Name</Name> <Phone>999-555-1212</Phone> <Remarks>send email with changes</Remarks> <Contact>Rick or Sally</Contact> </Profile_Detail>

<Profile_Custom_Web Authority="MyCompany"> <ProfileID>123XyZ987</ProfileID> <Address>3 Brooks Street, Somewhere, CA</Address> <Name>Name</Name> <Phone>999-555-1212</Phone> <Remarks>send email with changes</Remarks> </Profile_Custom_Web>

ID

Summary

Detail

includes

includes

© 2012 OpenTravel Alliance | www.opentravel.org

Component Builders: <SubGrp>

Core Object Example

Core Object Sub-Group has 4 elements• Core Object SubGrp is head of substitution

group• Use Summary and Detail to avoid

substitution

Alias Sub-Group has 4 elements

Extension Sub-Group has 4 elements

Where this is in the schema

This can be in the data

And this

Core

PhoneSubGrp

Phone

PhoneDetail

PhoneSummary

Alias

TeleSubGrp

Tele

TeleDetail

TeleSummary

Extension

PhoneExSubGrp

PhoneEx

PhoneExDetail

PhoneExSummary

© 2012 OpenTravel Alliance | www.opentravel.org

Component LibraryXML Message Suite Components Used to Construct Interoperable Web Services

with OpenTravel Payloads

© 2012 OpenTravel Alliance | www.opentravel.org

© 2012 OpenTravel Alliance | www.opentravel.org

Back to the view from the topA hierarchy of xml objects comprise the

XML Object Suite component library

OpenTravel XML Object Suite Component Library

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Simple/ Atomic Type

The most granular building block in the XML Object Suite.

ota2: Model Stereotype Icon

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Simple/ Atomic Type

• Base types• XML atomic (string, integer and date)• List• Union• Closed enumeration

• Facets may be used to constrain the content of the type• Pattern• Max Length• Min Length• Fraction Digits• Total Digits• Min Inclusive• Max Inclusive• Min Exclusive• Max Exclusive

• Associated 2.0 Component Builders• Documentation• Equivalent• Example

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:simpleType name="String_PersonName"> <xsd:annotation> <xsd:documentation source="Reference">http://dictionary.opentravel.org</xsd:documentation> <xsd:documentation source=“Description”>Unstructured name of a person.</xsd:documentation> <xsd:documentation source="OTA1">PersonWhoIsRentingTheCar</xsd:documentation> <xsd:documentation source="IATA">PADIS code A468902894</xsd:documentation> </xsd:annotation> <xsd:restriction base="String_Short"/></xsd:simpleType>

Schema Example

<Simple minLength="0" maxLength="0" type="String_Short" ex="Sally Smythe" name="String_PersonName"><Documentation>

<Description>Unstructured name of a person.</Description> <Reference>http://dictionary.opentravel.org</Reference> <OtherDoc use="OTA1">PersonWhoIsRentingTheCar</OtherDoc> <OtherDoc use="IATA">PADIS code A468902894</OtherDoc> </Documentation></Simple>

OTM File Example

Component Library: Simple Type as Base

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:simpleType name="Code_ChargeFee"> <xsd:annotation> <xsd:documentation xml:lang="en">Specifies a numeric or alphanumeric charge or fee code from 1 to 16 characters in length.</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:minLength value="1"/> <xsd:maxLength value="16"/> <xsd:pattern value="[A-Z0-9]*"/> </xsd:restriction></xsd:simpleType>

Schema Example

<Simple type= "xsd:string" ex="A234567890123456" name="Code_ChargeFee" minLength="1" maxLength="16" pattern="[A-Z0-9]*">

<Documentation> <Description>Specifies a numeric or alphanumeric charge or fee code from 1 to 16 characters in length.</Description> </Documentation> </Simple>

OTM File Example

Component Library: Atomic Type as Base

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Enumeration

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

ota2: Model Stereotype Icons

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Enumeration

Two discrete types of enumerations supported in the 2.0 Model:

Closed Enumeration

Open Enumeration

Non-extensible enumerated list• Static list values

• Days of the week

• System actionable list • Would require programmatic

changes if the list was extended

• Record Action

Implementer/ OpenTravel extensible enumerated list• List limited to <= 100 values• Reserved “other_” literal

• <Developer>This is a string list of enumerations with an “other_" literal to support an open enumeration list. Use the “other_" value in combination with the @code and other extension attributes to exchange a literal that is not in the list and is known to your trading partners.</Developer>

May be used as base type for a Value With Attribute or Element. Is base type for Core object Role.

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Enumeration

Value List may be from the OpenTravel Codelist(extension mechanism provided to support exchanging 1.0 style code values):

<OtherDoc context="OpenTravel Codelist">Source: Age Qualifying Code (AQC) OpenTravel codelist (filtered).</OtherDoc>

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:simpleType name="Enum_AM_PM"> <xsd:restriction base="xs:string"> <xsd:enumeration value="AM"> <xsd:annotation> <xsd:documentation>00:01 until 12:00 </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="PM"> <xsd:annotation> <xsd:documentation>12:01 until 24:00 </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction></xsd:simpleType>

Schema Example

<Enumeration_Closed name="Enum_AM_PM"> <Value literal="AM"> <Documentation> <Desription>00:01 until 12:00</Desription></Documentation> </Value> <Value literal="PM"> <Documentation><Description>12:01 until 24:00</Description></Documentation> </Value></Enumeration_Closed>

OTM File Example

Component Library: Closed Enumeration

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:complexType name="Enum_HotelTypes"> <xsd:simpleContent> <xsd:extension base="Enum_HotelTypes_Base"> <xsd:attribute name="extension"/> </xsd:extension> </xsd:simpleContent></xsd:complexType><xsd:simpleType name="Enum_HotelTypes_Base"> <xsd:restriction base="xs:string"> <xsd:enumeration value="Motel"/> <xsd:enumeration value="Hotel"/> <xsd:enumeration value="Other_"/> </xsd:restriction></xsd:simpleType>

Schema Example

<Enumeration_Open name="Enum_HotelTypes"><Documentation>

<Description>An open list of hotel types.</Description><Developer>This is a string list of enumerations with an

"Other_" literal to support an open enumeration list. Use the "Other_" value in combination with the @code and other extension attributes to exchange a literal that is not in the list and is known to your trading partners.</Developer>

<OtherDoc context="OpenTravel CodeList">Source: Property Type</OtherDoc>

</Documentation><Value literal="Motel"/><Value literal="Hotel"/>

</Enumeration_Open>

OTM File Example

Component Library: Open Enumeration

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Value With Attributes

Groups of attributes related to a single base value that may be a simpleType or complexType open

enumeration.

ota2: Model Stereotype Icon

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Value With Attributes

• May have one or more Attribute and/ or Boolean indicator collections

• Typically replaces 1.0 attributeGroups

• Promotes re-use

• Examples• Equipment• Fees• Locations• Loyalty Level• Operation Times• Seat

• Associated 2.0 Component Builders

• Documentation (base value and attributes and/ or indicators)

• Equivalent• Example

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:complexType name="Tax"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="ValueWithAttributes">Tax</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:simpleContent>

<xsd:extension base="xsd:positiveInteger"><xsd:attribute name="amount"

type="ota2:PositiveValueUnder1M" use="optional"/><xsd:attribute name="taxCode" type="xsd:string"

use="optional"/><xsd:attribute name="taxName" type="xsd:string"

use="optional"/><xsd:attribute name="ticketingCode"

type="xsd:string" use="required"><xsd:annotation>

<xsd:documentation source="Description">Required tax code used by ticketing.</xsd:documentation>

</xsd:annotation></xsd:attribute>

</xsd:extension></xsd:simpleContent>

</xsd:complexType>

Schema Example

<ValueWithAttrs name="Tax" type="xsd:positiveInteger"><Attribute name="amount" type="PositiveValueUnder1M"/><Attribute name="taxCode" type="xsd:string"/><Attribute name="taxName" type="xsd:string"/><Attribute mandatory="true" name="ticketingCode" type="xsd:string">

<Documentation><Description>Required tax code used by

ticketing.</Description></Documentation>

<Example context="Profile">R33</Example></Attribute>

</ValueWithAttrs>

OTM File Example

Component Library: Value With Attributes

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Core Object

A complexType that serves as a container for application data that defines common representations

of real world objects.

ota2: Model Stereotype Icon

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Core Object

• Commonly used as building blocks for Business Objects

• Typically not implementer extensible…

• …but may extend another Core Components

• Unique ID (xsd:ID) attribute included by Library Builder

• Examples• Address• Phone Number• Payment Card

• Associated 2.0 Component Builders

• Documentation • Equivalent• Extension• Aliases• Simple Facet• Summary Facet• Detail Facet• Roles

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Core Object

May have a property that is a typed Business object, but it can ONLY be the ID facet of the business object.

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:element name="PaymentCardSubGrp" type="ota2:PaymentCard_Summary"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation></xsd:element>

<xsd:element name="PaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"

type="ota2:PaymentCard_Summary"/>

<xsd:element name="PaymentCardSummary"substitutionGroup="ota2:PaymentCardSubGrp"

type="ota2:PaymentCard_Summary"/>

<xsd:element name="PrimaryPaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"

type="ota2:PaymentCard_Summary"/>

<xsd:element name="AlternatePaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"

type="ota2:PaymentCard_Summary"/>

<xsd:element name="SecondaryPaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"

type="ota2:PaymentCard_Summary"/>

<xsd:element name="BusinessPaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"

type="ota2:PaymentCard_Summary"/>

<xsd:element name="PersonalPaymentCard"substitutionGroup="ota2:PaymentCardSubGrp"

type="ota2:PaymentCard_Summary"/>

<xsd:element name="PaymentCardDetail"substitutionGroup="ota2:PaymentCard" type="ota2:PaymentCard_Detail"/>

Schema Example (1/5)

Component Library: Core Object

Ro

les

Su

bG

rp D

efin

itio

n

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:element name= "DebitCardSubGrp" type="ota2:PaymentCard_Summary"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation></xsd:element>

<xsd:element name= "DebitCard" substitutionGroup="ota2:DebitCardSubGrp" type="ota2:PaymentCard_Summary"/>

<xsd:element name= "DebitCardSummary" substitutionGroup="ota2:DebitCardSubGrp" type="ota2:PaymentCard_Summary"/>

<xsd:element name= "DebitCardDetail" substitutionGroup="ota2:DebitCard" type="ota2:PaymentCard_Detail"/>

<xsd:simpleType name="PaymentCard_Simple"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:restriction base="ota2:PaymentCard_Number"/>

</xsd:simpleType>

<xsd:simpleType name="PaymentCard_Simple_List"><xsd:list itemType="ota2:PaymentCard_Simple"/>

</xsd:simpleType>

Schema Example (2/5)

Alia

sS

imp

le F

orm

Component Library: Core Object

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:complexType name="PaymentCard_Summary"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:sequence>

<xsd:element minOccurs="0" name="Number" type="ota2:PaymentCard_Simple"/>

<xsd:element minOccurs="0" ref="ota:ExtensionPoint_Summary"/>

</xsd:sequence><xsd:attribute name="expire" type="ota2:Date_MMYY"

use="optional"/><xsd:attribute name="holder" type="ota2:String_Name"

use="optional"/><xsd:attribute name="role"

type="ota2:Enum_PaymentCardRole_Base"/></xsd:complexType>

Schema Example (3/5)

Su

mm

ary

Fa

cet

Component Library: Core Object

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:complexType name="PaymentCard_Detail"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:complexContent>

<xsd:extension base="ota2:PaymentCard_Summary"><xsd:sequence>

<xsd:group ref="ota2:PaymentCard_Detail_Base"/>

<xsd:element minOccurs="0" ref="ota:ExtensionPoint_Info"/>

</xsd:sequence><xsd:attributeGroup

ref="ota2:PaymentCard_Detail_Attr_Base"/></xsd:extension>

</xsd:complexContent></xsd:complexType>

<xsd:group name="PaymentCard_Detail_Base"><xsd:sequence>

<xsd:element minOccurs="0" name="Issuer" type="ota2:PaymentCard_Issuer"/>

<xsd:element minOccurs="0" name="MagneticStrip" type="ota2:PaymentCard_MagneticStrip"/>

</xsd:sequence></xsd:group>

<xsd:attributeGroup name="PaymentCard_Detail_Attr_Base"><xsd:attribute name="type" type="ota2:PaymentCard_Type" use="optional"/><xsd:attribute name="effective" type="ota2:Date_MMYY" use="optional"/><xsd:attribute name="signatureOnFileInd" type="xsd:boolean"

use="optional"/><xsd:attribute name="isValidInd" type="xsd:boolean" use="optional"/>

</xsd:attributeGroup>

Schema Example (4/5)

De

tail

Fa

cet

Component Library: Core Object

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:complexType name="Enum_PaymentCardRole"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="CoreObject">PaymentCard</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:simpleContent>

<xsd:extension base="ota2:Enum_PaymentCardRole_Base"><xsd:attribute name="extension"

type="xsd:string"/></xsd:extension>

</xsd:simpleContent></xsd:complexType>

<xsd:simpleType name="Enum_PaymentCardRole_Base"><xsd:restriction base="xsd:string">

<xsd:enumeration value="Primary"/><xsd:enumeration value="Alternate"/><xsd:enumeration value="Secondary"/><xsd:enumeration value="Business"/><xsd:enumeration value="Personal"/>

</xsd:restriction></xsd:simpleType>

Schema Example (5/5)

Ro

le E

nu

me

ratio

n

Component Library: Core Object

© 2012 OpenTravel Alliance | www.opentravel.org

<CoreObject name="PaymentCard" notExtendable="false"><Aliases>DebitCard CreditCard</Aliases><Simple type="PaymentCard_Number"/><Summary>

<Attribute name="expire" type="Date_MMYY"><Example context="Profile">0714</Example>

</Attribute><Attribute name="holder" type="String_PersonName">

<Example context="Profile">John Smith</Example></Attribute><Element name="Number" repeat="0" type="PaymentCard_Simple"/>

</Summary><Detail>

<Attribute name="type" type="Enum_PaymentCardType"><Example context="Profile">Visa</Example>

</Attribute><Attribute name="effective" type="Date_MMYY"/><Element name="Issuer" repeat="0" type="PaymentCard_Issuer">

<Example context="Profile">First Bank of Travel</Example>

</Element><Element name="MagneticStrip" repeat="0"

type="PaymentCard_MagneticStrip"/><Element name="Employment" repeat="0" type="Employment"/><Element name="PresentEmployment" repeat="0"

type="PresentEmployment"/><Indicator name="signatureOnFile"/><Indicator name="isValid"/>

</Detail><Roles>

<Role value="Primary"/><Role value="Alternate"/><Role value="Secondary"/><Role value="Business"/><Role value="Personal"/>

</Roles></CoreObject>

OTM File Example

Component Library: Core Object

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Business Object

A complexType that is a containers for application data (such as an itinerary or a traveler profile) that is

commonly query-able and exists as a standalone object.

ota2: Model Stereotype Icon

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Business Object

• May be comprised of one or more other Business objects or Core objects

• Typically implementer extensible

• Examples• Reservation• Seat Map• Electronic Proposal Request

• Associated 2.0 Component Builders

• Documentation • Equivalent• Extension• Aliases• ID Facet• Summary Facet• Detail Facet• Query Facet• Custom Facet

© 2012 OpenTravel Alliance | www.opentravel.org

Optimum extensibility provided via a repeating Custom facet.

Component Library: Business Object

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:element name="ProfileSubGrp" type="ota2:Profile_ID"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation></xsd:element>

<xsd:element name="ProfileID" substitutionGroup="ota2:ProfileSubGrp" type="ota2:Profile_ID"/>

<xsd:element name="ProfileIdentifier"substitutionGroup="ota2:ProfileSubGrp" type="ota2:Profile_ID"/>

<xsd:element name="Profile" substitutionGroup="ota2:ProfileID" type="ota2:Profile_Summary"/>

<xsd:element name="ProfileSummary"substitutionGroup="ota2:ProfileSubGrp" type="ota2:Profile_Summary"/>

<xsd:element name="ProfileDetail" substitutionGroup="ota2:Profile" type="ota2:Profile_Detail"/>

<xsd:element name="ProfileLegacy" substitutionGroup="ota2:Profile" type="ota2:Profile_Legacy"/>

<xsd:element name="ProfileProfileQuery" type="ota2:Profile_Profile_Query"/>

Schema Example (1/5)

Su

bG

rp’s

De

finiti

on

Component Library: Business Object

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:complexType name="Profile_ID"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:sequence>

<xsd:element minOccurs="1" name="ProfileID" type="xsd:string"/></xsd:sequence><xsd:attribute name="Authority" type="xsd:string" use="required"/>

</xsd:complexType>

<xsd:complexType name="Profile_Summary"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:complexContent>

<xsd:extension base="ota2:Profile_ID"><xsd:sequence>

<xsd:group ref="ota2:Profile_Summary_Base"/><xsd:element minOccurs="0"

ref="ota:ExtensionPoint_Summary"/></xsd:sequence>

</xsd:extension></xsd:complexContent>

</xsd:complexType>

<xsd:group name="Profile_Summary_Base"><xsd:sequence>

<xsd:element minOccurs="0" name="Name" type="ota2:String_Name"/><xsd:element minOccurs="0" ref="ota2:EmploymentSubGrp"/><xsd:element maxOccurs="5" minOccurs="0" ref="ota2:PaymentCardDetail"/><xsd:element minOccurs="0" ref="ota2:HomePhone"/><xsd:element minOccurs="0" ref="ota2:MobilePhone"/><xsd:element minOccurs="0" ref="ota2:WorkPhone"/>

</xsd:sequence></xsd:group>

Schema Example (2/5)

ID F

ace

tS

um

ma

ry F

ace

t

Component Library: Business Object

© 2012 OpenTravel Alliance | www.opentravel.org

<<xsd:complexType name="Profile_Detail"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:complexContent>

<xsd:extension base="ota2:Profile_Summary"><xsd:sequence>

<xsd:group ref="ota2:Profile_Detail_Base"/>

<xsd:element minOccurs="0" ref="ota:ExtensionPoint_Detail"/>

</xsd:sequence><xsd:attributeGroup

ref="ota2:Profile_Detail_Attr_Base"/></xsd:extension>

</xsd:complexContent></xsd:complexType>

<xsd:group name="Profile_Detail_Base"><xsd:sequence>

<xsd:element minOccurs="0" name="Remarks" type="ota2:String_Long"/>

</xsd:sequence></xsd:group>

<xsd:attributeGroup name="Profile_Detail_Attr_Base"><xsd:attribute name="ShareIndInd" type="xsd:boolean" use="optional"/><xsd:attribute name="SyncIndInd" type="xsd:boolean" use="optional"/><xsd:attribute name="HoldIndInd" type="xsd:boolean" use="optional"/>

</xsd:attributeGroup>

Schema Example (3/5)

De

tail

Fa

cet

Component Library: Business Object

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:complexType name="Profile_Legacy"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:complexContent>

<xsd:extension base="ota2:Profile_Summary"><xsd:sequence>

<xsd:group ref="ota2:Profile_Legacy_Base"/>

<xsd:element minOccurs="0" ref="ota:ExtensionPoint_Custom"/>

</xsd:sequence><xsd:attributeGroup

ref="ota2:Profile_Legacy_Attr_Base"/></xsd:extension>

</xsd:complexContent></xsd:complexType>

<xsd:group name="Profile_Legacy_Base"><xsd:sequence>

<xsd:element minOccurs="0" name="Remarks" type="ota2:String_Long"/>

</xsd:sequence></xsd:group>

<xsd:attributeGroup name="Profile_Legacy_Attr_Base"><xsd:attribute name="ShareIndInd" type="xsd:boolean" use="optional"/>

</xsd:attributeGroup>

Schema Example (4/5)

Cu

sto

m F

ace

t

Component Library: Business Object

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:complexType name="Profile_Profile_Query"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="BusinessObject">Profile</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:sequence>

<xsd:element maxOccurs="3" minOccurs="0" name="PhoneNumber"

type="ota2:Phone_Simple_List"/><xsd:element minOccurs="0"

ref="ota:ExtensionPoint_Query"/></xsd:sequence>

</xsd:complexType>

Schema Example (5/5)

Qu

ery

Fa

cet

Component Library: Business Object

© 2012 OpenTravel Alliance | www.opentravel.org

<BusinessObject name="Profile" notExtendable="false"><Aliases>TravelerProfile</Aliases><ID>

<Attribute mandatory="true" name="Authority" type="xsd:string"><Equivalent context="Legacy"/><Example context="Profile">Auth1</Example>

</Attribute><Element mandatory="true" name="ProfileID" repeat="0"

type="ota2:InitiatorID"><Equivalent context="Legacy"/>

</Element></ID><Summary>

<Element name="Name" repeat="0" type="String_PersonName"/><Element name="PaymentCard_Detail_List" repeat="0"

type="PaymentCard_Detail_List"/><Element name="PresentEmployment" repeat="0" type="PresentEmployment"/>

</Summary><Detail>

<Element name="Remarks" repeat="0" type="ota2:String_Long"/><Element name="HomePhone" repeat="0" type="HomePhone"/><Element name="MobilePhone" repeat="0" type="MobilePhone"/><Element name="WorkPhone" repeat="0" type="WorkPhone"/><Element name="Age" repeat="0" type="Age"/><Indicator name="Share"/><Indicator name="Sync"/><Indicator name="Hold"/>

</Detail><Query context="Profile" label="" notExtendable="true">

<Element name="PhoneNumber" repeat="0" type="Phone_Simple_List"/><Element name="PaymentCard" repeat="0" type="PaymentCard"/>

</Query><Custom context="Legacy" notExtendable="false">

<Element name="Remarks" repeat="0" type="ota2:String_Long"><Example context="Profile">Remarks</Example>

</Element><Indicator name="Share"/>

</Custom></BusinessObject>

OTM File Example

Component Library: Business Object

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Service

A collection of 2.0 components that support interoperable machine-to-machine interaction over a network specified in

Web Services Description Language (WSDL) format.

ota2: Model Stereotype Icon

© 2012 OpenTravel Alliance | www.opentravel.org

Component Library: Service

• Service operation patterns

• Request• Response• Notification

• Response may include data or a simple acknowledgement

• Associated 2.0 Component Builders

• Documentation • Equivalent• Operation

© 2012 OpenTravel Alliance | www.opentravel.org

SOAP Style Naming Convention.

SOAP: 2.0 Service Operation Verb, Noun, Operation

Verb Noun Service Name Operation Names

Read DemandTicket AirDemandTicket ReadRQ

Read DemandTicket AirDemandTicket ReadRS

Read Fare AirFare ReadRQ

Read Fare AirFare ReadRS

Component Library: Service

© 2012 OpenTravel Alliance | www.opentravel.org

<xsd:element name="CreateRQ"substitutionGroup="Request_Payload" type="ota2:Create_RQ"/>

<xsd:complexType name="Create_RQ"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="Operation">ProfileService_Create</otm:OTA2Entity></xsd:appinfo>

</xsd:annotation><xsd:complexContent>

<xsd:extension base="Request_Payload"><xsd:sequence>

<xsd:element minOccurs="0" ref="ota2:ProfileDetail"/>

</xsd:sequence></xsd:extension>

</xsd:complexContent></xsd:complexType>

<xsd:element name="CreateRS"substitutionGroup="Response_Payload" type="ota2:Create_RS"/>

<xsd:complexType name="Create_RS"><xsd:annotation>

<xsd:appinfo><otm:OTA2Entity

type="Operation">ProfileService_Create</otm:OTA2Entity></xsd:appinfo></xsd:annotation>

<xsd:complexContent><xsd:extension base="Response_Payload">

<xsd:sequence><xsd:element minOccurs="0"

ref="ota2:ProfileIdentifier"/></xsd:sequence>

</xsd:extension></xsd:complexContent>

</xsd:complexType>

Schema Example (1/2)

Component Library: Service

© 2012 OpenTravel Alliance | www.opentravel.org

< <!-- ****************************************************** - Library: OTA2_ProfileDraft - Service: ProfileService - Message: ProfileModify-->

<xsd:element xmlns="http://www.OpenTravel.org/ns/OTA2/Library_v01_01" xmlns:ns3="http://www.opentravel.org/ns/OTA2/Profile" name="ProfileModifyRQ" substitutionGroup="OTA2_Payload" type="ns3:ProfileModifyRQ"> <xsd:annotation> <xsd:appinfo><lib:Library library="OTA2_Test"

service="ProfileService">ProfileModify</lib:Library></xsd:appinfo> </xsd:annotation> </xsd:element>

<xsd:complexType name="ProfileModifyRQ"> <xsd:complexContent> <xsd:extension xmlns=http://www.opentravel.org/ns/OTA2/Library_v01_01

base="OTA2_Payload"> <xsd:sequence> <xsd:element ref="Profile"/> <xsd:element minOccurs="0" ref="ExtensionPoint"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType>

<xsd:element xmlns="http://www.opentravel.org/ns/OTA2/Library_v01_01" . . .

Schema Example (2/2)

Component Library: Service

© 2012 OpenTravel Alliance | www.opentravel.org

<Service namespace="http://www.opentravel.org/ns/OTA2/Profile"name="ProfileService“ version="1.0.1">

<Operation Name="ProfileCreate"><Request>

<Element name="Profile" type="Profile"/></Request><Response>

<Element name="Profile" type="Profile_ID"/></Response>

</Operation>

<Operation Name="ProfileMerge"><Request>

<Element name="Profile" type="Profile"/><Element name="Profile2" type="Profile"/>

</Request><Response>

<Element name="Profile" type="Profile_ID"/></Response>

</Operation></Service>

OTM File Example

Component Library: Service

UML models just got cool.

OpenTravel Interoperability Framework

Questions?Bonnie LowellSpecification ArchitectOpenTravel Alliance

bonnie.lowell@opentravel.org

top related