SlideShare ist ein Scribd-Unternehmen logo
1 von 85
Downloaden Sie, um offline zu lesen
The Model-Driven Standard
        Advantage
                      The OpenTravel
           Interoperability Framework
             and 2.0 XML Object Suite
                            Mechanics

                          OpenTravel Alliance
                          www.opentravel.org
Discussion Points

•   About OpenTravel
•   Open-Model Standards for the Travel Industry
•   The OpenTravel Interoperability Framework
     •   Introduction & Benefits
     •   Framework Components “At a Glance”
•   The OpenTravel XML Object Suite Specification




                               © 2012 OpenTravel Alliance | www.opentravel.org
About
  OpenTravel


              The OpenTravel Alliance provides a community where
          companies in the electronic distribution supply chain work
  together to create an accepted structure for electronic messages,
              enabling suppliers and distributors to speak the same
        interoperability language, trading partner to trading partner.




                         © 2012 OpenTravel Alliance | www.opentravel.org
Since…

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




            Since…

            2001
                                                               OpenTravel has been
                                                               producing open standards for
                                                               the travel industry.




             © 2012 OpenTravel Alliance | www.opentravel.org
Since…

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




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




             © 2012 OpenTravel Alliance | www.opentravel.org
Open-Model
  Model 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



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



                            •   A paradigm shift to “neutral” industry standards for the travel
                                industry
                                  –       Platform/ tooling neutral
                                  –       Architectural style neutral
                                  –       Support travel industry ecosystem business processes and transactions
                            •    Meets the pace of travel industry innovation
                                  –       Enhancements made at the model level
                                  –       Model publishing not labor intensive

                            •   Places emphasis on common information exchange modeling
Model Driven Architecture




                                  –       OpenTravel CIEM is the model foundation

                            •   Includes…
                                  –       A collection of UML information models
                                  –       One or more transformation definitions and models
                                      •     XML, JAVA, JiBX, JSON, .NET, etc.
                                  –       One or more implementation models

                            •   Created in a model driven architecture/ tooling environment


                                                             © 2012 OpenTravel Alliance | www.opentravel.org
Model Driven Standards » Model Driven Architecture (MDA) Overview




                            MDA is a framework for software development
                            •   Defined by the Object Management Group (OMG)
                            •   MDA places importance on models in the software development process
                            •   The software development process is driven by the activity of modeling
                                your software system


                                 Key Benefits for Implementers                            Key Benefits for OpenTravel




                                      Productivity                                                 Domain Modeling
Model Driven Architecture




                                      Portability                                                  CIEM Quality/ Reuse

                                      Interoperability                                             Platform Neutrality




                                                        © 2012 OpenTravel Alliance | www.opentravel.org
Model Driven Architecture (MDA) » Building Blocks




                                        It’s mostly about the model…


                                      Model                                    Model Language
                             Description of a system.                                 A model is written in a
                                                                                      well-defined language.
                            PIM (independent)                                                                     UML
                                                                                                                   OCL
                            PSM (specific)                                                            (Object Constraint
                                                                                                            Language )




                                                                                                           PIM to Code
                            Meta Object Facility                                                          PSM to Code
Model Driven Architecture




                            (MOF)                                                                    Specific source
                            Source to target language.                                                        model.
                             Transformation                                      Transformation
                                Definition                                            Tool


                             …but transformations are important too!

                                                   © 2012 OpenTravel Alliance | www.opentravel.org
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 Framework
                                                               Interoperability just got cool.




             © 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel Interoperability Framework (OTIF) » Introduction



                                             The OTIF Framework uses a
                                           model driven architecture (MDA)
                             to better serve OpenTravel members, schema implementers
                                          and the travel industry as a whole.




                    •   Provides “open” common
                        representational models of
Framework




                        all data and business
                        functionality contained in
                        OpenTravel specifications
I nteroperability




                    •   Streamlines OpenTravel
                        standards development
Open Travel




                                                   © 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel Interoperability Framework (OTIF) » Key Benefits




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

                    •   Reduced schema enhancement time
                         •   Schema enhancements at the model level produce final
                             publication
                    •   Reduced implementation time & cost
                         •   UML-based models integrate with enterprise level
Framework




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




                        Increased schema quality
                         •   Interoperable framework components ensure optimum
                             reuse and reduce redundancy
                    •   Improved schema governance
                         •   Best practices and policies integrated at the tooling
                             level
                    •   Reference XML transformation
Open Travel




                                                      © 2012 OpenTravel Alliance | www.opentravel.org
Framework Components
  At a Glance
      Continuous XML component model refinement.




                         © 2012 OpenTravel Alliance | www.opentravel.org
OTIF Key Framework Key Components




                    Four key framework components interoperate for continuous
                                 XML component model refinement.
Framework
I nteroperability
Open Travel




                                        © 2012 OpenTravel Alliance | www.opentravel.org
Key Components » Canonical Model



                       OpenTravel Lexis Canonical Model

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

 NORMALIZED TERMS




 211
CONTEXTUAL FACETS



 1067



<<InformationModel>>
Key Components » UML and Data Models


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




UML MODELS




273



                            © 2012 OpenTravel Alliance | www.opentravel.org
Key Components » OpenTravel Library Builder



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




46
BUSINESS OBJECTS

                    1
                    2
                    3




77
CORE OBJECTS




                                  © 2012 OpenTravel Alliance | www.opentravel.org
