ebXML Transport, Routing & Packaging
Strawman Message Header Specification
Working Draft
This version:
ebXML Message Header Specification v0-5.doc
Download from http://www.ebxml.org/specindex.htm
Latest version:
Previous version:
None
Editor:
David Burdett <david.burdett@commerceone.com>
Authors:
David Burdett <david.burdett@commerceone.com>
John Ibbotson <john_ibbotson@uk.ibm.com>
Contributors:
The members of the Transport Routing and Packaging Project Team
Abstract
This specification contains the definitions of the Message Header elements required in an ebXML Message. The purpose of the header elements is to contain the additional information required to enable electronic documents to be transported between two services. The key consideration when developing this specification was to provide data elements that enable software that is aware of this specification to:
Note that the reliable delivery of messages is described in a separate specification (under development).
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119].
Status of this Document
This specification is the first publicly available version of the ebXML Message Header. The header elements that have been identified represent those that are considered by the members of the ebXML Transport, Routing and Packaging Working group, to be the minimum required that provide the functionality outlined in the abstract. They meet subset of the requirements described in the ebXML Overview and Requirements document [1].
One of the objectives of ebXML Transport, Routing and Packaging is to develop specifications that "enable existing 'messaging' solutions to 'bridge' to the ebXML solution".
Therefore later versions of this specification will contain additional or modified elements required to meet this need.
This version of the specification is not a standard of any kind. Developers and implementers must not rely on this specification and it should be used for prototype use only.
Table of Contents
1 Introduction
*1.1 Message Headers
*1.2 Relationship to other ebXML Transport, Routing, and Packaging specifications
*1.3 Specification Structure
*2 Message Structure
*2.1 Header Parts
*2.1.1 Why Separate Header Parts
*2.2 Message Header, Header Part
*2.3 Message Manifest
*2.4 Message Type Dependent Header Parts
*2.4.1 Error Header Part
*3 Header Levels
*4 Template Document Exchanges
*4.1 Message Types
*4.1.1 What is a Message Type
*5 Definitions
*5.1 Documents, Parties, Messages and Document Exchanges
*5.1.1 Overview
*5.1.2 A Document
*5.1.3 Party
*5.1.4 Party Address
*5.1.5 Message
*5.1.6 Message Header
*5.1.7 Message Manifest
*5.1.8 Message Routing Information
*5.1.9 Digital Signature
*5.1.10 Message Envelope
*5.1.11 Message Types
*5.1.12 Document Exchange
*5.2 Services and Message Sets
*5.2.1 Overview
*5.2.2 Service
*5.2.3 Sub-Service
*5.2.4 Service Choreography
*5.2.5 Application
*5.2.6 Transaction
*6 Schemas, DTD Definitions and Examples
*6.1 XML Header DTD
*6.2 XML Header Schema Definition
*7 References
*8 Acknowledgements
*9 Authors' Address
* IntroductionThis specification provides definitions of the content of Message Header elements for use within ebXML message handling.
Message Headers are contained within an outer Message Envelope. The structure and format of the Message Envelope is defined separately [2].
Definitions of words and terms that are used with ebXML Transport Routing and Packaging are contained in section 5. When these terms are used within the specification they are usually highlighted in italics. <EdNote>Iin later versions of this specification this section will be removed and replaced by a reference to an ebXML wide glossary of terms.</EdNote>
Message HeadersA Message Header is an XML construct that contains the additional data that needs to be associated with the documents in a message so that they can be delivered to and successfully processed by a Party.
This specification will be one of a set of related specifications that will be delivered in phases. These specifications will cover:
The remainder of this specification contains:
The structure of a message is illustrated by the diagram below. Change picture to add Message Manifest
A Message Consists of:
The Header is a single XML document with a number of Header Parts within it where each Header Part is a separate XML element. In general, separate header parts are used where:
Using this principle, the following main header parts have been identified:
<EdNote>Additional Header Parts will probably be included in later versions of this specification. They might include, for example:
The Message Header and Message Manifest header parts are the only header parts that are present in every Message. Any additional header parts are optional.
Why Separate Header PartsThe following provides explanations as to why these header parts have been defined separately.
Message Manifest is held separately since the software that assembles the message from its constituent parts is likely to be separate from the software that creates the other parts
Message Header is held separately since the information it contains will frequently be specified by the business (or other) application that is generating the message. It is also held separately header part so that it may be digitally signed and its signature preserved, no matter where the message is routed or sent..
Descriptions of each Header Part and their element content follow.
Message Header, Header PartThe following is an overview of each of the elements in a ebXML Message Header.
Message Header Element Outline Description
The Message Type is used to let ebXML aware software provide reliable messaging on behalf of an application
Service Types shall be unique within the domain in which they are being used. URN's may be considered suitable for this purpose.
<EdNote> Need to coordinate with the Business Process Group to align with naming and semantics of their business model. </EdNote>
Intent shall be unique within a Service Type. It is a string.
<EdNote> Need to coordinate with the Business Process Group to align with naming and semantics of their business model. </EdNote>
This shall be the first header part in the ebXML Header. It identifies the various header parts and payloads contained in the ebXML message envelope. The purpose of the Message Manifest is to make it easier to directly extract a particular document (or part of a document) associated with the Message.
Message Header Element Outline Description
If the referenced document is within the Message then the Document Identifier shall be unique within the Message Id. It may also be globally unique.
Depending on the Message Type, different header parts may be present in the Header in addition to the header parts described in section 2.1.
In this version of the specification the only Message Type Dependent Header Parts are the Error Message Header Part that must be present if the Message Type is set to Error. It indicates one or more errors in a Message
Error Header PartContains descriptions of and references to one or more locations in a message where errors have been detected.
<EdNote> To be completed. The structure of the Error Header part and the error codes that apply is to be specified. There is also an open issue over whether the header part should be in the Header, or in the Payload and whether it describes errors just in the header or errors in the Payload as well. </EdNote>
Header Levels<EdNote> This specification contains the minimum data elements required. It is likely that, in order to implement the full requirements [1], additional data elements will need to be specified. There has been an open issue within the group over whether to specify a number of specific levels to describe the particular typical problems that the specification is designed to handle or whether to just make all elements optional.</EdNote>
The part of the specification describes valid sequences for exchanging messages. It consists of two parts:
This section provides an overview of how Message Type can be used. The main benefit of having a Message Type in the header is that it allows the ebXML transport to check that the messages of an appropriate type have been returned within the expected timeframes. For example if a Normal Message is sent with Guaranteed Delivery in the header indicating that At Most Once delivery is required, then an Acknowledgement message should be sent in return. If an Acknowledgement Message is not returned within the required timescale then the ebXML transport can detect this and attempt recovery by, for example, resending the original message. <EdNote> More details on how to do reliable message delivery will be specified in a separate specification </EdNote>
What is a Message TypeA Message Type contains information that can be used by the recipient of a message to determine how it should be handled and therefore what types of messages should be sent in return.
A message may be one of the following types:
Each of these is described below in more detail.
Normal MessageNormal Messages are sent to request that another party or server carry out a service or process of some kind. In more detail the messages that may result from processing a Normal Message are indicated in the diagram below.
Examples of Normal Messages include:
An Acknowledgement Message may be sent as a response to any Message (apart from an Acknowledgement Message) to indicate that a Message has been received.
It's recommended that Acknowledgement Messages are only sent after the message that is being acknowledged has been saved in some kind of persistent storage as Acknowledgement Messages can be used, for example, by the sender of a message as evidence that the original message was received.
On the other hand, if an Acknowledgement Message is not received within the expected time, then it indicates that something has probably gone wrong somewhere and the sender can choose to try and recover by, for example, re-sending the original message.
Acknowledgement Messages are also useful if a service that is being requested takes a long time to run. Acknowledgements Messages are never sent in response to another Acknowledgement Message as otherwise an infinite exchange of messages could occur.
More details on the message that may be generated as a result of processing an Acknowledgement Message are indicated by the diagram below.
An Error Message is a Message that reports on a problem in an earlier Message that prevents the earlier Message from being processed in a normal way. Examples of an Error Message include:
Error Messages contain an Error Message Header Part that indicates the nature of the error that has been found.
More details on the message that may be generated as a result of processing an Error Message are indicated by the diagram below.
It is possible that an Error may be found in an Error Message which, in turn, also contains errors. This can result in an infinite loop. To avoid this, Error Messages are not sent, for errors found in Error Messages that are reporting errors in another earlier Error Message.
Definitions<EdNote>This section contains mildly updated versions of the definitions contained in the TP&R Overview and Requirements document. Some items are defined here that are not used within the version of the Message Header Specification but are likely to be required in later versions of the specification. It is also likely that, in later versions of this specification, this section will be removed and replaced by reference to an ebXML wide Glossary of terms.</EdNote>
The following are a list of definitions of the terms associated with the transport of messages over the Internet.
It is split into two sections:
Words or phrases that are defined elsewhere are highlighted in italics.
This section describes how Parties, such as buyers and suppliers, customers and merchants, can transmit Documents contained in Messages in order to request execution of Services.
All the Documents and other data in a Message are contained within an outermost Message Envelope.
A Message can optionally include Digital Signatures so that:
Services are requested by sending one or more Documents in a Request Message to a Party who then:
At a minimum a Document Exchange consists of a Request Message and an optional Response Message although there might be additional Exchange Messages between the Request Message and the Response Message.
Error Messages are used to report permanent or transient problems or errors in a Message.
More detail is provided below.
A DocumentA Document is any data that can be represented in a digital form.
Examples of Documents include:
A Party is a company, organization or individual or other entity that can generate, receive or relay Documents. Parties are identifies by a Party Address.
Examples of a Party include:
A Party is also used to refer to systems or servers that are carrying out Services or processes on behalf of a Party.
Party AddressThe address of a party is in two parts:
In combination, Address Context and Address must be globally unique.
The Address Context specifies the domain of the address, or the authority that allocated the Address to the Party. It is optional since the Address, on its own, may be globally unique. Examples of Address Context include:
Address identifies the individual Party within the Address Context. Examples of Address include:
A Message is data that is sent from one Party to another.
All the data in a Message is contained within a Message Envelope.
A Message consists of a Message Header and a Message Body
Examples of a Message include:
A Message Header is an XML construct that contains the additional data that needs to be associated with the Documents in a message so that they can be sent to and successfully processed by a Party.
The Message Manifest contains references to the other documents, apart from the Message Routing Information document, that are contained within the same Message Envelope.
The purpose of the Message Manifest is to facilitate locating and validating that all required Documents contained within the Message Envelope are present.
Examples of the types of documents that might be referenced by a Message Manifest include:
Message Routing Information
contains data that indicates the path that should be or was taken by a Message in reaching its ultimate destination.A Digital Signature is a cryptographic signature over data contained in a Message, or elsewhere that are addressable via [URI]s, that permits the authenticity of the signer of the data to be determined, and helps detect if the data in the Message has changed.
A Message Envelope is the outermost container for a Message. It can be such things as:
Messages may be of several different types. These are described below.
One-Way MessageA One-Way Message is a Message sent from one party to another. The receiving Party MAY only respond back to the From Party with either a Message Acknowledgement and, if there is an error, an Error Message.
A Request Message is a Message sent from one Party to a another Party's Service with the intent that the other Party act upon the data in the Request Message by carrying out the Service.
The results of processing the Request Message MUST be included in a Response Message that is sent back to the sender of the previous Message.
An Acknowledgement Message may sent as a response to any Message (apart from an Acknowledgement Message) to indicate that the Message has been received.
A Checked OK Message may be sent in response to a Request Message to indicate that the content of the Request Message has been validated and no errors were found. A Checked OK Message MUST be sent after any Acknowledgement Message that was sent.
A Response Message is a Message that is generated by the Service that received a Request Message. It is produced as a result of carrying out the requested Service. It is the last Message in a Document Exchange unless the Response Message contains errors.
Response Messages are sent back to the sender of the Request Message.
An Exchange Message is a Message that is sent between one Party and another after the sending of the initial Request Message and before the sending of the final Response Message.
Examples of Exchange Messages include:
An Error Message is a Message that reports on a problem in an earlier Message that prevents the earlier Message from being processed in a normal way.
Examples of an Error Message include:
A Document Exchange is a generic term for either a:
A One-Way Document Exchange consist of:
Examples of a One-Way Document Exchange include:
A Simple Document Exchange consists of:
Examples of instances of a Simple Document Exchange include:
A Multiple Round Trip Document Exchange consists of:
Examples of Multiple Round Trip Document Exchanges include:
A Service is a process that can be carried out by a Party. It is implemented by either a Document Exchange or a set of Sub-Services. Each Sub-Service is a Service in its own right. So, at the lowest level, all Services are implemented in terms of a Document Exchange.
The dependencies between the Sub-Services in a Service are described in a Service Choreography.
An instance of the execution of a Service is called a Message Set.
More detail is provided below.
A Service is a process that can be carried out by a Party as a result of receiving a Request Message or One-Way Message that requests the execution of that Service.
A Service can consist of either:
Examples of a Service include:
A Sub-Service is a Service that is executed at the request of and as part of another Service.
Examples of Sub-Services include:
A Service Choreography is a description of the dependencies that control the sequence and choices that determine which Sub-Services are executed when carrying out a Transaction.
The Sub-Services in a Service will have dependencies between them. Dependencies can be:
An example of a simple Sub-Service Choreography is a Purchase Service that consists of three Sub-Services:
An Application is software that may implement a Service by processing one or more of the Messages in the Document Exchanges associated with the Service.
A Transaction is an instance of the execution of a Service.
Examples of a Transaction include:
<EdNote>Note we will only define this section once the structure of the header parts are finalized (or nearly finalized) <EdNote>
<EdNote> Will contain an XML DTD version of the Header Parts whose structure is defined in this document</EdNote>
<EdNote> Will contain an XSDL Schema version of the Header Parts whose structure is defined in this document</EdNote>
[1] ebXML Transport, Routing and Packaging: Overview and Requirements document version 0.96. Published 25 May 2000
[2] ebXML Transport, Routing & Packaging Message Envelope Specification. Version 0.5. Published 25 May 2000
The author's wish to acknowledge the support of the members of the Transport, Routing and Packaging working group who contributed ideas to this specification by the groups discussion email list, on conference calls and during face-to-face meetings.
Contact information for the Author's of this specification follow.
David Burdett
Commerce One Inc
4400 Rosewood Drive 3rd Fl, Bldg 4,
Pleasanton, CA 94588,
USA
Tel: +1 (925) 520 4422 or +1 (650) 623 2888
Email:
John Ibbotson
IBM UK Ltd
Hursley Park
Winchester
SO21 2JN
United Kingdom
Tel: +44 (1962) 815188
Email: