Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OpenTravel XML Object Suite Mechanics

923 views

Published on

Published in: Technology
  • Be the first to comment

OpenTravel XML Object Suite Mechanics

  1. 1. The Model-Driven Standard Advantage The OpenTravel Interoperability Framework and 2.0 XML Object Suite Mechanics OpenTravel Alliance www.opentravel.org
  2. 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. 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. 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. 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. 6. Open-Model Model Driven Standards Schema modeling that supports the pace of travel system evolution. © 2012 OpenTravel Alliance | www.opentravel.org
  7. 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 modelingModel 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. 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 ModelingModel Driven Architecture Portability CIEM Quality/ Reuse Interoperability Platform Neutrality © 2012 OpenTravel Alliance | www.opentravel.org
  9. 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 CodeModel 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. 10. Model Driven Architecture (MDA) » OpenTravel Model Components OpenTravel Open-Model StructureModel 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. 11. OpenTravel Interoperability Framework Interoperability just got cool. © 2012 OpenTravel Alliance | www.opentravel.org
  12. 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 ofFramework all data and business functionality contained in OpenTravel specificationsI nteroperability • Streamlines OpenTravel standards developmentOpen Travel © 2012 OpenTravel Alliance | www.opentravel.org
  13. 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 levelFramework 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 transformationOpen Travel © 2012 OpenTravel Alliance | www.opentravel.org
  14. 14. Framework Components At a Glance Continuous XML component model refinement. © 2012 OpenTravel Alliance | www.opentravel.org
  15. 15. OTIF Key Framework Key Components Four key framework components interoperate for continuous XML component model refinement.FrameworkI nteroperabilityOpen Travel © 2012 OpenTravel Alliance | www.opentravel.org
  16. 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 211CONTEXTUAL FACETS 1067<<InformationModel>>
  17. 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 MODELS273 © 2012 OpenTravel Alliance | www.opentravel.org
  18. 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.46BUSINESS OBJECTS 1 2 377CORE OBJECTS © 2012 OpenTravel Alliance | www.opentravel.org
  19. 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 MatrixOpenTravel Forum © 2012 OpenTravel Alliance | www.opentravel.org
  20. 20. © 2012 OpenTravel Alliance | www.opentravel.org
  21. 21. OpenTravel XML Object Suite Component Library A View from the TopA hierarchy of XML objects and services comprise the XML Object Suite component library © 2012 OpenTravel Alliance | www.opentravel.org
  22. 22. Model ConstructsKey Constructs Used in the XML Object Suite Model © 2012 OpenTravel Alliance | www.opentravel.org
  23. 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. 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. 25. Component Builders: <Attribute>A complexType that contains allthe parameters used to definean attribute in the 2.0 ModelLibrary with:• Name• Type• Mandatory indicator• Documentation collection• Equivalent collection• Example collection• Lower camelcase naming conventionNote that boolean indicators are NOTdefined as an Attribute, they are defined inthe Indicator collection. © 2012 OpenTravel Alliance | www.opentravel.org
  26. 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. 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. 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 adistribution partner that may be alpha, numeric, or a combination thereof and is a means ofdefining the capabilities of a reservation system user group for controlling access to functionsand 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. 29. Component Builders: <Element>A complexType that containsall the parameters used todefine an element in the 2.0Model Library with:• Name• Type• Mandatory indicator• Repeat• Documentation collection• Equivalent collection• Example collection• Upper camelcase naming convention © 2012 OpenTravel Alliance | www.opentravel.org
  30. 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. 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. 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. 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. 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. 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. 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. 37. Component Builders: <Facet>Three discrete facet types used inone 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. 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. 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. 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. 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. 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. 43. Component Builders: <Role>Describes multiple(contextual) uses for aCore 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. 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. 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. 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 thisPhoneSubGrp TeleSubGrp PhoneExSubGrp PhoneSummary TeleSummary PhoneExSummary Phone Tele PhoneExPhoneDetail TeleDetail PhoneExDetail Core Alias Extension © 2012 OpenTravel Alliance | www.opentravel.org
  47. 47. Component LibraryXML Message Suite Components Used to Construct Interoperable Web Services with OpenTravel Payloads © 2012 OpenTravel Alliance | www.opentravel.org
  48. 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. 49. Component Library: Simple/ Atomic TypeThe most granular building block in the XML Object Suite. ota2: Model Stereotype Icon © 2012 OpenTravel Alliance | www.opentravel.org
  50. 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. 51. Component Library: Simple Type as BaseSchema Example<xsd:simpleType name="String_PersonName"> <xsd:annotation> <xsd:documentationsource="Reference">http://dictionary.opentravel.org</xsd:documentation> <xsd:documentation source=“Description”>Unstructured name of aperson.</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. 52. Component Library: Atomic Type as BaseSchema 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. 53. Component Library: EnumerationAn Enumeration complexType with a simpleType base list of enumerated literals. ota2: Model Stereotype Icons © 2012 OpenTravel Alliance | www.opentravel.org
  54. 54. Component Library: Enumeration Two discrete types of enumerations supported in the 2.0 Model:Closed Enumeration Open EnumerationNon-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. 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. 56. Component Library: Closed EnumerationSchema 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. 57. Component Library: Open EnumerationSchema 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 supportan open enumeration list. Use the "Other_" value in combination with the @code and otherextension attributes to exchange a literal that is not in the list and is known to yourtrading 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. 58. Component Library: Value With AttributesGroups 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. 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. 60. Component Library: Value With AttributesSchema 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 byticketing.</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. 61. Component Library: Core Object A complexType that serves as a container forapplication data that defines common representations of real world objects. ota2: Model Stereotype Icon © 2012 OpenTravel Alliance | www.opentravel.org
  62. 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. 63. Component Library: Core ObjectMay 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. 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. 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. 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. 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. 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. 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. 70. Component Library: Business ObjectA 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. 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. 72. Component Library: Business ObjectOptimum extensibility provided via a repeating Custom facet. © 2012 OpenTravel Alliance | www.opentravel.org
  73. 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. 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. 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. 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. 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. 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. 79. Component Library: ServiceA collection of 2.0 components that support interoperablemachine-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. 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. 81. Component Library: Service SOAP Style Naming Convention. SOAP: 2.0 Service Operation Verb, Noun, OperationVerb Noun Service Name Operation NamesRead DemandTicket AirDemandTicket ReadRQRead DemandTicket AirDemandTicket ReadRSRead Fare AirFare ReadRQRead Fare AirFare ReadRS © 2012 OpenTravel Alliance | www.opentravel.org
  82. 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. 83. Component Library: ServiceSchema 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. 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. 85. Questions? Bonnie Lowell Specification Architect OpenTravel Alliance bonnie.lowell@opentravel.org OpenTravel Interoperability FrameworkUML models just got cool.

×