Key Components » Solution Builder



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


XML Cookbooks
   Schema
  Dictionaries
   Data Model
  UML Models
 Travel Glossary
 Implementation
     Matrix
OpenTravel Forum




                                  © 2012 OpenTravel Alliance | www.opentravel.org
© 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel XML Object Suite Component Library



                A View from the Top
A hierarchy of XML objects and services comprise the
         XML Object Suite component library




               © 2012 OpenTravel Alliance | www.opentravel.org
Model Constructs
Key Constructs Used in the XML Object Suite Model




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

                                                                       Alias 1



          Term                                                  CreditCard


       PaymentCard



                                                                 DebitCard


                                                                       Alias 2




                     © 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Aliases>




 OTM File Example
<CoreObject name="PaymentCard" notExtendable="false">
  <Aliases>DebitCard CreditCard</Aliases>
    <Simple type="PaymentCard_Number"/>
    <Summary>
      <Attribute name="expire" type="Date_MMYY">
        <Example context="Profile">0714</Example>
      </Attribute>
      <Attribute name="holder" type="String_PersonName">
        <Example context="Profile">John Smith</Example>
      </Attribute>
      <Element name="Number" repeat="0" type="PaymentCard_Simple"/>
    </Summary>
  . . .



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

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

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




                                    © 2012 OpenTravel Alliance | www.opentravel.org
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>




 OTM File Example
<CoreObject name="PaymentCard" notExtendable="false">
  <Aliases>Card CreditCard</Aliases>
    <Simple type="PaymentCard_Number"/>
    <Summary>
      <Attribute name="expire" type="Date_MMYY">
        <Example context="Profile">0714</Example>
      </Attribute>
      <Attribute name="holder" type="String_PersonName">
        <Example context="Profile">Joe E Smith</Example>
      </Attribute>
      <Element name="Number" repeat="0" type="PaymentCard_Simple"/>
    </Summary>
  . . .



                                                                                     OTM Model Definition
<xsd:complexType name="Attribute">
  <xsd:sequence>
    <xsd:element ref="Documentation" minOccurs="0"/>
    <xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/>
    <xsd:element ref="Example" minOccurs="0" maxOccurs="100"/>
  </xsd:sequence>
  <xsd:attribute name="name" type="Name_XML" use="required"/>
  <xsd:attribute name="type" type="Name_Type" use="required"/>
  <xsd:attribute name="mandatory" type="xsd:boolean" use="optional"/>
</xsd:complexType>




                                   © 2012 OpenTravel Alliance | www.opentravel.org
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>




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


                                                                                     OTM Model Definition
<xsd:complexType name="Documentation">
  <xsd:sequence>
    <xsd:element name="Description" type="Description"/>
    <xsd:element name="Developer" type="Description" minOccurs="0" maxOccurs="10"/>
    <xsd:element name="Deprecated" type="Description" minOccurs="0" maxOccurs="10"/>
    <xsd:element name="Reference" type="xsd:anyURI" minOccurs="0" maxOccurs="10"/>
    <xsd:element name="MoreInfo" type="xsd:anyURI" minOccurs="0" maxOccurs="10"/>
   <xsd:element name="OtherDoc" type="AdditionalDoc" minOccurs="0" maxOccurs="10"/>
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="AdditionalDoc">
  <xsd:complexContent>
    <xsd:extension base="Description">
      <xsd:attribute name="context" type="xsd:string" use="required“/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>



                                   © 2012 OpenTravel Alliance | www.opentravel.org
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>



 OTM File Example
. . .
<Detail>
  <Attribute name="type" type="PaymentCard_Type">
    <Example context="Profile">Visa</Example>
  </Attribute>
  <Attribute name="effective" type="Date_MMYY"/>
  <Element name="Issuer" repeat="0" type="PaymentCard_Issuer"/>
</Detail>




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

<xsd:complexType name="Property">
  <xsd:sequence>
    <xsd:element ref="Documentation" minOccurs="0"/>
    <xsd:element ref="Equivalent" minOccurs="0" maxOccurs="100"/>
    <xsd:element ref="Example" minOccurs="0" maxOccurs="100"/>
  </xsd:sequence>
  <xsd:attribute name="name" type="Name_XML" use="required"/>
  <xsd:attribute name="type" type="Name_Type" use="required"/>
  <xsd:attribute name="mandatory" type="xsd:boolean" use="optional"/>
  <xsd:attribute name="repeat">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string">
        <xsd:pattern value="[0-9]+|*"/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>
</xsd:complexType>



                                   © 2012 OpenTravel Alliance | www.opentravel.org
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>




 OTM File Example
<xsd:complexType name="Age">
  <xsd:annotation>
    <xsd:appinfo>
      <otm:OTA2Entity type="ValueWithAttributes">Age</otm:OTA2Entity>
      <otm:Equivalent context="Profile">Age</otm:Equivalent>
      <otm:Example context="Profile">25</otm:Example>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:integer">
      <xsd:attribute name="birthDate" type="xsd:date" use="optional"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>



                                                                                     OTM Model Definition
<xsd:complexType name="Equivalent">
  <xsd:simpleContent>
    <xsd:extension base="xsd:string">
      <xsd:attribute name="context" type="xsd:string" use="required"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>




                                   © 2012 OpenTravel Alliance | www.opentravel.org
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>




 OTM File Example
