svn commit: r494724 [2/3] - in /ofbiz/site/dtds: service-eca.xsd service-group.xsd services.xsd simple-methods.xsd site-conf.xsd

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r494724 [2/3] - in /ofbiz/site/dtds: service-eca.xsd service-group.xsd services.xsd simple-methods.xsd site-conf.xsd

jaz-3
Modified: ofbiz/site/dtds/simple-methods.xsd
URL: http://svn.apache.org/viewvc/ofbiz/site/dtds/simple-methods.xsd?view=diff&rev=494724&r1=494723&r2=494724
==============================================================================
--- ofbiz/site/dtds/simple-methods.xsd (original)
+++ ofbiz/site/dtds/simple-methods.xsd Tue Jan  9 21:45:00 2007
@@ -123,17 +123,17 @@
     <xs:element name="simple-method">
         <xs:annotation>
             <xs:documentation>
-        A simple method can be called in either an event context from the Control
-        Servlet (or another event) or in a service context through the Service
-        Engine, or any other component that has access to a service dispatcher.
-        
-        The field-to-request and field-to-session elements will be IGNORED when
-        called in a service context. So, they are ONLY used when called in an event context.
-        
-        The field-to-result elements will be ignored in an event context, ie only used in a service.
-        
-        The parameter-map-name env entry will contain the HttpRequest parameters for
-        running in an event context and and the input context when running in a service.
+                A simple method can be called in either an event context from the Control
+                Servlet (or another event) or in a service context through the Service
+                Engine, or any other component that has access to a service dispatcher.
+                
+                The field-to-request and field-to-session elements will be IGNORED when
+                called in a service context. So, they are ONLY used when called in an event context.
+                
+                The field-to-result elements will be ignored in an event context, ie only used in a service.
+                
+                The parameter-map-name env entry will contain the HttpRequest parameters for
+                running in an event context and and the input context when running in a service.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -142,9 +142,28 @@
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.simple-method">
-        <xs:attribute type="xs:string" name="method-name" use="required"/>
-        <xs:attribute type="xs:string" name="short-description" use="required"/>
+        <xs:attribute type="xs:string" name="method-name" use="required">
+            <xs:annotation>
+                <xs:documentation>                
+                    A name (preferably a legal Java identifier) for this method.
+                    This name must be unique for the XML file it is in as it will be used to reference this method externally.                        
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>        
+        <xs:attribute type="xs:string" name="short-description" use="required">
+            <xs:annotation>
+                <xs:documentation>                
+                    A short description of the method for certain system error messages.                        
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>        
         <xs:attribute name="login-required" default="true">
