MRM Custom wire format: Relationship to the logical model
Some restrictions exist in relation to the logical model for messages that are defined by using the CWF.
Composition
A CWF message is always written with the elements in the sequence that is specified in the logical message model definition. However, you do not always have to specify the ESQL or Java™ that builds the elements in that sequence. The following rules for coding ESQL are given for each value of the type Composition property.
Content validation
CWF is a fixed format, and all elements must be present in a message. Therefore, content validation is ignored. On output, all elements must be set explicitly (for example, by using ESQL SET), set implicitly (by using a tree copy function), or must have a default value defined.
Default values
On output of a CWF message in the MRM domain, any element, or occurrence of an element for which a value has not been set (either explicitly or implicitly), inherits the specified default value of the element. If no default value has been specified then an exception is thrown.
Min Occurs and Max Occurs
The logical properties Min Occurs and Max Occurs specify the permitted number of occurrences of an element, or group, in a message. These properties are used when parsing and writing messages, and when validating the content of a message.
In CWF, Max Occurs occurrences are expected when parsing, and Max Occurs occurrences are produced when writing. Default values are used for missing elements, and any excess elements are discarded.
- A varying number of occurrences (Min Occurs <> Max Occurs) is ignored, Max Occurs is assumed.
- Optional occurrence (Min Occurs = 0) is ignored, Max Occurs is assumed.
- Always absent (Max Occurs = 0) is allowed.
- An unbounded number of occurrences (Max Occurs = -1) is allowed if the element or group is the last child in its parent group, and the group is terminated by the end of the message bit stream. On writing, the writer writes all occurrences in the message tree, if this number is less than Min Occurs, additional default values are written.
These rules arise because, in a CWF message format, there are no tags or other markup that can be used to determine the end of a variable number of repeats.
However this behavior is overridden if the CWF property Repeat Reference is set, which indicates that the number of occurrences is given instead by an integer element that occurs earlier in the message. In this case Max Occurs is ignored.
When validating, Min Occurs and Max Occurs are both used to check that the content of the message tree matches the model.
Simple types - lists and unions
Lists and unions are XML-specific concepts. An element or attribute of a simple type that is a list or a union causes a task list warning if a CWF physical format is present in the message set. The user can choose whether to make this an error, warning, or information by editing the Validation preferences. The dictionary generator omits messages defined to contain such elements or attributes from the CWF section of the dictionary.