<xsd:complexType name="Age">
  <xsd:annotation>
    <xsd:appinfo>
      <otm:OTA2Entity type="ValueWithAttributes">Age</otm:OTA2Entity>
      <otm:Equivalent context="Profile">Age</otm:Equivalent>
      <otm:Example context="Profile">25</otm:Example>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:integer">
      <xsd:attribute name="birthDate" type="xsd:date" use="optional"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>




                                                                                     OTM Model Definition
<xsd:element name="Example" type="Example"/>
<xsd:complexType name="Example">
  <xsd:simpleContent>
    <xsd:extension base="xsd:string">
      <xsd:attribute name="context" type="xsd:string" use="required"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>




                                   © 2012 OpenTravel Alliance | www.opentravel.org
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>



 OTM File Example
<BusinessObject name="Profile" notExtendable="false">
  <ID>. . .</ID>
  <Summary>. . .</Summary>
  <Detail>. . . </Detail>
  <Query context="Profile" label="" notExtendable="true">
    . . .
  </Query>
  <Custom context="Legacy" label="" notExtendable="false">
    <Element name="Remarks" repeat="0" type="ota2:String_Long"/>
  </Custom>
</BusinessObject>


                                                                                     OTM Model Definition
<xsd:element name="Extension" type="Extension"/>
<xsd:complexType name="Extension">
  <xsd:sequence>
    <xsd:element ref="Documentation" minOccurs="0"/>
    </xsd:sequence>
  <xsd:attribute name="extends" type="Name_Type" use="required"/>
</xsd:complexType>

<xsd:element name="ExtensionPointFacet" type="ExtensionPointFacet"/>
<xsd:complexType name="ExtensionPointFacet">
  <xsd:complexContent>
    <xsd:extension base="Facet">
      <xsd:sequence>
        <xsd:element ref="Extension"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>


                                   © 2012 OpenTravel Alliance | www.opentravel.org
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>



OTM File Example
<BusinessObject name="Profile" notExtendable="false">

 <Aliases>TravelerProfile</Aliases>

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

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

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

 <Query context="Profile" label="" notExtendable="true">
   <Element name="PhoneNumber" repeat="0" type="Phone_Simple_List"/>
   <Element name="PaymentCard" repeat="0" type="PaymentCard"/>
 </Query>

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

</BusinessObject>



                                  © 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <Facet>




                                                                                    OTM Model Definition
<xsd:complexType name="Facet">
  <xsd:sequence>
    <xsd:element ref="Documentation" minOccurs="0"/>
    <xsd:element ref="Attribute" minOccurs="0" maxOccurs="100"/>
    <xsd:element name="Element" type="Property" minOccurs="0" maxOccurs="100"/>
    <xsd:element ref="Indicator" minOccurs="0" maxOccurs="100"/>
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Facet_Contextual">
  <xsd:complexContent>
    <xsd:extension base="Facet">
      <xsd:sequence>
        <xsd:element name="ElementRef" type="Name_XML" minOccurs="0" maxOccurs="100"/>
      </xsd:sequence>
      <xsd:attribute name="context" type="Name_XML" use="required"/>
      <xsd:attribute name="label" type="Name_XML" use="optional"/>
      <xsd:attribute name="notExtendable" type="xsd:boolean" use="optional"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

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




                                  © 2012 OpenTravel Alliance | www.opentravel.org
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>




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




                                                                                    OTM Model Definition
<xsd:element name="Indicator" type="Indicator"/>

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




                                  © 2012 OpenTravel Alliance | www.opentravel.org
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>



 OTM File Example
<CoreObject name="Phone" notExtendable="false">
  <Summary>
    <Attribute name="Country" type="String_Short"/>
  </Summary>
  <Detail>
    . . .
  </Detail>
  <Roles>
    <Role value="Home"/>
    <Role value="Work"/>
    <Role value="Mobile"/>
    </Roles>
</CoreObject>



                                                                                    OTM Model Definition
<xsd:element name="Role" type="Role"/>

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

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



                                  © 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <SubGrp>


Provide key mechanism for light weight services
•   Allow defined Core and Business object facets to be substituted for one another
      •   ID, Summary and Detail facets contain varying amounts of object metadata
            •   Substituted facets are hierarchal
      •   One facet is bound to during XML binding
      •   Custom may include Summary or Detail in addition to ID


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

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

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




                                        © 2012 OpenTravel Alliance | www.opentravel.org
Component Builders: <SubGrp>



                                   Core Object Example

                                                                                         Where this is in the
       Core Object Sub-Group has 4 elements                                                  schema
       •       Core Object SubGrp is head of substitution
               group
       •       Use Summary and Detail to avoid                                          This can be in the data
               substitution
       Alias Sub-Group has 4 elements
       Extension Sub-Group has 4 elements                                                      And this




PhoneSubGrp                             TeleSubGrp                                               PhoneExSubGrp



              PhoneSummary                                   TeleSummary
                                                                                                                PhoneExSummary

   Phone                                     Tele
                                                                                                   PhoneEx



PhoneDetail                              TeleDetail
                                                                                                PhoneExDetail


           Core                                         Alias                                             Extension




                                      © 2012 OpenTravel Alliance | www.opentravel.org
Component Library
XML Message Suite Components Used to Construct Interoperable Web Services
                      with OpenTravel Payloads




                         © 2012 OpenTravel Alliance | www.opentravel.org