+            <xs:annotation>
+                <xs:documentation>                
+                    Is a logged in user (UserLogin object, or login.username and login.password Strings) required to run this method?  
+                    "true" or "false" (defauts to "true")                        
+                </xs:documentation>
+            </xs:annotation>            
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -153,6 +172,12 @@
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="use-transaction" default="true">
+            <xs:annotation>
+                <xs:documentation>                
+                    Create a transaction if none exists for this thread?
+                    "true" or "false" (defauts to "true")                          
+                </xs:documentation>
+            </xs:annotation>            
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -160,46 +185,211 @@
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
-        <xs:attribute type="xs:string" name="default-error-code" default="error"/>
-        <xs:attribute type="xs:string" name="default-success-code" default="success"/>
-        <xs:attribute type="xs:string" name="parameter-map-name" default="parameters"/>
-        <xs:attribute type="xs:string" name="event-request-object-name" default="request"/>
-        <xs:attribute type="xs:string" name="event-response-object-name" default="response"/>
-        <xs:attribute type="xs:string" name="event-response-code-name" default="_response_code_"/>
-        <xs:attribute type="xs:string" name="event-error-message-name" default="_error_message_"/>
-        <xs:attribute type="xs:string" name="event-event-message-name" default="_event_message_"/>
-        <xs:attribute type="xs:string" name="service-response-message-name" default="responseMessage"/>
-        <xs:attribute type="xs:string" name="service-error-message-name" default="errorMessage"/>
-        <xs:attribute type="xs:string" name="service-error-message-list-name" default="errorMessageList"/>
-        <xs:attribute type="xs:string" name="service-error-message-map-name" default="errorMessageMap"/>
-        <xs:attribute type="xs:string" name="service-success-message-name" default="successMessage"/>
-        <xs:attribute type="xs:string" name="service-success-message-list-name" default="successMessageList"/>
-        <xs:attribute type="xs:string" name="locale-name" default="locale"/>
-        <xs:attribute type="xs:string" name="delegator-name" default="delegator"/>
-        <xs:attribute type="xs:string" name="security-name" default="security"/>
-        <xs:attribute type="xs:string" name="dispatcher-name" default="dispatcher"/>
-        <xs:attribute type="xs:string" name="user-login-name" default="userLogin"/>
+        <xs:attribute type="xs:string" name="default-error-code" default="error">
+            <xs:annotation>
+                <xs:documentation>                
+                    The default error return code. (defauts to "error")                          
+                </xs:documentation>
+            </xs:annotation>                        
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="default-success-code" default="success">
+            <xs:annotation>
+                <xs:documentation>                
+                    The default success return code.  (defauts to "success")                            
+                </xs:documentation>
+            </xs:annotation>                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="parameter-map-name" default="parameters">
+            <xs:annotation>
+                <xs:documentation>                
+                    As event: copy of request parameters.
+                    As service: incoming context.
+                    (defauts to "parameters")            
+                </xs:documentation>
+            </xs:annotation>                                                
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="event-request-object-name" default="request">
+            <xs:annotation>
+                <xs:documentation>                
+                    As event only (defauts to "request")                  
+                </xs:documentation>
+            </xs:annotation>                                                            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="event-response-object-name" default="response">
+            <xs:annotation>
+                <xs:documentation>                
+                    As event only (defauts to "response")                  
+                </xs:documentation>
+            </xs:annotation>                                                                        
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="event-response-code-name" default="_response_code_">
+            <xs:annotation>
+                <xs:documentation>                
+                    As event only (defauts to "_response_code")                  
+                </xs:documentation>
+            </xs:annotation>                                                                        
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="event-error-message-name" default="_error_message_">
+            <xs:annotation>
+                <xs:documentation>                
+                    As event only (defauts to "_error_message_")                  
+                </xs:documentation>
+            </xs:annotation>                                                                        
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="event-event-message-name" default="_event_message_">
+            <xs:annotation>
+                <xs:documentation>                
+                    As event only (defauts to "_event_message_")                  
+                </xs:documentation>
+            </xs:annotation>                                                                        
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="service-response-message-name" default="responseMessage">
+            <xs:annotation>
+                <xs:documentation>
+                    As service only (defauts to "responseMessage")                                  
+                </xs:documentation>
+            </xs:annotation>                                                                        
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="service-error-message-name" default="errorMessage">
+            <xs:annotation>
+                <xs:documentation>                
+                    As service only (defauts to "errorMessage")                  
+                </xs:documentation>
+            </xs:annotation>                                                                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="service-error-message-list-name" default="errorMessageList">
+            <xs:annotation>
+                <xs:documentation>                
+                    As service only (defauts to "errorMessageList")                  
+                </xs:documentation>
+            </xs:annotation>                                                                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="service-error-message-map-name" default="errorMessageMap">
+            <xs:annotation>
+                <xs:documentation>                
+                    As service only (defauts to "errorMessageMap")                  
+                </xs:documentation>
+            </xs:annotation>                                                                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="service-success-message-name" default="successMessage">
+            <xs:annotation>
+                <xs:documentation>                
+                    As service only (defauts to "successMessage")                  
+                </xs:documentation>
+            </xs:annotation>                                                                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="service-success-message-list-name" default="successMessageList">
+            <xs:annotation>
+                <xs:documentation>                
+                    As service only (defauts to "successMessageList")
+                </xs:documentation>
+            </xs:annotation>                                                                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="locale-name" default="locale">
+            <xs:annotation>
+                <xs:documentation>                
+                    Name of locale variable (defauts to "locale")                
+                </xs:documentation>
+            </xs:annotation>                                                                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="delegator-name" default="delegator">
+            <xs:annotation>
+                <xs:documentation>                
+                    A GenericDelegator object to use in the method (defauts to "delegator")                
+                </xs:documentation>
+            </xs:annotation>                                                                                                            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="security-name" default="security">
+            <xs:annotation>
+                <xs:documentation>                
+                    A Security object to use in the method (defauts to "security")
+                </xs:documentation>
+            </xs:annotation>                                                                                                                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="dispatcher-name" default="dispatcher">
+            <xs:annotation>
+                <xs:documentation>                
+                    A LocalDispatcher object to use in the method (defauts to "dispatcher")                                    
+                </xs:documentation>
+            </xs:annotation>                                                                                                                        
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="user-login-name" default="userLogin">
+            <xs:annotation>
+                <xs:documentation>                
+                    Name of user login variable (defauts to "userLogin")                  
+                </xs:documentation>
+            </xs:annotation>                                                                                                                        
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="call-map-processor" substitutionGroup="CallOperations">
         <xs:annotation>
             <xs:documentation>
