Usage: "MessageType" stereotypes UML DataType, Class
A MessageType is a kind of value object that represents information exchanged between participant requests and services. This information consists of data passed into
and/or returned from the invocation of an operation or event signal defined in a service interface. A MessageType is in the domain or service-specific content and
does not include header or other implementation or protocol-specific information.
MessageTypes are used to aggregate inputs, outputs, and exceptions to service operations as in WSDL.
MessageTypes represent "pure data" that is communicated between parties - it is then up to the parties, based on the
SOA specification, to interpret this data and act accordingly. As "pure data", message types can not have
dependencies on the environment, location, or information system of either party. This restriction rules out many
common implementation techniques such as "memory pointers," that might be found inside an application.
Good design practices suggest that the content and structure of messages provide for rich interaction of the parties
without unnecessarily coupling or restricting their behavior or internal concerns.
The terms Data Transfer Object (DTO), Service Data Object (SDO), or value objects used in
some technologies are similar in concept, though they tend to imply certain implementation techniques. A DTO represents
data that can be freely exchanged between address spaces, and does not rely on specific location information to relate
parts of the data. An SDO is a standard implementation of a DTO. A Value Object is a Class without identity and where
equality is defined by value not reference. Also in the business world (or areas of business where EDI is commonplace)
the term Document is frequently used. All these concepts can be represented by a MessageType.
MessageType generally should be applied only to DataType, because it is
intended to have no identity. However, it is recognized that many existing models do not clearly distinguish identity,
either mixing Class and DataType, or only using Class. Recognizing this, SoaML allows MessageType to be applied to
Class as well as DataType. In this case, the identity implied by the Class is not considered in the MessageType. The
Class is treated as if it were a DataType.
Semantics
MessageTypes represent service data exchanged between service consumers and providers. Service data is often a view (projections and selections) on information
or domain class models representing the (often persistent) entity data used to implement service participants.
MessageType encapsulates the inputs, outputs, and exceptions of service operations into a type based on direction. A
MessageType can contain attributes with isID set to true. This indicates the MessageType contains
information that can be used to distinguish instances of the message payload. This information can be used to
correlate long running conversations between service consumers and providers.
A service Operation is any Operation of an Interface provided or required by a ServicePoint or RequestPoint. Service Operations can use two different parameter styles,
document centered (or message centered), or RPC (Remote Procedure Call) centered. Document centered parameter style
uses MessageType for ownedParameter types, and the Operation can have at most one in, one out, and one exception
parameter (an out parameter with isException set to true). All parameters of such an operation must be typed by a
MessageType. For RPC style operations, a service Operation can have any number of in, inout, and out parameters
and can have a return parameter as in UML2. In this case, the parameter types are restricted to PrimitiveType or
DataType. This ensures no service Operation makes any assumptions about the identity or location of any of its
parameters. All service Operations use call-by-value semantics in which the ownedParameters are value objects or data
transfer objects.
|