A module template is used to describe a module for the following types
users:
-
Module developers who implement the behavior of the module. There
may be multiple different implementations of the same module.
-
Application developers who wish to format and send documents to be processed
by the module.
-
Application integrators who wish to receive and process documents using
an implementation of the module, perhaps in conjunction with other modules.
A module template consists of the following:
-
General
-
The module name
-
A general written description of the module.
-
A written description of dependencies this module has on others.
This should be detailed enough to allow an application integrator to assemble
modules in a correct order. For example, an encryption module must
come after a sender RPC module. One special dependency is whether
the module is a "terminal module", i.e., one whose completion causes the
XMLP processor to consider the input document processing to be completed.
An example of a terminal module is one which results in a response, forward,
or one-way message completion.
-
The XML namespaces which must be used to qualify schemas, elements, and
attributes defined in the module.
-
The encoding rules to be used when formatting input or output blocks.
The encoding rules may be embodied in the processing rules for the module,
or may be contained in one or more schemas.
-
Input specification and Processing Rules
-
A list of zero or more input blocks.
-
An XML description of each input block, including its URN qualification.
-
Output Specification
-
A list of blocks which are affected by the module, including those that
are read, modified, added, or deleted by the module. This list may be expressed
using wild card notation: for example to indicate that an audit module
should copy all blocks to an audit file. The list may also be expressed
as a list of references contained in an input block: for example
to list which blocks are digitally signed.
-
An XML description of each new output block, including its URN qualification.
-
Processing Rules
-
The encoding rules, if these are embodied in the processing rules of the
module.
-
For each input block, a written specification of the handler behavior
which is invoked when the block is processed. The effect of
each element and attribute should be listed.
-
In the special case of zero input blocks, the module is considered to be
optional. A written specification of the behavior of the entire module
must be supplied.
-
Statement as to whether the block is required (allowing a sender to format
blocks with the "MUST UNDERSTAND" attribute).
-
Exceptions
-
A list of blocks describing standard exceptions which implementations may
throw. For each exception block, a written description of the exception
condition.
-
Special Binding Considerations
-
Modules should be binding independent. However, special cases should
be listed here. An example is the SOAPAction HTTP header element.
-
An example showing a sample document and an explanation of how it would
be processed.
-
The conformance requirements for the module. These may consist of descriptive
text, a reference to test scripts, a reference implementation, or
a test web site.
Notes
-
It is assumed that a handler has access to all blocks within a message.
So, for example, an auditing module with zero input blocks could be invoked
to copy entire messages to an audit file.
-
We continue to consider including as part of the template a module deployment
descriptor which could be transformed into an implementation specific deployment
descriptor (mapping to handlers for an implementation).