OpenTravel XML Object Suite Component Library

             Back to the view from the top
         A hierarchy of xml objects comprise the
          XML Object Suite component library




                 © 2012 OpenTravel Alliance | www.opentravel.org
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
Component Library: Simple Type as Base




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




                                                                                 OTM File Example
<Simple minLength="0" maxLength="0" type="String_Short"
         ex="Sally Smythe" name="String_PersonName">
  <Documentation>
    <Description>Unstructured name of a person.</Description>
    <Reference>http://dictionary.opentravel.org</Reference>
    <OtherDoc use="OTA1">PersonWhoIsRentingTheCar</OtherDoc>
    <OtherDoc use="IATA">PADIS code A468902894</OtherDoc>
   </Documentation>
</Simple>




                               © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Atomic Type as Base




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




                                                                                 OTM File Example
<Simple type= "xsd:string" ex="A234567890123456" name="Code_ChargeFee"
        minLength="1" maxLength="16" pattern="[A-Z0-9]*">
    <Documentation>
        <Description>Specifies a numeric or alphanumeric charge or
             fee code from 1 to 16 characters in length.</Description>
    </Documentation>
 </Simple>




                               © 2012 OpenTravel Alliance | www.opentravel.org
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                                       Implementer/ OpenTravel
• Static list values                                                 extensible enumerated list
         •   Days of the week                                        • List limited to <= 100 values
•      System actionable list                                        • Reserved “other_” literal
         •   Would require programmatic                                         •       <Developer>This is a string list of
                                                                                        enumerations with an “other_" literal to
             changes if the list was                                                    support an open enumeration list. Use
             extended                                                                   the “other_" value in combination with
               • Record Action                                                          the @code and other extension
                                                                                        attributes to exchange a literal that is
                                                                                        not in the list and is known to your
                                                                                        trading partners.</Developer>




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




                                      © 2012 OpenTravel Alliance | www.opentravel.org
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
Component Library: Closed Enumeration




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



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




                                © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Open Enumeration



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



                                                                                    OTM File Example
<Enumeration_Open name="Enum_HotelTypes">
  <Documentation>
    <Description>An open list of hotel types.</Description>
    <Developer>This is a string list of enumerations with an "Other_" literal to support
an open enumeration list. Use the "Other_" value in combination with the @code and other
extension attributes to exchange a literal that is not in the list and is known to your
trading partners.</Developer>
  <OtherDoc context="OpenTravel CodeList">Source: Property Type</OtherDoc>
  </Documentation>
  <Value literal="Motel"/>
  <Value literal="Hotel"/>
</Enumeration_Open>



                                  © 2012 OpenTravel Alliance | www.opentravel.org
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
Component Library: Value With Attributes


Schema Example
<xsd:complexType name="Tax">
  <xsd:annotation>
    <xsd:appinfo>
      <otm:OTA2Entity type="ValueWithAttributes">Tax</otm:OTA2Entity>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:positiveInteger">
      <xsd:attribute name="amount" type="ota2:PositiveValueUnder1M" use="optional"/>
      <xsd:attribute name="taxCode" type="xsd:string" use="optional"/>
      <xsd:attribute name="taxName" type="xsd:string" use="optional"/>
      <xsd:attribute name="ticketingCode" type="xsd:string" use="required">
        <xsd:annotation>
          <xsd:documentation source="Description">Required tax code used by
ticketing.</xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>


                                                                                    OTM File Example
<ValueWithAttrs name="Tax" type="xsd:positiveInteger">
  <Attribute name="amount" type="PositiveValueUnder1M"/>
  <Attribute name="taxCode" type="xsd:string"/>
  <Attribute name="taxName" type="xsd:string"/>
  <Attribute mandatory="true" name="ticketingCode" type="xsd:string">
    <Documentation>
      <Description>Required tax code used by ticketing.</Description>
    </Documentation>
  <Example context="Profile">R33</Example>
  </Attribute>
</ValueWithAttrs>

                                  © 2012 OpenTravel Alliance | www.opentravel.org
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
Component Library: Core Object


                    Schema Example (1/5)
SubGrp Definition


                    <xsd:element name="PaymentCardSubGrp" type="ota2:PaymentCard_Summary">
                      <xsd:annotation>
                        <xsd:appinfo>
                          <otm:OTA2Entity type="CoreObject">PaymentCard</otm:OTA2Entity>
                        </xsd:appinfo>
                      </xsd:annotation>
                    </xsd:element>

                    <xsd:element name="PaymentCard"
                      substitutionGroup="ota2:PaymentCardSubGrp" type="ota2:PaymentCard_Summary"/>

                    <xsd:element name="PaymentCardSummary"
                      substitutionGroup="ota2:PaymentCardSubGrp" type="ota2:PaymentCard_Summary"/>

                    <xsd:element name="PrimaryPaymentCard"
                      substitutionGroup="ota2:PaymentCardSubGrp" type="ota2:PaymentCard_Summary"/>

                    <xsd:element name="AlternatePaymentCard"
                      substitutionGroup="ota2:PaymentCardSubGrp" type="ota2:PaymentCard_Summary"/>
Roles




                    <xsd:element name="SecondaryPaymentCard"
                      substitutionGroup="ota2:PaymentCardSubGrp" type="ota2:PaymentCard_Summary"/>

                    <xsd:element name="BusinessPaymentCard"
                      substitutionGroup="ota2:PaymentCardSubGrp" type="ota2:PaymentCard_Summary"/>

                    <xsd:element name="PersonalPaymentCard"
                      substitutionGroup="ota2:PaymentCardSubGrp" type="ota2:PaymentCard_Summary"/>

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



                                                  © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Core Object



              Schema Example (2/5)
              <xsd:element name= "DebitCardSubGrp" type="ota2:PaymentCard_Summary">
                <xsd:annotation>
                  <xsd:appinfo>
                    <otm:OTA2Entity type="CoreObject">PaymentCard</otm:OTA2Entity>
                  </xsd:appinfo>
                </xsd:annotation>
              </xsd:element>
 Alias




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

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

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

              <xsd:simpleType name="PaymentCard_Simple">
                <xsd:annotation>
                  <xsd:appinfo>
                    <otm:OTA2Entity type="CoreObject">PaymentCard</otm:OTA2Entity>
Simple Form




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

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




                                           © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Core Object




                Schema Example (3/5)
                <xsd:complexType name="PaymentCard_Summary">
                  <xsd:annotation>
                    <xsd:appinfo>
                      <otm:OTA2Entity type="CoreObject">PaymentCard</otm:OTA2Entity>
Summary Facet




                    </xsd:appinfo>
                  </xsd:annotation>
                  <xsd:sequence>
                    <xsd:element minOccurs="0" name="Number" type="ota2:PaymentCard_Simple"/>
                    <xsd:element minOccurs="0" ref="ota:ExtensionPoint_Summary"/>
                  </xsd:sequence>
                  <xsd:attribute name="expire" type="ota2:Date_MMYY" use="optional"/>
                  <xsd:attribute name="holder" type="ota2:String_Name" use="optional"/>
                  <xsd:attribute name="role" type="ota2:Enum_PaymentCardRole_Base"/>
                </xsd:complexType>




                                         © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Core Object



               Schema Example (4/5)
               <xsd:complexType name="PaymentCard_Detail">
                 <xsd:annotation>
                   <xsd:appinfo>
                     <otm:OTA2Entity type="CoreObject">PaymentCard</otm:OTA2Entity>
                   </xsd:appinfo>
                 </xsd:annotation>
                 <xsd:complexContent>
                   <xsd:extension base="ota2:PaymentCard_Summary">
                     <xsd:sequence>
                       <xsd:group ref="ota2:PaymentCard_Detail_Base"/>
                       <xsd:element minOccurs="0" ref="ota:ExtensionPoint_Info"/>
                     </xsd:sequence>
                     <xsd:attributeGroup ref="ota2:PaymentCard_Detail_Attr_Base"/>
Detail Facet




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

               <xsd:group name="PaymentCard_Detail_Base">
                 <xsd:sequence>
                   <xsd:element minOccurs="0" name="Issuer" type="ota2:PaymentCard_Issuer"/>
                   <xsd:element minOccurs="0" name="MagneticStrip" type="ota2:PaymentCard_MagneticStrip"/>
                 </xsd:sequence>
               </xsd:group>

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



                                            © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Core Object




                   Schema Example (5/5)
                   <xsd:complexType name="Enum_PaymentCardRole">
                     <xsd:annotation>
                       <xsd:appinfo>
                         <otm:OTA2Entity type="CoreObject">PaymentCard</otm:OTA2Entity>
                       </xsd:appinfo>
                     </xsd:annotation>
                     <xsd:simpleContent>
Role Enumeration




                       <xsd:extension base="ota2:Enum_PaymentCardRole_Base">
                         <xsd:attribute name="extension" type="xsd:string"/>
                       </xsd:extension>
                     </xsd:simpleContent>
                   </xsd:complexType>

                   <xsd:simpleType name="Enum_PaymentCardRole_Base">
                     <xsd:restriction base="xsd:string">
                       <xsd:enumeration value="Primary"/>
                       <xsd:enumeration value="Alternate"/>
                       <xsd:enumeration value="Secondary"/>
                       <xsd:enumeration value="Business"/>
                       <xsd:enumeration value="Personal"/>
                     </xsd:restriction>
                   </xsd:simpleType>




                                             © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Core Object


                                                                                    OTM File Example
<CoreObject name="PaymentCard" notExtendable="false">
  <Aliases>DebitCard CreditCard</Aliases>
  <Simple type="PaymentCard_Number"/>
  <Summary>
    <Attribute name="expire" type="Date_MMYY">
      <Example context="Profile">0714</Example>
    </Attribute>
    <Attribute name="holder" type="String_PersonName">
      <Example context="Profile">John Smith</Example>
    </Attribute>
    <Element name="Number" repeat="0" type="PaymentCard_Simple"/>
  </Summary>
  <Detail>
    <Attribute name="type" type="Enum_PaymentCardType">
      <Example context="Profile">Visa</Example>
    </Attribute>
    <Attribute name="effective" type="Date_MMYY"/>
    <Element name="Issuer" repeat="0" type="PaymentCard_Issuer">
      <Example context="Profile">First Bank of Travel</Example>
    </Element>
    <Element name="MagneticStrip" repeat="0" type="PaymentCard_MagneticStrip"/>
    <Element name="Employment" repeat="0" type="Employment"/>
    <Element name="PresentEmployment" repeat="0" type="PresentEmployment"/>
    <Indicator name="signatureOnFile"/>
    <Indicator name="isValid"/>
  </Detail>
  <Roles>
    <Role value="Primary"/>
    <Role value="Alternate"/>
    <Role value="Secondary"/>
    <Role value="Business"/>
    <Role value="Personal"/>
  </Roles>