-        If both an external and an inline map-processor are specified, the external
-        one will be called first, allowing the inline one to override its behavior
+                The call-map-processor tag invokes a simple map processor from an existing map, creating a new map or adding to an existing one
+                if the named out-map already exists. Resulting messages are added to the named list, and a new list is created if a list with
+                the given name does not yet exist. Note that all lists and maps exist in the same context and must have unique names.  
+                
+                An inline simple-map-processor can be used by putting a simple-map-processor tag under the call-map-processor tag.
+                                                        
+                If both an external and an inline map-processor are specified, the external
+                one will be called first, allowing the inline one to override its behavior.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="0" ref="simple-map-processor"/>
+                <xs:element minOccurs="0" ref="simple-map-processor">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Uses the same definition as the simple-map-processor in the context of a simple-map-processors XML file.
+                            Allows for an inlined simple-map-processor.
+                        </xs:documentation>
+                    </xs:annotation>                    
+                </xs:element>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.call-map-processor"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.call-map-processor">
-        <xs:attribute type="xs:string" name="xml-resource"/>
-        <xs:attribute type="xs:string" name="processor-name"/>
-        <xs:attribute type="xs:string" name="in-map-name" use="required"/>
-        <xs:attribute type="xs:string" name="out-map-name" use="required"/>
-        <xs:attribute type="xs:string" name="error-list-name" default="error_list"/>
+        <xs:attribute type="xs:string" name="xml-resource">
+            <xs:annotation>
+                <xs:documentation>
+                    The full path and filename on the classpath of the XML file which contains an external map processor to execute.  
+                    This is only required if an external map processor is desired.                
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="processor-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the external map processor to execute in the specified xml-resource.
+                    This is only required if an external map processor is desired.                
+                </xs:documentation>
+            </xs:annotation>                        
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="in-map-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of a map in the method environment to use as the input map.                
+                </xs:documentation>
+            </xs:annotation>                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="out-map-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of a map in the method environment to use as the output map.
+                    Will be created if it does not exist already.
+                    If already exists will be added to in place.                
+                </xs:documentation>
+            </xs:annotation>                                                
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="error-list-name" default="error_list">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of a list in the method environment that the error messages will be added to.
+                    Will be created if it does not exist.
+                    Defaults to "error_list".
+                </xs:documentation>
+            </xs:annotation>                                                            
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="set-service-fields" substitutionGroup="CallOperations">
         <xs:complexType>
@@ -214,8 +404,11 @@
     <xs:element name="call-service" substitutionGroup="CallOperations">
         <xs:annotation>
             <xs:documentation>
-        The result-to-request and result-to-session elements will be IGNORED when
-        called in a service context. So, they are ONLY used when called in an event context.
+                The call-service tag invokes a service through the Service Engine.
+                If the specified error code is returned from the service, the event is aborted and the transaction in the current thread is rolled back. Otherwise, the remaining operations are invoked.
+                
+                The result-to-request and result-to-session elements will be IGNORED when
+                called in a service context. So, they are ONLY used when called in an event context.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -243,6 +436,11 @@
         <xs:attribute type="xs:string" name="in-map-name"/>
         <xs:attribute name="include-user-login" default="true">
             <xs:simpleType>
+                <xs:annotation>
+                    <xs:documentation>
+                        Defaults to "true".
+                    </xs:documentation>
+                </xs:annotation>            
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
                     <xs:enumeration value="false"/>
@@ -251,14 +449,31 @@
         </xs:attribute>
         <xs:attribute name="break-on-error" default="true">
             <xs:simpleType>
