ISO 20022:1-2013 defines the term MessageDefinition as a “formal description of the structure of a MessaegInstance”, which contains “a set of structured information exchange between Business Roles in the scope of a BusinessTransaction.
More formally a Message Definition describes the rules about structured information in a document sent from a Business Application over some transport mechanism. Each instance contains Business Application information, but not the transport information which is properly contained in the transport envelope. For example it may contain the identity of the sending application instance, but not its IP address, Topic nor its Message Queue which are configurable properties of the transport.
The MetaModel is designed so that Message Definitions are comprised of Message Building Blocks, in the logical Business Process Catalog, which are assembled from Message Component Types from the logical Data Dictionary, traced to reusable concepts.
The intent is that a reusable Message Component Type may be reused in several Message Definitions which trace from a conceptual Message Transmission. A Message Transmission could be implemented as:
- a directed message from one peer to another;
- a service call to perform some operation;
- a resource provision.
They could all reuse the same Component Type for the body of their building block, but require different application level information about:
- to which peers am I sending this
- what event has occured
- what operation I want the service to perform
- available operations for the provisioned resource
In essence, the building blocks would generally be:
- Header – specific to the Choreography
- Body – specific to Transmissions
- Supporting documents and images
Business Application Header
Historically, the design of messages has been to define the contents one level higher then they ought to be.
The Business Application Header exisits to provide a generic Header to across message sets. It is included with another Business Message into an envelope, which may be a transport envelope, or a bespoke application layer envelope.
It also ought to be defined as a Message Component Type, which can be included by a header Message Building Block.