</CoreObject>


                                  © 2012 OpenTravel Alliance | www.opentravel.org
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
Component Library: Business Object




Optimum extensibility provided via a repeating Custom facet.




                    © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Business Object




                      Schema Example (1/5)
                      <xsd:element name="ProfileSubGrp" type="ota2:Profile_ID">
                        <xsd:annotation>
                          <xsd:appinfo>
                            <otm:OTA2Entity type="BusinessObject">Profile</otm:OTA2Entity>
                          </xsd:appinfo>
                        </xsd:annotation>
                      </xsd:element>

                      <xsd:element name="ProfileID" substitutionGroup="ota2:ProfileSubGrp"
SubGrp’s Definition




                        type="ota2:Profile_ID"/>

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

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

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

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

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

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




                                                    © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Business Object

                 Schema Example (2/5)
                <xsd:complexType name="Profile_ID">
                  <xsd:annotation>
                    <xsd:appinfo>
                       <otm:OTA2Entity type="BusinessObject">Profile</otm:OTA2Entity>
                    </xsd:appinfo>
ID Facet




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

                <xsd:complexType name="Profile_Summary">
                  <xsd:annotation>
                    <xsd:appinfo>
                       <otm:OTA2Entity type="BusinessObject">Profile</otm:OTA2Entity>
                    </xsd:appinfo>
                  </xsd:annotation>
                  <xsd:complexContent>
                    <xsd:extension base="ota2:Profile_ID">
                       <xsd:sequence>
                         <xsd:group ref="ota2:Profile_Summary_Base"/>
Summary Facet




                         <xsd:element minOccurs="0" ref="ota:ExtensionPoint_Summary"/>
                       </xsd:sequence>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>

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



                                                  © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Business Object




               Schema Example (3/5)
               <<xsd:complexType name="Profile_Detail">
                 <xsd:annotation>
                   <xsd:appinfo>
                     <otm:OTA2Entity type="BusinessObject">Profile</otm:OTA2Entity>
                   </xsd:appinfo>
                 </xsd:annotation>
                 <xsd:complexContent>
                   <xsd:extension base="ota2:Profile_Summary">
                     <xsd:sequence>
                       <xsd:group ref="ota2:Profile_Detail_Base"/>
                       <xsd:element minOccurs="0" ref="ota:ExtensionPoint_Detail"/>
                     </xsd:sequence>
Detail Facet




                     <xsd:attributeGroup ref="ota2:Profile_Detail_Attr_Base"/>
                   </xsd:extension>
                 </xsd:complexContent>
               </xsd:complexType>

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

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




                                            © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Business Object




               Schema Example (4/5)
               <xsd:complexType name="Profile_Legacy">
                 <xsd:annotation>
                   <xsd:appinfo>
                     <otm:OTA2Entity type="BusinessObject">Profile</otm:OTA2Entity>
                   </xsd:appinfo>
                 </xsd:annotation>
                 <xsd:complexContent>
                   <xsd:extension base="ota2:Profile_Summary">
                     <xsd:sequence>
                       <xsd:group ref="ota2:Profile_Legacy_Base"/>
                       <xsd:element minOccurs="0" ref="ota:ExtensionPoint_Custom"/>
Custom Facet




                     </xsd:sequence>
                     <xsd:attributeGroup ref="ota2:Profile_Legacy_Attr_Base"/>
                   </xsd:extension>
                 </xsd:complexContent>
               </xsd:complexType>

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

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




                                            © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Business Object




              Schema Example (5/5)

              <xsd:complexType name="Profile_Profile_Query">
               <xsd:annotation>
                 <xsd:appinfo>
                  <otm:OTA2Entity type="BusinessObject">Profile</otm:OTA2Entity>
Query Facet




                 </xsd:appinfo>
               </xsd:annotation>
               <xsd:sequence>
                 <xsd:element maxOccurs="3" minOccurs="0" name="PhoneNumber"
                    type="ota2:Phone_Simple_List"/>
                 <xsd:element minOccurs="0" ref="ota:ExtensionPoint_Query"/>
               </xsd:sequence>
              </xsd:complexType>




                                     © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Business Object


                                                                                       OTM File Example