+                <xs:annotation>
+                    <xs:documentation>
+                        Defaults to "true".
+                    </xs:documentation>
+                </xs:annotation>                        
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
                     <xs:enumeration value="false"/>
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
-        <xs:attribute type="xs:string" name="error-code" default="error"/>
-        <xs:attribute type="xs:string" name="success-code" default="success"/>
+        <xs:attribute type="xs:string" name="error-code" default="error">
+            <xs:annotation>
+                <xs:documentation>
+                    Defaults to "error".
+                </xs:documentation>
+            </xs:annotation>                                    
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="success-code" default="success">
+            <xs:annotation>
+                <xs:documentation>
+                    Defaults to "success".
+                </xs:documentation>
+            </xs:annotation>                                    
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="error-prefix">
         <xs:complexType mixed="true">
@@ -334,9 +549,9 @@
     <xs:element name="result-to-result">
         <xs:annotation>
             <xs:documentation>
-        NOTE that these attributes are somewhat confusing: result-name is the name of the field in the result of this service call that the value comes FROM;
-        service-result-name is the name of the field in the result of this simple-method called as a service where the value goes TO;
-        in other words FROM result-name and TO service-result-name
+                NOTE that these attributes are somewhat confusing: result-name is the name of the field in the result of this service call that the value comes FROM;  
+                service-result-name is the name of the field in the result of this simple-method called as a service where the value goes TO;
+                in other words FROM result-name and TO service-result-name.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -350,9 +565,9 @@
     <xs:element name="call-service-asynch" substitutionGroup="CallOperations">
         <xs:annotation>
             <xs:documentation>
-        Calls a service asynchronously and ignores the result, so no return messages
-        are used; that doesn't mean no errors will result, but they would just be
-        system errors like database failures, etc which all have system error messages.
+                Calls a service asynchronously and ignores the result, so no return messages
+                are used; that doesn't mean no errors will result, but they would just be
+                system errors like database failures, etc. which all have system error messages.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -364,6 +579,11 @@
         <xs:attribute type="xs:string" name="in-map-name"/>
         <xs:attribute name="include-user-login" default="true">
             <xs:simpleType>
+                <xs:annotation>
+                    <xs:documentation>
+                        Defaults to "true".
+                    </xs:documentation>
+                </xs:annotation>                                    
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
                     <xs:enumeration value="false"/>
@@ -374,16 +594,16 @@
     <xs:element name="call-bsh" substitutionGroup="CallOperations">
         <xs:annotation>
             <xs:documentation>
-        Runs an external bsh script from the classpath if resource is specified and
-        then runs the inlined bsh script if any is specified.
-        
-        The bsh context is the current simple-method environment including maps, lists
-        and special objects whose names are defined in the simple-method attributes.
-        
-        The current env cannot be modified, but if a Map is returned by the bsh block
-        the entries in the map will be put into the current env.
-        
-        Error messages go on the error list and are handled with the check-errors tag.
+                Runs an external bsh script from the classpath if resource is specified and
+                then runs the inlined bsh script if any is specified.
+                
+                The bsh context is the current simple-method environment including maps, lists
+                and special objects whose names are defined in the simple-method attributes.
+                
+                The current env cannot be modified, but if a Map is returned by the bsh block
+                the entries in the map will be put into the current env.
+                
+                Error messages go on the error list and are handled with the check-errors tag.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType mixed="true">
@@ -392,169 +612,604 @@
     </xs:element>
     <xs:attributeGroup name="attlist.call-bsh">
         <xs:attribute type="xs:string" name="resource"/>
-        <xs:attribute type="xs:string" name="error-list-name" default="error_list"/>
+        <xs:attribute type="xs:string" name="error-list-name" default="error_list">
+            <xs:annotation>
+                <xs:documentation>
+                    Defaults to "error_list".
+                </xs:documentation>
+            </xs:annotation>                                                
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="call-simple-method" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The call-simple-method tag calls another simple-method in the same context as the current one.
+                In other words the called simple-method will have the same environment as the calling simple-method,  
+                including all environment fields, and either the event or service objects that the calling simple-method was called with.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.call-simple-method"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.call-simple-method">
-        <xs:attribute type="xs:string" name="xml-resource"/>
-        <xs:attribute type="xs:string" name="method-name" use="required"/>
+        <xs:attribute type="xs:string" name="xml-resource">
+            <xs:annotation>
+                <xs:documentation>
+                    The full path and filename on the classpath of the XML file which contains an external simple-method to execute.
+                    This is only required if a simple-method in a different file is desired.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="method-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the simple-method to execute in the specified xml-resource,  
+                    or in the current XML file if no xml-resource is specified.  
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
     </xs:attributeGroup>
     <!-- Operations to call Java methods and create Java objects -->
     <xs:element name="call-object-method" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Calls a method on an existing object that exists in a field in the environment or in a map in the environment.
