blob: c954efbf5269c992df706c15e02d54c2f4a2d266 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://ofbiz.apache.org/Simple-Method" targetNamespace="http://ofbiz.apache.org/Simple-Method">
<!--
==================================================
========== The Simple Methods Section ==========
==================================================
(see further down for the Simple Map Processor Section)
-->
<!-- Abstract elements and element groups -->
<xs:element name="CallOperations" abstract="true"/>
<xs:element name="EventOperations" abstract="true"/>
<xs:element name="ServiceOperations" abstract="true"/>
<xs:element name="EnvOperations" abstract="true"/>
<xs:element name="EntityMiscOperations" abstract="true"/>
<xs:element name="EntityFindOperations" abstract="true"/>
<xs:element name="EntityValueOperations" abstract="true"/>
<xs:element name="EntityListOperations" abstract="true"/>
<xs:element name="EntityTxOperations" abstract="true"/>
<xs:element name="ControlOperations" abstract="true"/>
<xs:element name="IfBasicOperations" abstract="true"/>
<xs:element name="IfOtherOperations" abstract="true"/>
<xs:element name="OtherOperations" abstract="true"/>
<xs:group name="AllOperations">
<xs:choice>
<xs:element ref="CallOperations"/>
<xs:element ref="EventOperations"/>
<xs:element ref="ServiceOperations"/>
<xs:element ref="EnvOperations"/>
<xs:element ref="EntityMiscOperations"/>
<xs:element ref="EntityFindOperations"/>
<xs:element ref="EntityValueOperations"/>
<xs:element ref="EntityListOperations"/>
<xs:element ref="EntityTxOperations"/>
<xs:element ref="ControlOperations"/>
<xs:element ref="IfBasicOperations"/>
<xs:element ref="IfOtherOperations"/>
<xs:element ref="OtherOperations"/>
</xs:choice>
</xs:group>
<xs:group name="IfConditions">
<xs:choice>
<xs:element ref="IfCombineConditions"/>
<xs:element ref="IfBasicOperations"/>
</xs:choice>
</xs:group>
<xs:element name="IfCombineConditions" abstract="true"/>
<!-- Reusable types -->
<xs:simpleType name="booleanConst">
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="booleanExpr">
<xs:restriction base="xs:string">
<xs:pattern value="\$\{.+\}|true|false" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="javaClassName">
<xs:annotation>
<xs:documentation>
The Java data type.
Optional. Attribute type: constant. Attribute must contain a valid Java class name.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[a-zA-Z_]{1}[a-zA-Z0-9_$.]+" />
</xs:restriction>
</xs:simpleType>
<!-- Reusable attributes and attribute groups -->
<xs:simpleType name="fieldType">
<xs:annotation>
<xs:documentation>
The name of the field to set. The target of the assignment.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="error-list-name">
<xs:annotation>
<xs:documentation>
The name of the error message list. It will be created if it does not exist.
Defaults to "error_list".
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
<xs:complexType name="attlist.operatorRequired">
<xs:attribute name="operator" use="required">
<xs:annotation>
<xs:documentation>
The comparison operator. The operator describes the l-value compared to the r-value.
The "contains" operator returns true if the l-value contains the r-value.
This operator does not perform type conversions.
The l-value must be a collection type or a String. A null l-value evaluates to false.
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="equals"/>
<xs:enumeration value="not-equals"/>
<xs:enumeration value="less"/>
<xs:enumeration value="less-equals"/>
<xs:enumeration value="greater"/>
<xs:enumeration value="greater-equals"/>
<xs:enumeration value="contains"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="attlist.operatorOptionalRvalue">
<xs:attribute name="operator" use="required">
<xs:annotation>
<xs:documentation>
The comparison operator. The operator describes the l-value compared to the r-value.
The "contains" operator returns true if the l-value contains the r-value.
This operator does not perform type conversions.
The l-value must be a collection type or a String. A null l-value evaluates to false.
The "is-null", "is-not-null", and "is-empty" operators
do not require an r-value. Any r-values will be ignored.
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="equals"/>
<xs:enumeration value="not-equals"/>
<xs:enumeration value="less"/>
<xs:enumeration value="less-equals"/>
<xs:enumeration value="greater"/>
<xs:enumeration value="greater-equals"/>
<xs:enumeration value="contains"/>
<xs:enumeration value="is-null"/>
<xs:enumeration value="is-not-null"/>
<xs:enumeration value="is-empty"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="attlist.check-permission">
<xs:attribute name="permission" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the permission.
The user must belong to a security group that includes this permission.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="action" type="xs:string">
<xs:annotation>
<xs:documentation>
If an action is specified the user can have one of two permissions: the permission + "_ADMIN" or permission + action.
Examples of actions include "_CREATE", "_VIEW", etc.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="delegator-name">
<xs:annotation>
<xs:documentation>
An alternate delegator name. When specified, the entity operation will use the
alternate delegator instead of the current delegator.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!--
=============================
===== The Root Elements =====
=============================
-->
<xs:element name="simple-methods">
<xs:annotation>
<xs:documentation>
The document-level element of Mini-language files.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="simple-method" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="simple-method">
<xs:annotation>
<xs:documentation>
Contains a block of Mini-language code.
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.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group ref="AllOperations" minOccurs="0" maxOccurs="unbounded" />
<xs:attribute name="method-name" type="javaClassName" 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.
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="short-description" type="xs:string">
<xs:annotation>
<xs:documentation>
A short description of the method - used for documentation.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="login-required" type="booleanConst">
<xs:annotation>
<xs:documentation>
Require a user login to run this method. Defaults to "true".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="use-transaction" type="booleanConst">
<xs:annotation>
<xs:documentation>
Create a transaction if none exists for this thread. Defaults to "true".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="default-error-code" type="xs:string">
<xs:annotation>
<xs:documentation>
The default error return code. Defaults to "error".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="default-success-code" type="xs:string">
<xs:annotation>
<xs:documentation>
The default success return code. Defaults to "success".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="event-request-object-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the javax.servlet.ServletRequest object. Defaults to "request".
Used when the simple method is invoked as an event, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="event-response-object-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the javax.servlet.ServletResponse object. Defaults to "response".
Used when the simple method is invoked as an event, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="event-session-object-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the javax.servlet.http.HttpSession object. Defaults to "session".
Used when the simple method is invoked as an event, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="event-response-code-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the event response code. Defaults to "_response_code_".
Used when the simple method is invoked as an event, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="event-error-message-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the event error message. Defaults to "_error_message_".
Used when the simple method is invoked as an event, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="event-error-message-list-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the event error message list. Defaults to "_error_message_list_".
Used when the simple method is invoked as an event, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="event-event-message-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the event message. Defaults to "_event_message_".
Used when the simple method is invoked as an event, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="event-event-message-list-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the event message list. Defaults to "_event_message_list_".
Used when the simple method is invoked as an event, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="service-response-message-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the service response message. Defaults to "responseMessage".
Used when the simple method is invoked as a service, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="service-error-message-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the service error message. Defaults to "errorMessage".
Used when the simple method is invoked as a service, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="service-error-message-list-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the service error message list. Defaults to "errorMessageList".
Used when the simple method is invoked as a service, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="service-error-message-map-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the service error message map. Defaults to "errorMessageMap".
Used when the simple method is invoked as a service, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="service-success-message-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the service success message. Defaults to "successMessage".
Used when the simple method is invoked as a service, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="service-success-message-list-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field containing the service success message list. Defaults to "successMessageList".
Used when the simple method is invoked as a service, it is ignored otherwise.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!--
=================================
===== Assignment Operations =====
=================================
-->
<xs:element name="add-error" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Adds an error message to an error message list.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element ref="fail-message" />
<xs:element ref="fail-property" />
</xs:choice>
<xs:attribute name="error-list-name" type="error-list-name"/>
</xs:complexType>
</xs:element>
<xs:element name="assert" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Adds an error message to the error message list for each condition that evaluates to false.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="IfConditions" />
<xs:attribute type="xs:string" name="title">
<xs:annotation>
<xs:documentation>
The title of the assert operation. The title is used in test reports.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="error-list-name" type="error-list-name"/>
</xs:complexType>
</xs:element>
<xs:element name="check-id" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Evaluates the specified field, and adds an error message to the error message list if the field's value is not a valid database ID value.
<![CDATA[Valid IDs can be any sequence of characters or digits but must not contain the following characters:
space [ ], double quote ["], single quote ['], ampersand [&], question mark [?],
less-than sign [<], greater-than sign [>], forward-slash [/], back-slash [\].]]>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0">
<xs:element ref="fail-message" />
<xs:element ref="fail-property" />
</xs:choice>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the ID value to check.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="error-list-name" type="error-list-name"/>
</xs:complexType>
</xs:element>
<xs:element name="check-permission" substitutionGroup="IfOtherOperations">
<xs:annotation>
<xs:documentation>
Checks to see if the current user has the specified permission.
If the user does not have the specified permission or if there is no user associated with the context
then the failure message from fail-message or fail-property will be added to the
specified error list.
Note that this element must be followed by the check-errors element for it to do anything meaningful.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.check-permission">
<xs:sequence>
<xs:element name="alt-permission" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Declares an alternate permission. Alternate permissions are checked when the primary permission check fails.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.check-permission">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:choice>
<xs:element ref="fail-message" />
<xs:element ref="fail-property" />
</xs:choice>
</xs:sequence>
<xs:attribute name="error-list-name" type="error-list-name"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="clear-field" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Sets the value of the specified field to null.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="create-object" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Creates an instance of the specified class.
The string and field sub-elements are passed to the constructor method as arguments in the order they are specified.
A runtime exception will be thrown if the sub-elements do not match the constructor method arguments.
Deprecated - use the script element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field" />
<xs:element ref="string" />
</xs:choice>
<xs:attribute name="field" type="fieldType" use="required" />
<xs:attribute name="class-name" type="javaClassName" use="required">
<xs:annotation>
<xs:documentation>
The name of the class to construct an instance of.
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="fail-message">
<xs:annotation>
<xs:documentation>
Declares an error message.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="message" use="required">
<xs:annotation>
<xs:documentation>
The error message text.
Required. Attribute type: constant+expr
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="fail-property">
<xs:annotation>
<xs:documentation>
Declares an error message found in a properties file.
Typically used for internationalized messages.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="resource" use="required">
<xs:annotation>
<xs:documentation>
The name of a properties file on the classpath.
Required. Attribute type: constant
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="property" use="required">
<xs:annotation>
<xs:documentation>
The property key.
Required. Attribute type: constant
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="field">
<xs:annotation>
<xs:documentation>
Declares an environment field to be passed as an argument to an object method call.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the environment field to use.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="javaClassName">
<xs:annotation>
<xs:documentation>
The Java class of the argument. Defaults to "java.lang.String".
It should be the type specified in the method signature, not the type of the object being
passed in.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="field-to-list" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Appends an object to the specified list.
Deprecated - use the set element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The field name of the object to append. The operation does nothing if the field does not exist.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The field name of the list that the object will be appended to.
If the list does not exist, one will be created.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="field-to-request" substitutionGroup="EventOperations">
<xs:annotation>
<xs:documentation>
Copies a field to a servlet request attribute.
Valid only when the simple-method is called as an event, it is ignored otherwise.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to copy from. The source of the assignment.
The operation does nothing if the field does not exist.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="request-name">
<xs:annotation>
<xs:documentation>
The servlet request attribute name. The target of the assignment.
Defaults to the value of the field attribute.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="field-to-result" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Copies a field to a service OUT attribute.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to copy from. The source of the assignment.
The operation does nothing if the field does not exist.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="result-name">
<xs:annotation>
<xs:documentation>
The name of the result field to set. The target of the assignment.
Defaults to the value of the field attribute.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="field-to-session" substitutionGroup="EventOperations">
<xs:annotation>
<xs:documentation>
Copies a field to a servlet session attribute.
Valid only when the simple-method is called as an event, it is ignored otherwise.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to copy from. The source of the assignment.
The operation does nothing if the field does not exist.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="session-name">
<xs:annotation>
<xs:documentation>
The servlet session attribute name. The target of the assignment.
Defaults to the value of the field attribute.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="first-from-list" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Assigns the first (lowest order) entry in a list to a field.
If the list does not exist or is empty, assigns null to a field.
Deprecated - use the set element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="entry" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to set. The target of the assignment.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the list that contains the object to copy.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="list-to-list" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Copy a list to another list.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
Name of the list to copy from. The operation does nothing if the list does not exist.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="to-list" use="required">
<xs:annotation>
<xs:documentation>
Name of the list to copy to. If the list does not exist, one will be created.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="map-to-map" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Copies a map to another map.
If a target map is not specified, the source map is copied to the current
environment (memory space).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The name of the map to copy from. The operation does nothing if the map does not exist.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="to-map">
<xs:annotation>
<xs:documentation>
The name of the map to copy to. If the target map does not exist, one will be created.
If this attribute is empty, the source map will be copied to the current environment.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="now" substitutionGroup="OtherOperations">
<xs:annotation>
<xs:documentation>
Sets a field to the current system time.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
<xs:attribute name="type">
<xs:annotation>
<xs:documentation>
The field data type. Defaults to "java.sql.Timestamp".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="java.sql.Timestamp"/>
<xs:enumeration value="java.sql.Date" />
<xs:enumeration value="java.sql.Time" />
<xs:enumeration value="java.util.Date" />
<xs:enumeration value="java.lang.Long" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="now-date-to-env" substitutionGroup="OtherOperations">
<xs:annotation>
<xs:documentation>
Sets a field to a java.sql.Date object initialized to the current system time.
Deprecated - use now.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="now-timestamp" substitutionGroup="OtherOperations">
<xs:annotation>
<xs:documentation>
Sets a field to a java.sql.Timestamp object initialized to the current system time.
Deprecated - use now.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="order-by">
<xs:annotation>
<xs:documentation>
Declares a field or map key to sort on.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the field or map key to sort on.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="order-map-list" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Sorts a list of maps. Maps are sorted by the keys specified in the order-by sub-elements.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="order-by" />
</xs:sequence>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing the list to be sorted. The operation does nothing if the list is not found.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="property-to-field" substitutionGroup="OtherOperations">
<xs:annotation>
<xs:documentation>
Assigns a resource property value to a field.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
<xs:attribute type="xs:string" name="resource" use="required">
<xs:annotation>
<xs:documentation>
The name of a properties resource. Can be a file on the classpath or
a resource defined in the SystemProperty entity.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="property" use="required">
<xs:annotation>
<xs:documentation>
The property key.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="default">
<xs:annotation>
<xs:documentation>
The default value to use if the specified property value is null or empty.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="booleanConst" name="no-locale">
<xs:annotation>
<xs:documentation>
Suppress property value localization. The user's/system locale will be ignored
when retriving the property value.
Defaults to "false".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="arg-list">
<xs:annotation>
<xs:documentation>
The name of an argument list to be used with a formatting string.
The argument list is applied to the property value.
The attribute does nothing if the argument list is not found.
See the java.text.MessageFormat class for more information.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="arg-list-name">
<xs:annotation>
<xs:documentation>
Deprecated - use the arg-list attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="request-parameters-to-list" substitutionGroup="EventOperations">
<xs:annotation>
<xs:documentation>
Appends a servlet request parameter list to a list.
Valid only when the simple-method is called as an event, it is ignored otherwise.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="request-name" use="required">
<xs:annotation>
<xs:documentation>
The servlet request parameter name. All matching parameter values will be added to the list.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="list">
<xs:annotation>
<xs:documentation>
The name of the field containing the list. If the list does not exist, one will be created.
Defaults to the request-name attribute value.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="list-name">
<xs:annotation>
<xs:documentation>
Deprecated - use the list attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="request-to-field" substitutionGroup="EventOperations">
<xs:annotation>
<xs:documentation>
Copies a servlet request attribute to a field.
Valid only when the simple-method is called as an event, it is ignored otherwise.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
<xs:attribute type="xs:string" name="request-name">
<xs:annotation>
<xs:documentation>
The servlet request attribute name. Defaults to the value of field attribute.
Optional. Attribute types: constant, ${expression}.
</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 does not exist.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="session-to-field" substitutionGroup="EventOperations">
<xs:annotation>
<xs:documentation>
Copies a servlet session attribute to a field.
Valid only when the simple-method is called as an HTTP event, it is ignored otherwise.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
<xs:attribute type="xs:string" name="session-name">
<xs:annotation>
<xs:documentation>
The servlet session attribute name. Defaults to the value of the field attribute.
Optional. Attribute types: constant, ${expression}.
</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 does not exist.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="set" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Assigns a field from an expression or script, or from a constant value. Also supports a default value and type conversion.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
<xs:attribute type="xs:string" name="from">
<xs:annotation>
<xs:documentation>
An expression or script that returns an object or null. The source of the assignment.
A script must be prefixed with the script language followed by a colon (":").
Required if the value attribute is empty. Attribute types: expression, script.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="from-field">
<xs:annotation>
<xs:documentation>
Deprecated - use the from attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="value">
<xs:annotation>
<xs:documentation>
A constant value, or a constant that includes an expression. The source of the assignment.
Required if the from attribute is empty. Attribute type: constant+expr.
Defaults to java.lang.String data type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="default">
<xs:annotation>
<xs:documentation>
A default value that is used when the from attribute evaluates to null or empty.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="default-value">
<xs:annotation>
<xs:documentation>
Deprecated - use the default attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="javaClassName" name="type">
<xs:annotation>
<xs:documentation>
The Java data type to convert to. "NewList" will create a new java.util.List, "NewMap" will create a new java.util.Map.
Otherwise, the attribute must contain a valid Java class name.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="format">
<xs:annotation>
<xs:documentation>
Format to be used for object type conversion. Used when the type attribute is not empty.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="set-if-null" type="booleanConst">
<xs:annotation>
<xs:documentation>
Controls if the target field can be set to null when the from attribute evaluates to null.
Defaults to "false".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="set-if-empty" type="booleanConst">
<xs:annotation>
<xs:documentation>
Controls if the target field can be set to an empty value. The meaning of "empty" depends on the Java data type.
Defaults to "true".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="set-calendar" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Adjusts a Timestamp by a specified time duration.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
<xs:attribute type="xs:string" name="from">
<xs:annotation>
<xs:documentation>
An expression or script that returns an object or null. The source of the assignment.
A script must be prefixed with the script language followed by a colon (":").
Required if the value attribute is empty. Attribute types: expression, script.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="from-field">
<xs:annotation>
<xs:documentation>
Deprecated - use the from attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="value">
<xs:annotation>
<xs:documentation>
A constant value, or a constant that includes an expression. The source of the assignment.
Required if the from attribute is empty. Attribute type: constant+expr.
Defaults to java.lang.String data type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="default">
<xs:annotation>
<xs:documentation>
A default value that is used when the from attribute evaluates to null or empty.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="default-value">
<xs:annotation>
<xs:documentation>
Deprecated - use the default attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="set-if-null" type="booleanConst">
<xs:annotation>
<xs:documentation>
Controls if the target field can be set to null when the from attribute evaluates to null.
Defaults to "false".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="years">
<xs:annotation>
<xs:documentation>
Add (optionally using +) or subtract (using -) a number of year(s).
If an expression is used, it should evaluate to an integer.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="months">
<xs:annotation>
<xs:documentation>
Add (optionally using +) or subtract (using -) a number of month(s).
If an expression is used, it should evaluate to an integer.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="days">
<xs:annotation>
<xs:documentation>
Add (optionally using +) or subtract (using -) a number of days(s).
If an expression is used, it should evaluate to an integer.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="hours">
<xs:annotation>
<xs:documentation>
Add (optionally using +) or subtract (using -) a number of hour(s).
If an expression is used, it should evaluate to an integer.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="minutes">
<xs:annotation>
<xs:documentation>
Add (optionally using +) or subtract (using -) a number of minute(s).
If an expression is used, it should evaluate to an integer.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="seconds">
<xs:annotation>
<xs:documentation>
Add (optionally using +) or subtract (using -) a number of second(s).
If an expression is used, it should evaluate to an integer.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="millis">
<xs:annotation>
<xs:documentation>
Add (optionally using +) or subtract (using -) a number of millisecond(s).
If an expression is used, it should evaluate to an integer.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="period-align-start">
<xs:annotation>
<xs:documentation>
Align the adjusted date to the start of a period.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="year" />
<xs:enumeration value="month" />
<xs:enumeration value="week" />
<xs:enumeration value="day" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="period-align-end">
<xs:annotation>
<xs:documentation>
Align the adjusted date to the end of a period.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="year" />
<xs:enumeration value="month" />
<xs:enumeration value="week" />
<xs:enumeration value="day" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:string" name="locale">
<xs:annotation>
<xs:documentation>
A locale value (eg: en). The locale selects the calendar to be used for the adjustment.
Defaults to the environment locale.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="time-zone">
<xs:annotation>
<xs:documentation>
A time zone value (eg: GMT).
Defaults to the environment time zone.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="set-current-user-login" substitutionGroup="OtherOperations">
<xs:annotation>
<xs:documentation>
Sets the UserLogin entity value to be used for authentication for the rest of the method.
This is mostly used for calling services, etc.
This element is deprecated. You can pass an alternate UserLogin
entity value to the called service's IN attributes.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the UserLogin entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="set-service-fields" substitutionGroup="CallOperations">
<xs:annotation>
<xs:documentation>
Copies elements from a source map that match a service's IN or OUT attributes to a target map.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="service-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the service.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The map to copy the matching attributes from.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="to-map" use="required">
<xs:annotation>
<xs:documentation>
The map to copy the matching attributes to.
If the map does not exist, a new one will be created.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="mode">
<xs:annotation>
<xs:documentation>
The service attributes mode - IN or OUT. Defaults to "IN".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="IN" />
<xs:enumeration value="OUT" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="string">
<xs:annotation>
<xs:documentation>
Declares a java.lang.String to be passed as an argument to a method call.
The String can be contained in the value attribute and/or in the element body.
The element body text is appended to the value attribute text.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value">
<xs:annotation>
<xs:documentation>
The String text.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="string-append" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Performs string concatenation and formatting. The operation starts by applying
an argument list (if found) to the string attribute value, the result is
prepended by the prefix attribute value, and the suffix attribute value is
appended to the result. If the string specified in the field attribute exists,
the final result is appended to it, else the field is set to the final result.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The target of the string concatention.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="string" use="required">
<xs:annotation>
<xs:documentation>
The string to append to the field named in the field attribute.
This can be a formatting string that is used with the argument list
specified in the arg-list attribute.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="arg-list">
<xs:annotation>
<xs:documentation>
The name of an argument list to be used with a formatting string.
The argument list is applied to the string attribute value.
The attribute does nothing if the argument list is not found.
See the java.text.MessageFormat class for more information.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="prefix">
<xs:annotation>
<xs:documentation>
A string that will be prepended to the string attribute value.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="suffix">
<xs:annotation>
<xs:documentation>
A string that will be appended to the string attribute value.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="string-to-list" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Adds a string to a list of strings. Deprecated - use the set element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="string" use="required">
<xs:annotation>
<xs:documentation>
The string to add to the list specified in the list attribute.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
List to add the string to. If the list does not exist, one will be created.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="arg-list">
<xs:annotation>
<xs:documentation>
The name of an argument list to be used with a formatting string.
The argument list is applied to the string attribute value.
The attribute does nothing if the argument list is not found.
See the java.text.MessageFormat class for more information.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="message-field">
<xs:annotation>
<xs:documentation>
Inserts a message above a field (used in conjunction with @fieldErrors FTL macro).
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="to-string" substitutionGroup="EnvOperations">
<xs:annotation>
<xs:documentation>
Converts an object to a string. Deprecated - use the set element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing the object to convert.
The operation does nothing if the object is not found.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="format">
<xs:annotation>
<xs:documentation>
The format to use for the conversion.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="numeric-padding">
<xs:annotation>
<xs:documentation>
Left-pad the string with the specified number of zeroes.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="webapp-property-to-field" substitutionGroup="EventOperations">
<xs:annotation>
<xs:documentation>
Copies a property value from a properties file in a ServletContext resource to a field.
Valid only when the simple-method is called as an event, it is ignored otherwise.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="fieldType" use="required" />
<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".
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="property" use="required">
<xs:annotation>
<xs:documentation>
The property key.
Required. Attribute types: constant, ${expression}.
</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.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!--
==========================================
===== Conditional/Looping Statements =====
==========================================
-->
<xs:element name="and" substitutionGroup="IfCombineConditions">
<xs:annotation>
<xs:documentation>
Combines conditional elements using a boolean AND.
Evaluates to true if all sub-elements evaluate to true.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="IfConditions"/>
</xs:complexType>
</xs:element>
<xs:element name="break" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Causes script execution to exit the nearest enclosing loop element.
Throws an exception if there is no enclosing looping element.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="check-errors" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Halts script execution if the error message list contains any messages.
The error message list is returned to the calling process.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="error-code">
<xs:annotation>
<xs:documentation>
The error code to return to the calling process.
Defaults to value of the containing simple-method default-error-code attribute.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="error-list-name" type="error-list-name"/>
</xs:complexType>
</xs:element>
<xs:element name="condition">
<xs:annotation>
<xs:documentation>
Combines a group of conditional elements into a single logical (true/false) expression.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group ref="IfConditions"/>
</xs:complexType>
</xs:element>
<xs:element name="continue" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Causes script execution to return to the beginning of the nearest enclosing loop element.
Throws an exception if there is no enclosing looping element.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="else">
<xs:annotation>
<xs:documentation>
Contains a block of code to be executed when a condition evaluates to false.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations"/>
</xs:complexType>
</xs:element>
<xs:element name="else-if">
<xs:annotation>
<xs:documentation>
Contains a condition and a block of code to be evaluated/executed when a parent condition evaluates to false.
This element must contain two sub-elements: condition and then.
If the condition of the parent element evaluates to false, then this element's condition will be evaluated,
and if that condition evaluates to true, then the operations under the then element will be run.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="condition" />
<xs:element ref="then" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="if" substitutionGroup="IfOtherOperations">
<xs:annotation>
<xs:documentation>
Performs conditional processing on blocks of code.
This operation specifies combinations of conditions, alternate conditions,
and operations to run based on the evaluation of condition expressions.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="condition" />
<xs:element ref="then" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="else-if" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- FIXME: We need two versions of this element. -->
<xs:element name="if-compare" substitutionGroup="IfBasicOperations">
<xs:annotation>
<xs:documentation>
Compares a field to a constant value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.operatorOptionalRvalue">
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will be compared. The l-value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="value" use="required">
<xs:annotation>
<xs:documentation>
The value that the field will be compared to. The r-value.
Ignored when the operator attribute equals "is-null", "is-not-null", or "is-empty" - required otherwise. Attribute type: constant+expr.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="javaClassName">
<xs:annotation>
<xs:documentation>
The Java data type. Both values will be converted to this type before comparison.
Invalid when the operator attribute value is "contains".
Optional. Attribute type: constant. Attribute must contain a valid Java class name.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="format">
<xs:annotation>
<xs:documentation>
Format used for type conversions. Valid only when the type attribute is not empty.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- FIXME: We need two versions of this element. -->
<xs:element name="if-compare-field" substitutionGroup="IfBasicOperations">
<xs:annotation>
<xs:documentation>
Compares a field to another field.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.operatorRequired">
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will be compared. The l-value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="to-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will be compared to the field specified in the field attribute.
The r-value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="javaClassName"/>
<xs:attribute type="xs:string" name="format">
<xs:annotation>
<xs:documentation>
Format used for type conversions. Valid only when the type attribute is not empty.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- FIXME: We need two versions of this element. -->
<xs:element name="if-empty" substitutionGroup="IfBasicOperations">
<xs:annotation>
<xs:documentation>
Tests if a field is null or empty.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to test.
Object to test must be a collection, string, or a class that implements org.apache.ofbiz.base.lang.IsEmpty.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!-- FIXME: We need two versions of this element. -->
<xs:element name="if-has-permission" substitutionGroup="IfBasicOperations">
<xs:annotation>
<xs:documentation>
Tests if the current user has the specified permission.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.check-permission">
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="if-instance-of" substitutionGroup="IfBasicOperations">
<xs:annotation>
<xs:documentation>
Tests if a field is an instance of a Java class.
The operation will execute its contained block of code if the condition evaluates to true,
otherwise it will execute the block of code in its else sub-element (if one exists).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to test.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="class" use="required">
<xs:annotation>
<xs:documentation>
The name of the class to test for.
Required. Attribute type: constant. Attribute must contain a valid Java class name.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="if-not-empty" substitutionGroup="IfOtherOperations">
<xs:annotation>
<xs:documentation>
Tests if a field is not null and not empty.
The operation will execute its contained block of code if the condition evaluates to true,
otherwise it will execute the block of code in its else sub-element (if one exists).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to test.
Object to test must be a collection, string, or a class that implements org.apache.ofbiz.base.lang.IsEmpty.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!-- FIXME: We need two versions of this element. -->
<xs:element name="if-regexp" substitutionGroup="IfBasicOperations">
<xs:annotation>
<xs:documentation>
Tests if a field matches a regular expression.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to test.
The field object will be converted to a string before the test.
An empty string will be used if the field object is not found.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="expr" use="required">
<xs:annotation>
<xs:documentation>
The regular expression to test for.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!-- FIXME: We need two versions of this element. -->
<xs:element name="if-validate-method" substitutionGroup="IfBasicOperations">
<xs:annotation>
<xs:documentation>
Invokes a Java class static method that returns a boolean value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:element minOccurs="0" ref="else" />
</xs:sequence>
<xs:attribute type="xs:string" name="field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field to use as the method argument.
The field object will be converted to a string before the method call.
An empty string will be used if the field object is not found.
Required. Attribute type: expression
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="method" use="required">
<xs:annotation>
<xs:documentation>
The name of the method that will be called to validate the field.
It must be a static method that takes a single String parameter and return a boolean.
Required. Attribute type: constant
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="class">
<xs:annotation>
<xs:documentation>
The name of the class that contains the validation method. Defaults to "org.apache.ofbiz.base.util.UtilValidate".
Optional. Attribute type: constant
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="iterate" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Contains a block of code that is executed once for each entry in a collection.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the collection to iterate over.
The operation does nothing if the field is not found.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="entry" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the current collection entry.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="iterate-map" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Contains a block of code that is executed once for each entry in a map.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the map to iterate over.
The operation does nothing if the field is not found.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="key" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the current map entry key.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="value" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the current map entry value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="loop" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Contains a block of code that is executed repeatedly until a maximum count is reached.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:attribute type="xs:string" name="count" use="required">
<xs:annotation>
<xs:documentation>
A maximum count expression. Defaults to "0" (zero).
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="field">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the current count.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="not" substitutionGroup="IfCombineConditions">
<xs:annotation>
<xs:documentation>
Inverts a conditional element using a boolean NOT.
Evaluates to true if the sub-element evaluates to false.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group ref="IfConditions"/>
</xs:complexType>
</xs:element>
<xs:element name="or" substitutionGroup="IfCombineConditions">
<xs:annotation>
<xs:documentation>
Combines conditional elements using a boolean OR.
Evaluates to true if any sub-element evaluates to true.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="IfConditions"/>
</xs:complexType>
</xs:element>
<xs:element name="return" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Returns control (execution) to the calling process.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="response-code">
<xs:annotation>
<xs:documentation>
A response code to return to the calling process. Defaults to the
value of the containing simple-method element "default-success-code" attribute.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="then">
<xs:annotation>
<xs:documentation>
Contains a block of code to be executed when a condition element evaluates to true.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations"/>
</xs:complexType>
</xs:element>
<xs:element name="while" substitutionGroup="ControlOperations">
<xs:annotation>
<xs:documentation>
Contains a block of code that is executed repeatedly while a condition element evaluates to true.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="condition" />
<xs:element ref="then" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="xor" substitutionGroup="IfCombineConditions">
<xs:annotation>
<xs:documentation>
Combines conditional elements using a boolean XOR.
Evaluates to true if only one sub-element evaluates to true.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="IfConditions"/>
</xs:complexType>
</xs:element>
<!--
===========================
===== Call Operations =====
===========================
-->
<xs:simpleType name="result-name">
<xs:annotation>
<xs:documentation>
The name of the called service's OUT attribute.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:complexType name="attlist.propertyInfoOptional">
<xs:attribute name="resource" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of a properties file on the classpath.
Optional. Attribute type: constant
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="property" type="xs:string">
<xs:annotation>
<xs:documentation>
The property key.
Optional. Attribute type: constant
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="call-class-method" substitutionGroup="CallOperations">
<xs:annotation>
<xs:documentation>
Calls a static method on a Java class. Deprecated - replace with script.
The string and field sub-elements are passed to the method as arguments in the order they are specified.
If the method returns a value, the value will be put in the named field.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="string"/>
<xs:element ref="field"/>
</xs:choice>
<xs:attribute type="xs:string" name="class-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the class containing the static method.
Required. Attribute type: constant.
</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.
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="ret-field">
<xs:annotation>
<xs:documentation>
The name of the field to put the method return value in.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="call-map-processor" substitutionGroup="CallOperations">
<xs:annotation>
<xs:documentation>
Invokes a simple map processor.
An inline map processor can be used by including a simple-map-processor element in the call-map-processor element.
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.
Map processor messages are added to an error message list.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="simple-map-processor" />
</xs:sequence>
<xs:attribute type="xs:string" name="in-map-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the map to be processed.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="out-map-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will receive the processed map.
If the map does not exist, one will be created.
If the map already exists it will be added to in place.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<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.
Optional. Attribute type: constant.
</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.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="error-list-name" type="error-list-name"/>
</xs:complexType>
</xs:element>
<xs:element name="call-object-method" substitutionGroup="CallOperations">
<xs:annotation>
<xs:documentation>
Calls a method on an existing Java object. Deprecated - replace with script.
The string and field sub-elements are passed to the method as arguments in the order they are specified.
If the method returns a value, the value will be put in the named field.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="string" />
<xs:element ref="field"/>
</xs:choice>
<xs:attribute type="xs:string" name="obj-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing the object to be called.
A runtime exception is thrown if the object is not found.
Required. Attribute type: expression.
</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.
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="ret-field">
<xs:annotation>
<xs:documentation>
The name of the field to put the method return value in.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="call-service" substitutionGroup="CallOperations">
<xs:annotation>
<xs:documentation>
Invokes a service through the Service Engine.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="error-prefix" minOccurs="0">
<xs:annotation>
<xs:documentation>
Declares a message to prepend to the error message.
The message can be included in the element body or in a Java resource.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="attlist.propertyInfoOptional">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="error-suffix" minOccurs="0">
<xs:annotation>
<xs:documentation>
Declares a message to append to the error message.
The message can be included in the element body or in a Java resource.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="attlist.propertyInfoOptional">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="success-prefix" minOccurs="0">
<xs:annotation>
<xs:documentation>
Declares a message to prepend to the success message.
The message can be included in the element body or in a Java resource.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="attlist.propertyInfoOptional">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="success-suffix" minOccurs="0">
<xs:annotation>
<xs:documentation>
Declares a message to append to the success message.
The message can be included in the element body or in a Java resource.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="attlist.propertyInfoOptional">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="message-prefix" minOccurs="0">
<xs:annotation>
<xs:documentation>
Declares a message to prepend to any kind of message.
The message can be included in the element body or in a Java resource.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="attlist.propertyInfoOptional">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="message-suffix" minOccurs="0">
<xs:annotation>
<xs:documentation>
Declares a message to append to any kind of message.
The message can be included in the element body or in a Java resource.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="attlist.propertyInfoOptional">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="default-message" minOccurs="0">
<xs:annotation>
<xs:documentation>
Declares a message to be used when the called service does not return a message.
The message can be included in the element body or in a Java resource.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="attlist.propertyInfoOptional">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="results-to-map" />
<xs:element ref="result-to-field" />
<xs:element ref="result-to-request" />
<xs:element ref="result-to-session" />
<xs:element ref="result-to-result" />
</xs:choice>
</xs:sequence>
<xs:attribute name="service-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the service to invoke.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="in-map-name" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of a field containing a map that will be used for the service's IN parameters.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="include-user-login" type="booleanConst">
<xs:annotation>
<xs:documentation>
Include the current UserLogin entity value in the called service's IN parameters.
Defaults to "true".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="break-on-error" type="booleanConst">
<xs:annotation>
<xs:documentation>
Halt script execution if the called service returns an error.
Defaults to "true".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="error-code" type="xs:string">
<xs:annotation>
<xs:documentation>
The error code returned by the called service.
Defaults to the enclosing simple-method default-error-code attribute value.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="success-code" type="xs:string">
<xs:annotation>
<xs:documentation>
The success code returned by the called service.
Defaults to the enclosing simple-method default-success-code attribute value.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="require-new-transaction" type="booleanConst">
<xs:annotation>
<xs:documentation>
Require a new transaction for the called service.
Defaults to "false".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="transaction-timeout" type="xs:string">
<xs:annotation>
<xs:documentation>
The timeout for the new transaction, in seconds.
Defaults to the value set in the called service definition.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="call-service-asynch" substitutionGroup="CallOperations">
<xs:annotation>
<xs:documentation>
Calls a service asynchronously. 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>
<xs:attribute type="xs:string" name="service-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the service to invoke.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="in-map-name">
<xs:annotation>
<xs:documentation>
The name of a field containing a map that will be used for the service's IN parameters.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="include-user-login" type="booleanConst">
<xs:annotation>
<xs:documentation>
Include the current UserLogin entity value in the called service's IN parameters.
Defaults to "true".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="call-simple-method" substitutionGroup="CallOperations">
<xs:annotation>
<xs:documentation>
Calls another simple-method in the same context as the current one.
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:sequence>
<xs:element ref="result-to-field" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Used when scope="function". Copies the called method fields
to the calling method fields.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="method-name" type="xs:string" 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.
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="xml-resource" type="xs:string">
<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.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="scope">
<xs:annotation>
<xs:documentation>
The memory scope to use. In an "inline" memory scope, fields declared or modified in the called method
will be reflected back to the calling method - as if the called method was inline. In a "function" memory
scope, fields declared or modified in the called method are local to the called method - they are not
reflected back to the calling method.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="inline" />
<xs:enumeration value="function" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="results-to-map">
<xs:annotation>
<xs:documentation>
Copies the called service's result map to the specified field.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="map-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the target field.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="result-to-field">
<xs:annotation>
<xs:documentation>
Copies the called service's OUT attribute to the specified field.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="result-name" type="result-name" use="required" />
<xs:attribute type="xs:string" name="field">
<xs:annotation>
<xs:documentation>
The name of target field. Defaults to the result-name attribute value.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="result-to-request">
<xs:annotation>
<xs:documentation>
Copies the called service's OUT attribute to the specified request attribute.
Valid only when the script is run in an event.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="result-name" type="result-name" use="required" />
<xs:attribute type="xs:string" name="request-name">
<xs:annotation>
<xs:documentation>
The name of the target request attribute. Defaults to the result-name attribute value.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="result-to-session">
<xs:annotation>
<xs:documentation>
Copies the called service's OUT attribute to the specified session attribute.
Valid only when the script is run in an event.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="result-name" type="result-name" use="required" />
<xs:attribute type="xs:string" name="session-name">
<xs:annotation>
<xs:documentation>
The name of the target session attribute. Defaults to the result-name attribute value.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="result-to-result">
<xs:annotation>
<xs:documentation>
Copies service OUT attributes from a called service to the calling service's OUT attributes.
This element can also be used to copy the called service OUT attributes to the return result of
a simple-method called as a function.
Note that the attribute names are somewhat confusing:
"result-name" is the name of the OUT attribute of the called service, and
"service-result-name" is the name of the OUT attribute of the calling service.
In other words, copy the OUT attribute FROM result-name TO service-result-name.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="result-name" type="result-name" use="required" />
<xs:attribute type="xs:string" name="service-result-name">
<xs:annotation>
<xs:documentation>
The name of the calling service's OUT attribute (or function return result).
Defaults to the result-name attribute value.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="script" substitutionGroup="CallOperations">
<xs:annotation>
<xs:documentation>
Runs an external script and/or a short inline script (scriptlet). The scriptlet can be
included in the script attribute or in the element body.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute type="xs:string" name="location">
<xs:annotation>
<xs:documentation>
The script location. The location attribute accepts the component:// file location
protocol. Script functions/methods can be invoked by appending a hash (#) and the
function/method name.
Required if the script attribute is empty. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="script">
<xs:annotation>
<xs:documentation>
A short script (scriptlet). Can be used instead of a file.
The script must be prefixed with the script language followed by a colon (":").
Required if the location attribute is empty. Attribute type: script.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!--
=============================
===== Entity Operations =====
=============================
-->
<xs:simpleType name="began-transaction-name">
<xs:annotation>
<xs:documentation>
The name of the field that contains a Boolean value specifying whether or not a transaction was begun in the current transaction demarcation.
Defaults to "beganTransaction".
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"></xs:restriction>
</xs:simpleType>
<xs:complexType name="attlist.entityFindOperations">
<xs:attribute name="entity-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity to search in.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="list" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the result list.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="filter-by-date" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Filter the result list by the current date. The entity must have "fromDate" and
"thruDate" fields.
Defaults to "false".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="distinct" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Filter the results so that all of them are unique.
Defaults to "false".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="use-cache" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Use the entity cache.
Defaults to "false".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name"/>
</xs:complexType>
<xs:element name="clear-cache-line" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Clears entity values from the cache.
Cache clearing is controlled by an optional "map" attribute.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="entity-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map">
<xs:annotation>
<xs:documentation>
The name of a field containing a map that will be used to find matching entity values.
If the fields in the map form the full primary key the entry will be removed from the byPrimaryKey cache.
If the map exists but the fields do not include a full primary key the entry will be removed from the byAnd cache.
If no map name is specified the entry will be removed from the all caches.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name"/>
</xs:complexType>
</xs:element>
<xs:element name="clear-entity-caches" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Removes all entity values from the cache.
This element should be used sparingly because of the performance impact.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="delegator-name" type="delegator-name"/>
</xs:complexType>
</xs:element>
<xs:element name="clone-value" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Creates a copy of an entity value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the entity value to be copied.
The operation does nothing if the entity value is not found.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="new-value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the new entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="condition-expr">
<xs:annotation>
<xs:documentation>
Uses an SQL operator to compare an entity field to a variable or constant value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity field that will be compared. The l-value.
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="operator">
<xs:annotation>
<xs:documentation>
The SQL operator.
If set to "between" then the r-value must be a collection that has two entries in it.
If set to "in" or "not-in" then the r-value must be a collection.
Defaults to "equals".
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="less" />
<xs:enumeration value="greater" />
<xs:enumeration value="less-equals" />
<xs:enumeration value="greater-equals" />
<xs:enumeration value="equals" />
<xs:enumeration value="not-equals" />
<xs:enumeration value="in" />
<xs:enumeration value="not-in" />
<xs:enumeration value="between" />
<xs:enumeration value="like" />
<xs:enumeration value="not-like" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="from-field" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of an environment field that the entity field will be compared to. The r-value.
Required if the value attribute is empty. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value" type="xs:string">
<xs:annotation>
<xs:documentation>
A constant value that the entity field will be compared to. The r-value.
Required if the from-field attribute is empty. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ignore-if-null" type="booleanConst">
<xs:annotation>
<xs:documentation>
Ignore the condition if the r-value is null.
Defaults to "false".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ignore-if-empty" type="booleanConst">
<xs:annotation>
<xs:documentation>
Ignore the condition if the r-value is empty.
Defaults to "false".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ignore-case" type="booleanConst">
<xs:annotation>
<xs:documentation>
Perform a case-insensitive comparison.
Defaults to "false".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ignore" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Ignore the condition if the r-value evaluates to "true".
Defaults to "false".
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="condition-list">
<xs:annotation>
<xs:documentation>
Uses an SQL operator to combine entity find conditions into a single expression.
You can have condition-list elements under condition-list, for building fairly complex condition trees,
and you can also use condition-object elements at any point.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="condition-expr" />
<xs:element ref="condition-list" />
<xs:element ref="condition-object" />
</xs:choice>
<xs:attribute name="combine">
<xs:annotation>
<xs:documentation>
The SQL operator.
Defaults to "and".
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="and" />
<xs:enumeration value="or" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="condition-object">
<xs:annotation>
<xs:documentation>
Declares an environment field (variable) that contains an entity find condition expression object.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains an entity find condition expression object.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="create-value" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Creates a new entity value in the data source.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the entity value to be created.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="do-cache-clear" type="booleanConst">
<xs:annotation>
<xs:documentation>
Clear the cache. Defaults to "true".
Deprecated - should always be true
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="or-store" type="booleanConst">
<xs:annotation>
<xs:documentation>
Store the entity value if it already exists. Defaults to "false".
If set to "false", an error will result if an instance of the entity value exists
in the data source with the same primary key.
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="entity-and" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Finds a group of entity values by using a set of entity field name/value pairs that are ANDed together.
The name/value pairs used for the search are defined in child elements.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.entityFindOperations">
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="field-map" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" />
<xs:choice minOccurs="0">
<xs:element ref="limit-range" />
<xs:element ref="limit-view" />
<xs:element ref="use-iterator" />
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="entity-condition" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Finds a group of entity values by using a condition expression.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.entityFindOperations">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element ref="condition-expr"/>
<xs:element ref="condition-list"/>
<xs:element ref="condition-object"/>
</xs:choice>
<xs:element minOccurs="0" ref="having-condition-list"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by"/>
<xs:choice minOccurs="0">
<xs:element ref="limit-range"/>
<xs:element ref="limit-view"/>
<xs:element ref="use-iterator"/>
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="entity-count" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Counts a group of entity values that match a condition expression.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="condition-expr" />
<xs:element ref="condition-list" />
<xs:element ref="condition-object" />
</xs:choice>
<xs:element minOccurs="0" ref="having-condition-list" />
</xs:sequence>
<xs:attribute name="entity-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Name of entity to count in.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="count-field" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Name of the field that will contain the count result.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="entity-data" substitutionGroup="EntityMiscOperations">
<xs:annotation>
<xs:documentation>
Load or assert an entity data XML file. The operation can be used in two modes:
"load" or "assert". The "load" mode will load the XML entity data into the database.
The "assert" mode will compare the XML entity data with the database -
any mismatched or missing data will be logged in the error message list.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="location" use="required">
<xs:annotation>
<xs:documentation>
The location of an XML file to load in database mode or to verify in assert mode.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="mode">
<xs:annotation>
<xs:documentation>
Operation mode: "load" or "assert". Defaults to "load".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="load" />
<xs:enumeration value="assert" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:integer" name="timeout">
<xs:annotation>
<xs:documentation>
Override the current transaction to start a new transaction and load the data with a different timeout.
Valid only when mode="load".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="error-list-name" type="error-list-name"/>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="entity-one" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Finds a single entity value by using the primary key.
The primary key can be specified in the field-map child elements, or if they are absent,
the primary key will be constructed from matching environment fields.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="field-map" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" />
</xs:sequence>
<xs:attribute name="entity-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Name of the entity to search in.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value-field" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Name of the field that will contain the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="use-cache">
<xs:annotation>
<xs:documentation>
Use the entity cache.
Defaults to "false".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="auto-field-map" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Look for all primary key field names in the current context as well as in the parameters map.
Defaults to "true".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="field-map">
<xs:annotation>
<xs:documentation>
Declares an entity field name/value pair.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="field-name" use="required">
<xs:annotation>
<xs:documentation>
Name of the entity field. Defaults to from-field attribute value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="from-field">
<xs:annotation>
<xs:documentation>
The name of an environment field that contains the entity field value.
Required if the value attribute is empty. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="value">
<xs:annotation>
<xs:documentation>
A constant entity field value.
Required if the from-field attribute is empty. Attribute type: constant+expr.
Defaults to java.lang.String data type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="filter-list-by-and" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Filters a list of entity values by the fields in the specified map.
Each entity value in the list will be compared to the specified map, and
if the entity value's fields match the map, the entity value will be copied
to the target list.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the list of entity values.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the map that will be used for the entity field comparison.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="to-list">
<xs:annotation>
<xs:documentation>
The name of the field the filtered list will be put into.
Defaults to the value of the list attribute (operation replaces the old list).
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="filter-list-by-date" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Filters a list of entity values by their date-range fields.
Each entity value in the list will be compared to the specified date, and
if the entity value's date-range fields include the date, the entity value
will be copied to the target list.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the list of entity values.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="to-list">
<xs:annotation>
<xs:documentation>
The name of the field the filtered list will be put into.
Defaults to the value of the list-name attribute (operation replaces the old list).
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="valid-date">
<xs:annotation>
<xs:documentation>
The name of a field that contains the date object to filter by.
The date object must be a java.sql.Timestamp data type. Defaults to now.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="from-field-name">
<xs:annotation>
<xs:documentation>
The name of the entity field to use as the beginning date.
Defaults to "fromDate".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="thru-field-name">
<xs:annotation>
<xs:documentation>
The name of the entity field to use as the ending date.
Defaults to "thruDate".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="find-by-and" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Finds a group of entity values by using a set of entity field name/value pairs that are ANDed together.
The name/value pairs used for the search are contained in a map.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="entity-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity to search in.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the list of entity values.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing a map that will be used for the search.
The map name/value pairs will be combined using a boolean AND.
All entity values will be found if this attribute is empty.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="order-by-list">
<xs:annotation>
<xs:documentation>
The name of the field containing a list that contains field names that you want the operation to order the results by.
Each entry in the list is a field name. The field name can be preceded by a plus or a minus sign to specify an
ascending or descending sort for that field. The default is ascending sort.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="fields-to-select-list">
<xs:annotation>
<xs:documentation>
The name of a list or set in the method environment that contains field names to select.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="use-cache">
<xs:annotation>
<xs:documentation>
Use the entity cache.
Defaults to "false". Ignored when the use-iterator attribute equals "true".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="use-iterator" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Use the EntityListIterator when doing the query.
This is much more efficient for large data sets because the results are read incrementaly instead of all at once.
The EntityListIterator must be closed when you are finished, but this is done automatically by the iterate operation.
Defaults to "false".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="find-by-primary-key" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Finds a single entity value that is retrieved from the data source by using the primary key.
The primary key used for the search is contained in a map.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="entity-name">
<xs:annotation>
<xs:documentation>
The name of the entity to search in. If the primary key map is an entity value,
then the value's entity name can be used instead of this attribute.
Optional if the entity name comes from the primary key map. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing a map that will be used for the search.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="fields-to-select-list">
<xs:annotation>
<xs:documentation>
The name of a list or set in the method environment that contains field names to select.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="use-cache">
<xs:annotation>
<xs:documentation>
Use the entity cache.
Defaults to "false".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="get-related" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Finds entity values that are related to an existing entity value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="relation-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity value relation to use.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the search results list.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map">
<xs:annotation>
<xs:documentation>
The name of the field containing a map that will be used for the search.
The map name/value pairs will be combined using a boolean AND.
All entity values will be found if this attribute is empty.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="order-by-list">
<xs:annotation>
<xs:documentation>
The name of the field containing a list that contains field names that you want the find operation to order the results by.
Each entry in the list is a field name. The field name can be preceded by a plus or a minus sign to specify an
ascending or descending sort for that field. The default is ascending sort.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="use-cache">
<xs:annotation>
<xs:documentation>
Use the entity cache.
Defaults to "false".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="get-related-one" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Finds an entity value that is related to an existing entity value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="value-field" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="relation-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity value relation to use.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="to-value-field" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the related entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="use-cache" type="xs:string">
<xs:annotation>
<xs:documentation>
Use the entity cache.
Defaults to "false".
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="having-condition-list">
<xs:annotation>
<xs:documentation>
A list of conditions that are combined with a boolean AND or OR that are applied to an entity value group.
This element implements the SQL HAVING clause.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="condition-expr" />
<xs:element ref="condition-list" />
<xs:element ref="condition-object" />
</xs:choice>
<xs:attribute name="combine">
<xs:annotation>
<xs:documentation>
The boolean operator used to combine conditions.
Defaults to "and".
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="and" />
<xs:enumeration value="or" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="limit-range">
<xs:annotation>
<xs:documentation>
Constrains an entity find result by specifying a starting index and the number of results to include.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="start" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
A zero-based starting index. The attribute value must resolve to a non-negative integer.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="size" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The number of results to include. The attribute value must resolve to a non-negative integer.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="limit-view">
<xs:annotation>
<xs:documentation>
Constrains an entity find result by specifying a view index and a view size.
Example: view-index=3 and view-size=10 returns results 21 to 30.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="view-index" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
A one-based view index. The attribute value must resolve to a non-negative integer.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="view-size" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The number of results to view. The attribute value must resolve to a non-negative integer.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="make-next-seq-id" substitutionGroup="EntityMiscOperations">
<xs:annotation>
<xs:documentation>
Generates a sequence string and uses it to update an entity value field.
The sequence is generated by scanning all similar values in the entity and adding
an increment amount to the highest sequence value found.
This element is typically used to generate sequences for the child entity in a
parent-child relationship - like order items or invoice items.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the entity value to update.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="seq-field-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity value field that will receive the sequence string.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="numeric-padding">
<xs:annotation>
<xs:documentation>
Left-pad the sequence string with the specified number of zeros.
Defaults to "5".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="increment-by">
<xs:annotation>
<xs:documentation>
Sequence increment amount. Defaults to "1".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="make-value" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Creates a new entity value.
The new entity value exists only in memory - it is not persisted in the data source until it is stored.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="entity-name" use="required">
<xs:annotation>
<xs:documentation>
The entity name.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the new entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map">
<xs:annotation>
<xs:documentation>
The name of the field that contains a map that is used to initialize the entity value fields.
Map values whose key matches one of the entity value fields will be copied to the corresponding entity value field.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="order-value-list" substitutionGroup="EntityFindOperations">
<xs:annotation>
<xs:documentation>
Performs an in-memory sort of a list of entity values.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the list of entity values.
If the source list is not found, the target field will be set to null.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="order-by-list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the list of field names to sort on.
Field names can be preceded by a plus symbol (+) or a minus symbol (-) to specify an ascending or descending sort for that field.
The default is ascending sort.
If the order-by-list is not found the target field will be set to a copy of the source list.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="to-list">
<xs:annotation>
<xs:documentation>
The name of the field that will contain the sorted list. Defaults to the field specified
in the list attribute.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="refresh-value" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Refresh an entity value from the data source.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="do-cache-clear" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Clear the cache. Defaults to "true".
Deprecated - should always be true
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="remove-by-and" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Removes entity values from the data source.
Uses a map of name/value pairs that will be combined using a boolean AND to constrain the removal.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="entity-name" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing a map that will be used for the constraint.
The map name/value pairs will be combined using a boolean AND.
If the map is missing or empty, then all entity values will be removed.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="do-cache-clear" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Clear the cache. Defaults to "true".
Deprecated - should always be true
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="remove-list" substitutionGroup="EntityListOperations">
<xs:annotation>
<xs:documentation>
Removes from the data source all entity values in a list.
If an entity value in the list is a complete primary key, then just that entity value will be removed from the database.
If an entity value in the list is not a complete primary key, then all matching entity values will be removed from the database.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the list of entity values.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="do-cache-clear" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Clear the cache. Defaults to "true".
Deprecated - should always be true
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="remove-related" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Removes entity values from the data source that are related to an existing entity value.
For a one-to-one relationship it will remove a single entity value if it exists,
and for a one-to-many relationship it will remove all related entity values.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="value-field" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="relation-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the entity value relation to use.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="do-cache-clear" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Clear the cache. Defaults to "true".
Deprecated - should always be true
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="remove-value" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Removes an entity value from the data source.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="value-field" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="do-cache-clear" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Clear the cache. Defaults to "true".
Deprecated - should always be true
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="select-field">
<xs:annotation>
<xs:documentation>
Declares an entity field to include in the entity operation.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="field-name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The entity field name.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="sequenced-id" substitutionGroup="EntityMiscOperations">
<xs:annotation>
<xs:documentation>
Generates a unique numeric sequence value. Sequence values are unique per sequence name.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="sequence-name" use="required">
<xs:annotation>
<xs:documentation>
The sequence name. In most cases, this is the name of the entity the sequence value
will be used in, but any name can be used.
Required. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="field" type="fieldType" use="required" />
<xs:attribute type="xs:string" name="stagger-max">
<xs:annotation>
<xs:documentation>
Sequence stagger maximum. If set to "1" the sequence value will be incremented by 1,
otherwise the sequence value will be incremented by an amount between 1 and the
stagger maximum. Defaults to "1".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="get-long-only" type="booleanConst">
<xs:annotation>
<xs:documentation>
Preserve the sequence type - a numeric long. If set to "false" the sequence
value will be converted to a string. Defaults to "false".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="set-nonpk-fields" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Copies non-PK fields from a map to an entity value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains a map that is used to initialize the entity value non-pk fields.
Map values whose key matches one of the entity value fields will be copied to the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="set-if-null" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Set entity value fields that are null or empty.
Defaults to "true".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="set-pk-fields" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Copies PK fields from a map to an entity value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="value-field" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="map" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains a map that is used to initialize the entity value pk fields.
Map values whose key matches one of the entity value fields will be copied to the entity value.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="set-if-null" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Set entity value fields that are null or empty.
Defaults to "true".
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="store-list" substitutionGroup="EntityListOperations">
<xs:annotation>
<xs:documentation>
Stores in the data source all entity values in a list.
Entity values that do not exist in the data source will be added to the data source.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="list" use="required">
<xs:annotation>
<xs:documentation>
The name of the field that contains the list of entity values.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="do-cache-clear" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Clear the cache. Defaults to "true".
Deprecated - should always be true
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="delegator-name" type="delegator-name" />
</xs:complexType>
</xs:element>
<xs:element name="store-value" substitutionGroup="EntityValueOperations">
<xs:annotation>
<xs:documentation>
Stores an entity value in the data source.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="value-field" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the field containing the entity value.
An error will be generated if the entity value does not exist in the data source.
Required. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="do-cache-clear" type="booleanExpr">
<xs:annotation>
<xs:documentation>
Clear the cache. Defaults to "true".
Deprecated - should always be true
Optional. Attribute type: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="transaction-begin" substitutionGroup="EntityTxOperations">
<xs:annotation>
<xs:documentation>
Begins a transaction if one is not already in place.
Note that all simple-methods are executed inside a transaction unless
the simple-method is flagged to not use a transaction.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="began-transaction-name" type="began-transaction-name" />
</xs:complexType>
</xs:element>
<xs:element name="transaction-commit" substitutionGroup="EntityTxOperations">
<xs:annotation>
<xs:documentation>
Commits a transaction that was begun with the transaction-begin element.
Operation does nothing if no transaction was begun.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="began-transaction-name" type="began-transaction-name" />
</xs:complexType>
</xs:element>
<xs:element name="transaction-rollback" substitutionGroup="EntityTxOperations">
<xs:annotation>
<xs:documentation>
Rolls back a transaction that was begun with the transaction-begin element.
If no transaction was begun with the transaction-begin element, a "set rollback only"
operation will be performed - which will force the transaction to rollback regardless
of which method or object is responsible for beginning and ending the transaction.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="began-transaction-name" type="began-transaction-name" />
</xs:complexType>
</xs:element>
<xs:element name="use-iterator">
<xs:annotation>
<xs:documentation>
Use the EntityListIterator for the entity find operation.
This is much more efficient for large data sets because the results are read incrementaly instead of all at once.
Note that when using this the use-cache setting will be ignored.
Also note that an EntityListIterator must be closed when you are finished, but this is done automatically by the iterate operation.
</xs:documentation>
</xs:annotation>
</xs:element>
<!--
==============================
===== Logging Operations =====
==============================
-->
<xs:simpleType name="levelType">
<xs:annotation>
<xs:documentation>
The logging level to use.
Must be one of the following: "verbose", "timing", "info", "important", "warning", "error", "fatal", "always".
Defaults to "info".
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="info" />
<xs:enumeration value="verbose" />
<xs:enumeration value="timing" />
<xs:enumeration value="important" />
<xs:enumeration value="warning" />
<xs:enumeration value="error" />
<xs:enumeration value="fatal" />
<xs:enumeration value="always" />
</xs:restriction>
</xs:simpleType>
<xs:element name="log" substitutionGroup="OtherOperations">
<xs:annotation>
<xs:documentation>
Outputs a log a message.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="level" type="levelType" use="required"/>
<xs:attribute name="message" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The message to log.
Required. Attribute type: constant+expr.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="trace" substitutionGroup="OtherOperations">
<xs:annotation>
<xs:documentation>
Logs detailed information on the internal state of its sub-elements, using the specified log level.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
<xs:attribute name="level" type="levelType" use="required"/>
</xs:complexType>
</xs:element>
<!--
================================
===== Calculate Operations =====
================================
-->
<xs:element name="calculate" substitutionGroup="OtherOperations">
<xs:annotation>
<xs:documentation>
Performs an arithmetic calculation and puts the result in the specified field.
Deprecated - use the set element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="calcop" />
<xs:element ref="number" />
</xs:choice>
<xs:attribute name="field" type="fieldType" />
<xs:attribute name="rounding-mode">
<xs:annotation>
<xs:documentation>
Rounding mode for the calculation, primarily for divide operation.
Defaults to "HalfEven".
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="Ceiling">
<xs:annotation>
<xs:documentation>
Round towards positive infinity.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Floor">
<xs:annotation>
<xs:documentation>
Round towards negative infinity.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Up">
<xs:annotation>
<xs:documentation>
Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Down">
<xs:annotation>
<xs:documentation>
Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="HalfUp">
<xs:annotation>
<xs:documentation>
Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="HalfDown">
<xs:annotation>
<xs:documentation>
Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="HalfEven">
<xs:annotation>
<xs:documentation>
Round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Unnecessary">
<xs:annotation>
<xs:documentation>
Asserts that the requested operation has an exact result, hence no rounding is necessary.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="${roundingMode}">
<xs:annotation>
<xs:documentation>
Convention for variable name for this attribute, in cases where it is determined at run-time.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="decimal-scale" type="xs:string">
<xs:annotation>
<xs:documentation>
Initial scale (decimals) to use. Defaults to "2".
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="decimal-format" type="xs:string">
<xs:annotation>
<xs:documentation>
Decimal format to use for conversion to string.
Optional. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type">
<xs:annotation>
<xs:documentation>
Data type of the calculation result. Defaults to "BigDecimal".
Optional. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="String" />
<xs:enumeration value="Double" />
<xs:enumeration value="Float" />
<xs:enumeration value="Long" />
<xs:enumeration value="Integer" />
<xs:enumeration value="BigDecimal" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="calcop">
<xs:annotation>
<xs:documentation>
A basic arithmetic operation.
Supports these operations: get, add, subtract, multiply, divide, and negate.
So add, subtract, multiply, and divide are just the basic arithmetic operations.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="calcop" />
<xs:element ref="number" />
</xs:choice>
<xs:attribute name="operator" use="required">
<xs:annotation>
<xs:documentation>
The arithmetic operator. Defaults to "add".
Required. Attribute type: constant.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="get">
<xs:annotation>
<xs:documentation>
Gets the positive value.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="add" />
<xs:enumeration value="subtract" />
<xs:enumeration value="multiply" />
<xs:enumeration value="divide" />
<xs:enumeration value="negative">
<xs:annotation>
<xs:documentation>
Negates the value.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="field" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the field to use.
Optional. Attribute type: expression.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="number">
<xs:annotation>
<xs:documentation>
Declares a numeric constant to be used in the calculation.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="value" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
A numeric constant.
Required. Attribute types: constant, ${expression}.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!--
======================================================
========== The Simple Map Processor Section ==========
======================================================
-->
<xs:attributeGroup name="attlist.typeDefaultString">
<xs:attribute name="type" default="String">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="PlainString"/>
<xs:enumeration value="String"/>
<xs:enumeration value="BigDecimal"/>
<xs:enumeration value="Double"/>
<xs:enumeration value="Float"/>
<xs:enumeration value="Long"/>
<xs:enumeration value="Integer"/>
<xs:enumeration value="Date"/>
<xs:enumeration value="Time"/>
<xs:enumeration value="Timestamp"/>
<xs:enumeration value="Boolean"/>
<xs:enumeration value="Object"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="simple-map-processors">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="simple-map-processor"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="simple-map-processor">
<xs:annotation>
<xs:documentation>
The Simple Map Processor Mini-Language performes two primary tasks: validation and conversion.
It does this in a context of moving values from one Map to another.
The input map will commonly contain Strings, but can contain other object types like
Integer, Long, Float, Double, java.sql.Date, Time, and Timestamp.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.simple-map-processor">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="make-in-string"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="process"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.simple-map-processor">
<xs:attribute type="xs:string" name="name" use="required"/>
</xs:complexType>
<!-- Make In String & Operations -->
<xs:element name="make-in-string">
<xs:annotation>
<xs:documentation>
In addition to dealing with the fields already in the incoming Map you can build Strings and add them to the in-Map before the processing begins with the make-in-string tag.
You can have zero or many make-in-string tags, and they must all come before the process tags.
Inside each make-in-string is a list of snippets to concatenate together to make the final String.
Each snippet can be another field in the in-Map (in-field element), a value from a properties file (property element), or a constant (constant element).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.make-in-string">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="in-field"/>
<xs:element ref="property"/>
<xs:element ref="constant"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.make-in-string">
<xs:attribute type="xs:string" name="field" use="required"/>
</xs:complexType>
<xs:element name="in-field">
<xs:annotation>
<xs:documentation>
Name of one of the incoming fields, or one of the fields in the in-map to add to the string.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.in-field">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.in-field">
<xs:attribute type="xs:string" name="field" use="required"/>
</xs:complexType>
<xs:element name="property">
<xs:annotation>
<xs:documentation>
Load the value of a property from a resourcebundle properties file, with the given resource
on the classpath, and the name of the property in that file.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.property">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.property">
<xs:attribute type="xs:string" name="resource" use="required">
<xs:annotation>
<xs:documentation>
Name of a properties file on the classpath.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="property" use="required">
<xs:annotation>
<xs:documentation>
Name of the property in the resource attribute file.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="constant" type="xs:string">
<xs:annotation>
<xs:documentation>
Any simple literal value.
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- Field Process & Operations -->
<xs:element name="process">
<xs:annotation>
<xs:documentation>
The process tag is used to contain the operations to be done on the specified field in the in-Map.
It has one required attribute, the field to operate on.
The operations that it contains are: validate-method, compare, compare-field, regexp, not-empty, copy, and convert.
All process operations tags except copy must contain one of two tags: fail-message or fail-property.
If the operation fails a message is added to the message list that is either the specified fail-message, or the String from the properties file value that is specified in fail-property.
Messages are collected in List as the Simple Map Processor runs.
If the List is not empty when it completes then something failed in the map processor.
This is done so that all failures will be reported immediately rather than having to fix one failure before another can be discovered.
All process operations automatically convert the field value and other values from their current type to the type specified for the operation, where applicable.
The ObjectType.simpleTypeConvert method is used to do the conversion.
It supports the following types: String, Double, Float, Long, Integer, Date, Time, and Timestamp.
If the type is not specified String is the default.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.process">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="validate-method"/>
<xs:element ref="compare"/>
<xs:element ref="compare-field"/>
<xs:element ref="regexp"/>
<xs:element ref="not-empty"/>
<xs:element ref="copy"/>
<xs:element ref="convert"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.process">
<xs:attribute type="xs:string" name="field" use="required"/>
</xs:complexType>
<xs:element name="validate-method">
<xs:annotation>
<xs:documentation>
The validate-method tag is used to call any static method that accepts a String and returns a boolean.
If the field coming in is not a String it will be converted to a String before calling the method.
The two attributes for this tag are class and method which should contain the fully qualified class name and the method name, respectively.
If the class name is not specified it will default to org.apache.ofbiz.base.util.UtilValidate.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.validate-method">
<xs:choice>
<xs:element ref="fail-message"/>
<xs:element ref="fail-property"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.validate-method">
<xs:attribute type="xs:string" name="method" use="required"/>
<xs:attribute type="xs:string" name="class" default="org.apache.ofbiz.base.util.UtilValidate"/>
</xs:complexType>
<xs:element name="compare">
<xs:annotation>
<xs:documentation>
The compare tag is used to compare the field value to the value specified in the value attribute.
An operator must be specified to indicate the comparison desired.
Operators available include less, greater, less-equals, greater-equals, equals, not-equals, and contains.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.operatorRequired">
<xs:choice>
<xs:element ref="fail-message"/>
<xs:element ref="fail-property"/>
</xs:choice>
<xs:attribute type="xs:string" name="value" use="required">
<xs:annotation>
<xs:documentation>
Literal or flexible string using ${} syntax.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="format">
<xs:annotation>
<xs:documentation>
Format based on the type of the object (date,number, etc.).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="attlist.typeDefaultString"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="compare-field">
<xs:annotation>
<xs:documentation>
The compare-field tag is just like the compare tag except that instead of specifying a value you specify the name of another field in the in-Map to compare the current field to.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.operatorRequired">
<xs:choice>
<xs:element ref="fail-message"/>
<xs:element ref="fail-property"/>
</xs:choice>
<xs:attribute type="xs:string" name="field" use="required"/>
<xs:attribute type="xs:string" name="format">
<xs:annotation>
<xs:documentation>
Format based on the type of the object (date,number, etc.).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="attlist.typeDefaultString"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="regexp">
<xs:annotation>
<xs:documentation>
The regexp tag validate the current field against the regular expression specified in the expr attribute of the tag.
Standard Perl style regular expressions are used with the ORO library from Jakarta.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.regexp">
<xs:choice>
<xs:element ref="fail-message"/>
<xs:element ref="fail-property"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.regexp">
<xs:attribute type="xs:string" name="expr" use="required"/>
</xs:complexType>
<xs:element name="not-empty">
<xs:annotation>
<xs:documentation>
The not-empty tag verifies that the current field is not empty.
If the field is a String it must not be null and must have a length greater than zero,
otherwise it must simply not be null and you will get the fail-message or fail-property.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element ref="fail-message"/>
<xs:element ref="fail-property"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="copy">
<xs:annotation>
<xs:documentation>
The copy operation simply copies the current field value to the out-Map from the in-Map.
There are three optional attributes.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.copy">
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.copy">
<xs:attribute type="xs:string" name="to-field">
<xs:annotation>
<xs:documentation>
If a different field name is desired in the out-Map it can be specified in the to-field attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="replace" default="true">
<xs:annotation>
<xs:documentation>
Specify if an existing field in the out-Map should be replaced or not, defaults to true.
If you set it to false then it will look in the out-map,
and if it finds a value of the same name already there it will not copy over top of that value.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="set-if-null" default="true">
<xs:annotation>
<xs:documentation>
Specifies whether or not to set fields that are null or empty.
Defaults to true.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:element name="convert">
<xs:annotation>
<xs:documentation>
The convert tag does the same thing as copy except that the type can be converted to the type specified in the type attribute.
The format attribute can be used to specify the format for date/time fields.
These two tags are in addition to all of the the attributes in the copy tag.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="attlist.convert">
<xs:choice>
<xs:element ref="fail-message"/>
<xs:element ref="fail-property"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="attlist.convert">
<xs:attribute type="xs:string" name="to-field">
<xs:annotation>
<xs:documentation>
If no to-field is specified, it is the same as the field on process.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="PlainString"/>
<xs:enumeration value="String"/>
<xs:enumeration value="BigDecimal"/>
<xs:enumeration value="Double"/>
<xs:enumeration value="Float"/>
<xs:enumeration value="Long"/>
<xs:enumeration value="Integer"/>
<xs:enumeration value="Date"/>
<xs:enumeration value="Time"/>
<xs:enumeration value="Timestamp"/>
<xs:enumeration value="Boolean"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="replace" default="true">
<xs:annotation>
<xs:documentation>
Specify if an existing field in the out-Map should be replaced or not, defaults to true.
If you set it to false then it will look in the out-map,
and if it finds a value of the same name already there it will not copy over top of that value.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="set-if-null" default="true">
<xs:annotation>
<xs:documentation>
Specifies whether or not to set fields that are null or empty.
Defaults to true.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<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="format">
<xs:annotation>
<xs:documentation>
Format based on the type of the object (date,number, etc.).
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:schema>