<BusinessObject name="Profile" notExtendable="false">
  <Aliases>TravelerProfile</Aliases>
  <ID>
    <Attribute mandatory="true" name="Authority" type="xsd:string">
       <Equivalent context="Legacy"/>
       <Example context="Profile">Auth1</Example>
    </Attribute>
    <Element mandatory="true" name="ProfileID" repeat="0" type="ota2:InitiatorID">
       <Equivalent context="Legacy"/>
    </Element>
  </ID>
  <Summary>
    <Element name="Name" repeat="0" type="String_PersonName"/>
    <Element name="PaymentCard_Detail_List" repeat="0" type="PaymentCard_Detail_List"/>
    <Element name="PresentEmployment" repeat="0" type="PresentEmployment"/>
  </Summary>
  <Detail>
    <Element name="Remarks" repeat="0" type="ota2:String_Long"/>
    <Element name="HomePhone" repeat="0" type="HomePhone"/>
    <Element name="MobilePhone" repeat="0" type="MobilePhone"/>
    <Element name="WorkPhone" repeat="0" type="WorkPhone"/>
    <Element name="Age" repeat="0" type="Age"/>
    <Indicator name="Share"/>
    <Indicator name="Sync"/>
    <Indicator name="Hold"/>
  </Detail>
  <Query context="Profile" label="" notExtendable="true">
    <Element name="PhoneNumber" repeat="0" type="Phone_Simple_List"/>
    <Element name="PaymentCard" repeat="0" type="PaymentCard"/>
  </Query>
  <Custom context="Legacy" notExtendable="false">
    <Element name="Remarks" repeat="0" type="ota2:String_Long">
       <Example context="Profile">Remarks</Example>
    </Element>
    <Indicator name="Share"/>
  </Custom>
</BusinessObject>



                                     © 2012 OpenTravel Alliance | www.opentravel.org
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
Component Library: Service




                     SOAP Style Naming Convention.



        SOAP: 2.0 Service Operation Verb, Noun, Operation

Verb          Noun                 Service Name                                  Operation Names


Read   DemandTicket       AirDemandTicket                                   ReadRQ

Read   DemandTicket       AirDemandTicket                                   ReadRS

Read   Fare               AirFare                                           ReadRQ

Read   Fare               AirFare                                           ReadRS




                          © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Service



 Schema Example (1/2)
<xsd:element name="CreateRQ"
  substitutionGroup="Request_Payload" type="ota2:Create_RQ"/>

<xsd:complexType name="Create_RQ">
  <xsd:annotation>
    <xsd:appinfo>
       <otm:OTA2Entity type="Operation">ProfileService_Create</otm:OTA2Entity>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Request_Payload">
       <xsd:sequence>
         <xsd:element minOccurs="0" ref="ota2:ProfileDetail"/>
       </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

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

<xsd:complexType name="Create_RS">
  <xsd:annotation>
    <xsd:appinfo>
       <otm:OTA2Entity type="Operation">ProfileService_Create</otm:OTA2Entity>
    </xsd:appinfo>
    </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Response_Payload">
       <xsd:sequence>
         <xsd:element minOccurs="0" ref="ota2:ProfileIdentifier"/>
       </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>




                                   © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Service



Schema Example (2/2)
< <!-- ******************************************************
 - Library: OTA2_ProfileDraft
 - Service: ProfileService
 - Message: ProfileModify
-->

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

   <xsd:complexType name="ProfileModifyRQ">
       <xsd:complexContent>
           <xsd:extension xmlns=http://www.opentravel.org/ns/OTA2/Library_v01_01
                  base="OTA2_Payload">
               <xsd:sequence>
                   <xsd:element ref="Profile"/>
                   <xsd:element minOccurs="0" ref="ExtensionPoint"/>
               </xsd:sequence>
           </xsd:extension>
       </xsd:complexContent>
   </xsd:complexType>

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




                              © 2012 OpenTravel Alliance | www.opentravel.org
Component Library: Service




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

 <Operation Name="ProfileCreate">
   <Request>
     <Element name="Profile" type="Profile"/>
   </Request>
   <Response>
     <Element name="Profile" type="Profile_ID"/>
   </Response>
 </Operation>

  <Operation Name="ProfileMerge">
    <Request>
      <Element name="Profile" type="Profile"/>
      <Element name="Profile2" type="Profile"/>
    </Request>
    <Response>
      <Element name="Profile" type="Profile_ID"/>
    </Response>
  </Operation>
</Service>




                               © 2012 OpenTravel Alliance | www.opentravel.org
Questions?
                                          Bonnie Lowell
                                          Specification Architect
                                          OpenTravel Alliance

                                          bonnie.lowell@opentravel.org




  OpenTravel Interoperability Framework

UML models just got cool.

Weitere ähnliche Inhalte

Was ist angesagt?

5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
CMIS and Interoperability - AIIM 2009
CMIS and Interoperability - AIIM 2009CMIS and Interoperability - AIIM 2009
CMIS and Interoperability - AIIM 2009johnnewton
 
B vb script11
B vb script11B vb script11
B vb script11oakhrd
 
The Eclipse Modeling Framework and MDA
The Eclipse Modeling Framework and MDAThe Eclipse Modeling Framework and MDA
The Eclipse Modeling Framework and MDAelliando dias
 

Was ist angesagt? (7)

5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
CMIS and Interoperability - AIIM 2009
CMIS and Interoperability - AIIM 2009CMIS and Interoperability - AIIM 2009
CMIS and Interoperability - AIIM 2009
 
B vb script11
B vb script11B vb script11
B vb script11
 
6
66
6
 
QVT & MTL In Eclipse
QVT & MTL In EclipseQVT & MTL In Eclipse
QVT & MTL In Eclipse
 
En webinar jpa v2final
En webinar jpa v2finalEn webinar jpa v2final
En webinar jpa v2final
 
The Eclipse Modeling Framework and MDA
The Eclipse Modeling Framework and MDAThe Eclipse Modeling Framework and MDA
The Eclipse Modeling Framework and MDA
 

Andere mochten auch

Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Enea Gabriel
 
OpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Alliance
 