+                  
+                The string and field sub-elements are passed to the method as arguments in the order they are specified.
+                If the sub-elements do not match the method arguments an error will be returned.
+                
+                The return value will be put in the named field if an value is returned and
+                if a field and optionally a map name are specified.                
+            </xs:documentation>
+        </xs:annotation>            
         <xs:complexType>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
-                <xs:element ref="string"/>
-                <xs:element ref="field"/>
+                <xs:element ref="string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Used to specify an inline String argument to the method call.
+                        </xs:documentation>
+                    </xs:annotation>            
+                </xs:element>
+                <xs:element ref="field">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Used to specify a field to be passed as an argument to the method call.
+                            The field can be in a map in the environment or if no map-name is specified
+                            then the field will come directly from the environment.
+                        </xs:documentation>
+                    </xs:annotation>                                
+                </xs:element>
             </xs:choice>
             <xs:attributeGroup ref="attlist.call-object-method"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.call-object-method">
-        <xs:attribute type="xs:string" name="obj-field-name" use="required"/>
-        <xs:attribute type="xs:string" name="obj-map-name"/>
-        <xs:attribute type="xs:string" name="method-name" use="required"/>
-        <xs:attribute type="xs:string" name="ret-field-name"/>
-        <xs:attribute type="xs:string" name="ret-map-name"/>
+        <xs:attribute type="xs:string" name="obj-field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the field the object is in that has the method to be called.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="obj-map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map the field of the object is in that has the method to be called.
+                    If this is not specified the environment will be used to find the field in.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="method-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the method to call on the given object.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="ret-field-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the field to put the result in.
+                    If not specified any return value will be ignored.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="ret-map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map the field of the return value is in.
+                    If not specified but the field name is then the environment will be used to find the field in.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="call-class-method" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Calls a static method on a class.
+                
+                The string and field sub-elements are passed to the method as arguments in the order they are specified.
+                If the sub-elements do not match the method arguments an error will be returned.
+                
+                The return value will be put in the named field if an value is returned and if a
+                field and optionally a map name are specified.                                                
+            </xs:documentation>
+        </xs:annotation>            
         <xs:complexType>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
-                <xs:element ref="string"/>
-                <xs:element ref="field"/>
+                <xs:element ref="string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Used to specify an inline String argument to the method call.
+                        </xs:documentation>
+                    </xs:annotation>                                
+                </xs:element>
+                <xs:element ref="field">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Used to specify a field to be passed as an argument to the method call.
+                            The field can be in a map in the environment or if no map-name is specified then
+                            the field will come directly from the environment.
+                        </xs:documentation>
+                    </xs:annotation>                    
+                </xs:element>
             </xs:choice>
             <xs:attributeGroup ref="attlist.call-class-method"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.call-class-method">
-        <xs:attribute type="xs:string" name="class-name" use="required"/>
-        <xs:attribute type="xs:string" name="method-name" use="required"/>
-        <xs:attribute type="xs:string" name="ret-field-name"/>
-        <xs:attribute type="xs:string" name="ret-map-name"/>
+        <xs:attribute type="xs:string" name="class-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the class to call the static method on.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="method-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the static method to call on the given class.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="ret-field-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the field to put the result in. If not specified any return value will be ignored.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="ret-map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map the field of the return value is in.
+                    If not specified but the field name is then the environment will be used to find the field in.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="create-object" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Creates an object of the given class and if the field-name is specified saves it in that field.
+                
+                The string and field sub-elements are passed to the constructor method as arguments in the order they are specified.  
+                If the sub-elements do not match the constructor method arguments an error will be returned.
+            </xs:documentation>
+        </xs:annotation>            
         <xs:complexType>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
