Input and output data for operations

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:

  • The value is passed into the process when the process is invoked.

  • You create the variable and set the value explicitly.

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:

  1. Select the operation on the process diagram.

  2. Open the Process Properties view.

  3. If it exists, expand the Input category, then specify the data types and enter the input data values and properties.

  4. If it exists, expand the Output category, then specify the data types and enter the output data values and properties.

  5. 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:

  1. In the provided space, type the string.

  2. Click Insert Expression and, in the XPath Builder, select the XPath variable.

  3. 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.

// Ethnio survey code removed