OpenTravel 2012 Advisory Forum Chairman Welcome
OpenTravel 2012 Advisory Forum Chairman WelcomeOpenTravel 2012 Advisory Forum Chairman Welcome
OpenTravel 2012 Advisory Forum Chairman WelcomeOpenTravel Alliance
 
XFT Introduction at Travel Traction Berlin 2013
XFT Introduction at Travel Traction Berlin 2013XFT Introduction at Travel Traction Berlin 2013
XFT Introduction at Travel Traction Berlin 2013OpenTravel Alliance
 
OTDS presentation on Standards at Travel Traction Berlin 2013
OTDS presentation on Standards at Travel Traction Berlin 2013OTDS presentation on Standards at Travel Traction Berlin 2013
OTDS presentation on Standards at Travel Traction Berlin 2013OpenTravel Alliance
 

Andere mochten auch (6)

Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
 
OpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML Resources
 
OpenTravel 2012 Advisory Forum Chairman Welcome
OpenTravel 2012 Advisory Forum Chairman WelcomeOpenTravel 2012 Advisory Forum Chairman Welcome
OpenTravel 2012 Advisory Forum Chairman Welcome
 
Opening Travel Traction Berlin
Opening Travel Traction BerlinOpening Travel Traction Berlin
Opening Travel Traction Berlin
 
XFT Introduction at Travel Traction Berlin 2013
XFT Introduction at Travel Traction Berlin 2013XFT Introduction at Travel Traction Berlin 2013
XFT Introduction at Travel Traction Berlin 2013
 
OTDS presentation on Standards at Travel Traction Berlin 2013
OTDS presentation on Standards at Travel Traction Berlin 2013OTDS presentation on Standards at Travel Traction Berlin 2013
OTDS presentation on Standards at Travel Traction Berlin 2013
 

Ähnlich wie OpenTravel XML Object Suite Mechanics

Web technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringWeb technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringPiero Fraternali
 
EclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational DocumentationEclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational DocumentationMarc Dutoo
 
MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010fmadiot
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012Marc Dutoo
 
MDD and modeling tools research
MDD and modeling tools researchMDD and modeling tools research
MDD and modeling tools researchRoger Xia
 
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...Hugo Bruneliere
 
Trasnformation Design Patterns - Sandeep Katoch
Trasnformation Design Patterns - Sandeep KatochTrasnformation Design Patterns - Sandeep Katoch
Trasnformation Design Patterns - Sandeep KatochRoopa Nadkarni
 
2 trasnformation design_patterns-sandeep_katoch
2 trasnformation design_patterns-sandeep_katoch2 trasnformation design_patterns-sandeep_katoch
2 trasnformation design_patterns-sandeep_katochIBM
 
Developing Modeling Tool for RM-ODP with Eclipse Sirius
Developing Modeling Tool for RM-ODP with Eclipse SiriusDeveloping Modeling Tool for RM-ODP with Eclipse Sirius
Developing Modeling Tool for RM-ODP with Eclipse SiriusObeo
 
Effective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerEffective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerAnt Phillips
 
Mda introduction and common research problems
Mda   introduction and common research problemsMda   introduction and common research problems
Mda introduction and common research problemsLai Ha
 
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...EclipseDayParis
 

Ähnlich wie OpenTravel XML Object Suite Mechanics (20)

Web technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringWeb technologies: Model Driven Engineering
Web technologies: Model Driven Engineering
 
java
javajava
java
 
Sig A&D - MDA
Sig A&D - MDASig A&D - MDA
Sig A&D - MDA
 
ERP_Up_Down.ppt
ERP_Up_Down.pptERP_Up_Down.ppt
ERP_Up_Down.ppt
 
EclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational DocumentationEclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational Documentation
 
MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010
 
MDA
MDAMDA
MDA
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
 
MDD and modeling tools research
MDD and modeling tools researchMDD and modeling tools research
MDD and modeling tools research
 
Introduction to MDA
Introduction to MDAIntroduction to MDA
Introduction to MDA
 
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
 
Trasnformation Design Patterns - Sandeep Katoch
Trasnformation Design Patterns - Sandeep KatochTrasnformation Design Patterns - Sandeep Katoch
Trasnformation Design Patterns - Sandeep Katoch
 
2 trasnformation design_patterns-sandeep_katoch
2 trasnformation design_patterns-sandeep_katoch2 trasnformation design_patterns-sandeep_katoch
2 trasnformation design_patterns-sandeep_katoch
 
1 introduction
1 introduction1 introduction
1 introduction
 
Developing Modeling Tool for RM-ODP with Eclipse Sirius
Developing Modeling Tool for RM-ODP with Eclipse SiriusDeveloping Modeling Tool for RM-ODP with Eclipse Sirius
Developing Modeling Tool for RM-ODP with Eclipse Sirius
 
Effective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerEffective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message Broker
 
Mda introduction and common research problems
Mda   introduction and common research problemsMda   introduction and common research problems
Mda introduction and common research problems
 
OMG Introduction Dr. Richard Mark Soley
OMG Introduction Dr. Richard Mark SoleyOMG Introduction Dr. Richard Mark Soley
OMG Introduction Dr. Richard Mark Soley
 
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
 

Kürzlich hochgeladen

Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 

Kürzlich hochgeladen (20)

Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 

OpenTravel XML Object Suite Mechanics

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