-                <xs:element ref="string"/>
-                <xs:element ref="field"/>
+                <xs:element ref="field">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Used to specify an inline String argument to the constructor method.
+                        </xs:documentation>
+                    </xs:annotation>                                
+                </xs:element>
+                <xs:element ref="string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Used to specify a field to be passed as an argument to the constructor method.
+                            The field can be in a map in the environment or if no map-name is specified then
+                            the field will come directly from the environment.
+                        </xs:documentation>
+                    </xs:annotation>            
+                </xs:element>
             </xs:choice>
             <xs:attributeGroup ref="attlist.create-object"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.create-object">
-        <xs:attribute type="xs:string" name="class-name" use="required"/>
-        <xs:attribute type="xs:string" name="field-name"/>
-        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="class-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the class to construct an object of.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of a field to put the new object in.  
+                    If not specified the object will be created but ignored after that.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map the field will go in.
+                    If not specified the field will be put in the environment.
+                </xs:documentation>
+             </xs:annotation>            
+        </xs:attribute>
     </xs:attributeGroup>
     <!-- Operations to copy map fields in the current env to context specific containers -->
     <!-- Event specific operations -->
     <xs:element name="field-to-request" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The field-to-request tag copies a field from a map to the specified servlet request attribute.                
+                The tag is only used when the simple-method is called as an event, it is ignored otherwise.                
+            </xs:documentation>
+        </xs:annotation>                            
         <xs:complexType>
             <xs:attributeGroup ref="attlist.field-to-request"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.field-to-request">
-        <xs:attribute type="xs:string" name="map-name"/>
-        <xs:attribute type="xs:string" name="field-name" use="required"/>
-        <xs:attribute type="xs:string" name="request-name"/>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment.
+                    If not specified the field-name will be used to get the field from the method environment.
+                </xs:documentation>
+            </xs:annotation>                                
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name (key) of the map field to use.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="request-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the request attribute to use. Defaults to the field-name.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="field-to-session" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The field-to-session tag copies a field from a map to the specified servlet session attribute.                
+                The tag is only used when the simple-method is called as an event, it is ignored otherwise.                
+            </xs:documentation>
+        </xs:annotation>        
         <xs:complexType>
             <xs:attributeGroup ref="attlist.field-to-session"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.field-to-session">
-        <xs:attribute type="xs:string" name="map-name"/>
-        <xs:attribute type="xs:string" name="field-name" use="required"/>
-        <xs:attribute type="xs:string" name="session-name"/>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment.
+                    If not specified the field-name will be used to get the field from the method environment.                    
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name (key) of the map field to use.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="session-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the session attribute to use. Defaults to the field-name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="request-to-field" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The request-to-field tag copies an attribute from the servlet request to a field of a map in the method environment.                
+                The tag is only used when the simple-method is called as an event, it is ignored otherwise (except the default value, if specified).                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.request-to-field"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.request-to-field">
-        <xs:attribute type="xs:string" name="map-name"/>
-        <xs:attribute type="xs:string" name="field-name" use="required"/>
-        <xs:attribute type="xs:string" name="default"/>
-        <xs:attribute type="xs:string" name="request-name"/>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment.
+                    If not specified the field-name will be used to set the field in the method environment.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name (key) of the map field to use.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="default">
+            <xs:annotation>
+                <xs:documentation>
+                    A default value to use if the request attribute is null or is a String and is empty.
+                    This will also be used when NOT running as an event.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="request-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the request attribute to use. Defaults to the field-name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="request-parameters-to-list" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The request-parameters-to-list tag appends a request parameter values from the servlet request to the specified list.                
+                The tag is only used when the simple-method is called as an event, it is ignored otherwise.                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.request-parameters-to-list"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.request-parameters-to-list">
-        <xs:attribute type="xs:string" name="request-name" use="required"/>
-        <xs:attribute type="xs:string" name="list-name"/>
+        <xs:attribute type="xs:string" name="request-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the request parameter values to use.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="list-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the list in the method environment that the request parameter values will be appended to. (default: request-name)
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="session-to-field" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The session-to-field tag copies an attribute from the servlet session to a field of a map in the method environment.                
+                The tag is only used when the simple-method is called as an event, it is ignored otherwise (except the default value, if specified).                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.session-to-field"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.session-to-field">
-        <xs:attribute type="xs:string" name="map-name"/>
-        <xs:attribute type="xs:string" name="field-name" use="required"/>
-        <xs:attribute type="xs:string" name="default"/>
-        <xs:attribute type="xs:string" name="session-name"/>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment.
+                    If not specified the field-name will be used to set the field in the method environment.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name (key) of the map field to use.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="default">
+            <xs:annotation>
+                <xs:documentation>
+                    A default value to use if the session attribute is null or is a String and is empty.
+                    This will also be used when NOT running as an event.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="session-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the session attribute to use. Defaults to the field-name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="webapp-property-to-field" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The webapp-property-to-field tag copies a property value from a properties file in a ServletContext resource to a field.                
+                The tag is only used when the simple-method is called as an event, it is ignored otherwise (except the default value, if specified).                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.webapp-property-to-field"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.webapp-property-to-field">
-        <xs:attribute type="xs:string" name="resource" use="required"/>
-        <xs:attribute type="xs:string" name="property" use="required"/>
-        <xs:attribute type="xs:string" name="default"/>
-        <xs:attribute type="xs:string" name="field-name" use="required"/>
-        <xs:attribute type="xs:string" name="session-name"/>
+        <xs:attribute type="xs:string" name="resource" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The resource location of the properties file inside the webapp, and relative to the root of the webapp (can be inside a war file).
+                    An example of this is "/WEB-INF/myprops.properties".
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="property" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The property whose value will be put in the field.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="default">
+            <xs:annotation>
+                <xs:documentation>
+                    A default value to use if the property value is null or empty.
+                    This will also be used when NOT running as an event.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment.
+                    If not specified the field-name will be used to set the field in the method environment.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="session-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name (key) of the map field to use.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <!-- Service specific operations -->
     <xs:element name="field-to-result" substitutionGroup="ServiceOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The field-to-result tag copies a field from a map to the specified service result field.                
