Most operations in a process take input data,
process the data or perform some action based on the data, and then
return data as output. You configure operation properties to specify
the input data and the location to store the output data. Typically,
the properties are organized in Input and Output property groups
in the Process Properties view. For some operations, other property groups
are used.
The operation determines the type of data that you need to use
for a property value. The operation can also allow you to specify
the value in different formats.
Format
|
Description
|
Suggested use
|
Literal value
|
The property value is specified by typing
the value in a text box, or using a drop-down list on the Process
Properties view.
|
The value is used for only one operation
property in the process.
If values are used several times,
you can use variables or XPath expressions to save time re-entering
the same value.
|
Template
|
The data is specified as a string with embedded XPath
expressions, where the expressions are wrapped in
{$...$}
symbols.
(See
Specifying template expressions
.)
|
The operation property requires a string
value, and the value contains both static text, and text that changes
depending on the process instance.
For example, this format
can be used when providing task instructions. (See
Providing task instructions
.)
|
Variable
|
The data is specified as a variable that
you select from a list. The value that the variable stores is used
as the property value. (See
Process variables
|
The value is already stored in a variable:
|
XPath expression
|
The data is specified by an XPath expression, which
you can construct using the XPath Builder dialog box. (See
Creating XPath expressions
.)
|
The value is stored in the process data
model and you want to specify either the entire variable value,
or a subset of the variable data.
For example, you use XPath
Expressions to specify the value of a specific item of data from
a submitted form. (See
Retrieving form field values
.)
|
Typically, specifying the literal value of a property is easier
to accomplish than using a variable. However, specifying a variable
as the property value is recommended in the following situations:
-
The value is passed into the process as a process invocation
parameter and stored in a variable.
-
An operation returns the value and it is stored in a variable.
-
You use the same value for the property of several operations
in the process.
Configuring input and output data
You
configure the input and output data for an operation in the Process Properties
view. The procedure in this section is general. The values you provide depend
on the specific operation.
Note:
Values marked with an asterisk (*) in the Process
Properties view are mandatory.
Configure the input and output data for an operation:
-
Select
the operation on the process diagram.
-
Open the Process Properties view.
-
If it exists, expand the Input category, then specify the
data types and enter the input data values and properties.
-
If it exists, expand the Output category, then specify the
data types and enter the output data values and properties.
-
If other categories contain input and output data, expand
those categories and complete them similarly.
Data coercion
If an operation requires data of a certain
data type, and data of another data type is provided, automatic
data coercion may handle the data type mismatch. When AEM forms
detects a data type mismatch, it will first attempt to resolve it
by using context specific coercions implemented by custom DSCs.
If this fails, AEM forms will consult an internal coercion rules
table to resolve it. Only when this is unsuccessful, a coercion
exception is thrown.
For example, if an operation requires an input value of type
int
but
a
string
is provided, the AEM forms Server tries
to coerce, or convert, the
string
into an
int
.
If the
string
contains a numeric value, such as
the string
"123"
, the coercion works and the operation
can proceed, treating the value as the integer
123
.
Note:
If the current data type matches the required
data type, the coercion always succeeds.
The following table represents an internal coercion rules table.
It describes the definite coercion results for the specific data
type pairs.
Note:
In this table numeric refers to the following
data types: int, short, long, byte, and float.
Current data type
|
Required data type
|
Coercion
|
any type
|
string
|
succeeds
|
any type
|
binary (byte[])
|
succeeds
|
any type
|
numeric
|
fails
|
any type
|
org.w3c.dom.Document
|
fails
|
any type
|
com.adobe.idp.Document
|
fails
|
any type
|
java.util.List
|
fails
|
any type
|
java.util.Map
|
fails
|
binary (byte[])
|
com.adobe.idp.Document
|
succeeds
|
binary (byte[])
where byte[] is a
list
|
java.util.List
|
succeeds
|
binary (byte[])
where byte[] is a
map
|
java.util.Map
|
succeeds
|
Boolean
|
int
|
succeeds
|
Boolean
|
short
|
succeeds
|
Boolean
|
long
|
succeeds
|
Boolean
|
byte
|
succeeds
|
Boolean
|
float
|
succeeds
|
numeric
|
Boolean
|
succeeds
|
numeric
|
numeric
|
succeeds
|
document
|
org.w3c.dom.Document
|
succeeds
|
java.io.InputStream
|
java.util.List
|
succeeds
|
java.io.InputStream
|
java.util.Map
|
succeeds
|
org.w3c.dom.Document
|
com.adobe.idp.Document
|
succeeds
|
string
|
numeric
|
succeeds
|
string
|
Boolean
|
succeeds
|
string
|
org.w3c.dom.Document
|
succeeds
|
string
|
com.adobe.idp.Document
|
succeeds
|
In all the other cases, coercion will be attempted, but the result
will not be known until run time, when AEM forms will attempt to
discover a context specific coercion and fail if not successful.
Note:
The data coercions described in the above table
are not supported by the Service’s custom editors.
Specifying template expressions
Template expressions
are strings
with embedded XPath expressions, where the expressions are wrapped
in
{$...$}
symbols. This format is used when providing
input or output data for operations where customized instructions
are required, such as in an email message or other notification
message.
Build a template expression:
-
In the provided space,
type the string.
-
Click Insert Expression and, in the XPath Builder, select
the XPath variable.
-
Repeat the steps as required.
For example,
suppose you want an output data variable to contain a message to a
user and you want to substitute data values where process variables
are specified. The following expression could be used:
Dear {$/process_data/@title$} {$/process_data/@lastname$},
Your order {$/process_data/@order_id$} has been received.
When
output, the template expression would result in the following text:
Dear Mrs. Jones,
Your order 12345 has been received.
|
|
|