+                The tag is only used when the simple-method is called as a service, it is ignored otherwise.                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.field-to-result"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.field-to-result">
-        <xs:attribute type="xs:string" name="map-name"/>
-        <xs:attribute type="xs:string" name="field-name" use="required"/>
-        <xs:attribute type="xs:string" name="result-name"/>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment.
+                    If not specified the field-name will be used to get the field from the method environment.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name (key) of the map field to use.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="result-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the request attribute to use. Defaults to the field-name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <!-- Environment specific operations -->
     <xs:element name="map-to-map" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The map-to-map tag copies all fields from one map to another map.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.map-to-map"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.map-to-map">
-        <xs:attribute type="xs:string" name="map-name" use="required"/>
-        <xs:attribute type="xs:string" name="to-map-name"/>
+        <xs:attribute type="xs:string" name="map-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment the fields will come from.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="to-map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment the fields will go to. If empty the fields will be copied to the environment.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="field-to-list" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The field-to-list tag appends a field to the specified list.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.field-to-list"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.field-to-list">
-        <xs:attribute type="xs:string" name="map-name"/>
-        <xs:attribute type="xs:string" name="field-name" use="required"/>
-        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment. If not specified the field-name will be used to get the field from the method environment.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name (key) of the map field to use.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="list-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the list in the method environment that the object will be appended to.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="list-to-list" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.list-to-list"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.list-to-list">
-        <xs:attribute type="xs:string" name="list-name" use="required"/>
-        <xs:attribute type="xs:string" name="to-list-name" use="required"/>
+        <xs:attribute type="xs:string" name="list-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="to-list-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="order-map-list" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
                 <xs:element maxOccurs="unbounded" ref="order-by"/>
@@ -563,20 +1218,60 @@
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.order-map-list">
-        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute type="xs:string" name="list-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
 
     <xs:element name="set" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.set"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.set">
-        <xs:attribute type="xs:string" name="field" use="required"/>
-        <xs:attribute type="xs:string" name="from-field"/>
-        <xs:attribute type="xs:string" name="value"/>
-        <xs:attribute type="xs:string" name="default-value"/>
+        <xs:attribute type="xs:string" name="field" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="from-field">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="value">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="default-value">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="type">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>            
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="PlainString"/>
@@ -595,6 +1290,11 @@
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="set-if-null" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>            
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -603,6 +1303,11 @@
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="set-if-empty" default="true">
+            <xs:annotation>
+