U bekijkt help-inhoud voor de versie::
- 6.4
- 6.3
- 6.2
- Eerdere versies
The rule editor feature in Adobe Experience Manager Forms empowers forms business users and developers to write rules on adaptive form objects. These rules define actions to trigger on form objects based on preset conditions, user inputs, and user actions on the form. It helps further streamline the form filling experience ensuring accuracy and speed.
The rule editor provides an intuitive and simplified user interface to write rules. It offers a visual editor and a code editor to write rules. Some of the key actions that you can perform on adaptive form objects using rules are:
- Show or hide an object
- Enable or disable an object
- Set a value for an object
- Validate the value of an object
- Execute functions to compute the value of an object
- Invoke a web service and perform an operation
- Set property of an object
Rule editor replaces the scripting capabilities in AEM 6.1 Forms and earlier releases. However, your existing scripts are preserved in the new rule editor. For more information about working with existing scripts in the rule editor, see Impact of rule editor on existing scripts.
A rule is a combination of actions and conditions. In rule editor, actions include activities such as hide, show, enable, disable, or compute the value of an object in a form. Conditions are Boolean expressions that are evaluated by performing checks and operations on the state, value, or property of a form object. Actions are performed based on the value (True or False) returned by evaluating a condition.
The rule editor provides a set of predefined rule types, such as When, Show, Hide, Enable, Disable, Set Value Of, and Validate to help you write rules. Each rule type allows you to define conditions and actions in a rule. The document further explains each rule type in detail.
A rule typically follows one of the following constructs:
Condition-Action
In this construct, a rule first defines a condition followed by an action to trigger. The construct is comparable to if-then statement in programming languages.
In rule editor, the When rule type enforces the condition-action construct.
Action-Condition
In this construct, a rule first defines an action to trigger followed by conditions for evaluation. Another variation of this construct is action-condition-alternate action, which also defines an alternate action to trigger if the condition returns False.
The Show, Hide, Enable, Disable, Set Value Of, and Validate rule types in rule editor enforce the action-condition rule construct. By default, the alternate action for Show is Hide and for Enable is Disable, and vice versa. You cannot change the default alternate action.
Opmerking:
The available rule types, including conditions and actions that you define in rule editor, also depend on the type of form object on which you are creating a rule. The rule editor displays only valid rule types and options for writing condition and action statements for a particular form object type. For example, you do not see Validate, Set Value Of, Enable, and Disable rule types for a panel object.
For more information about rule types available in the rule editor, see Available rule types in rule editor.
While you can achieve most of the use cases by using any rule construct, here are some guidelines to choose one construct over another. For more information about the available rules in rule editor, see Available rule types in rule editor.
A typical rule of the thumb when creating a rule is to think about it in the context of the object on which you are writing a rule. Consider that you want to hide or show the field B based on the value a user specifies in the field A. In this case, you are evaluating a condition on field A, and based on the value it returns, you are triggering an action on field B.
Therefore, if you are writing a rule on field B (the object on which you are evaluating a condition), use the condition-action construct or the When rule type. Similarly, use the action-condition construct or Show or Hide rule type on field A.
At times, you need to perform multiple actions based on one condition. In such cases, it is recommended to use the condition-action construct. In this construct, you can evaluate a condition once and specify multiple action statements.
For example, to hide fields B, C, and D based on the condition that checks for the value a user specifies in field A, write one rule with condition-action construct or When rule type on field A and specify actions to control the visibility of fields B, C, and D. Otherwise, you need three separate rules on fields B, C, and D, where each rule checks the condition and shows or hides the respective field. In this example, it is more efficient to write the When rule type on one object rather than Show or Hide rule type on three objects.
- To trigger an action based on multiple conditions, it is recommended to use action-condition construct. For example to show and hide field A by evaluating conditions on fields B, C, and D, use Show or Hide rule type on field A.
- Use condition-action or action condition construct if the rule contains one action for one condition.
- If a rule checks for a condition and performs an action immediately on providing a value in a field or exiting a field, it is recommended to write a rule with condition-action construct or the When rule type on the field on which the condition is evaluated.
- The condition in the When rule is evaluated when a user changes the value of the object on which the When rule is applied. However, if you want the action to trigger when the value changes on the server side, like in case of prepopulating the value, it is recommended to write a When rule that triggers the action when the field is initialized.
The rule editor provides the following logical operators and events using which you can create rules.
- Is Equal To
- Is Not Equal To
- Starts With
- Ends With
- Contains
- Is Empty
- Is Not Empty
- Has Selected: Returns true when the user selects a particular option for a checkbox, drop-down, radio button.
- Is Initialized (event): Returns true when a form object renders in the browser.
- Is Changed (event): Returns true when the user changes the entered value or selected option for a form object.
The rule editor provides a set of predefined rule types that you can use to write rules. Let's look at each rule type in detail. For more information about writing rules in rule editor, see Write rules.
The When rule type follows the condition-action-alternate action rule construct, or sometimes, just the condition-action construct. In this rule type, you first specify a condition for evaluation followed by an action to trigger if the condition is satisfied (True). While using the When rule type, you can use multiple AND and OR operators to create nested expressions.
Using the When rule type, you can evaluate a condition on a form object and perform actions on one or more objects.
In plain words, a typical When rule is structured as follows:
____________________________________________
When on Object A:
(Condition 1 AND Condition 2 OR Condition 3) is TRUE;
Then, do the following:
Action 2 on Object B;
AND
Action 3 on Object C;
_____________________________________________
While you can check for conditions only on the object on which you are writing a When rule, you can trigger the following actions on multiple form objects.
- Hide: Hides the specified object.
- Show: Shows the specified object.
- Enable: Enables the specified object.
- Disable: Disables the specified object.
- Set value of: Computes and sets the value of the specified object. You can set the object value to a string, the value of another object, the computed value using mathematical expression or function, or the value of a property of an object.
- Invoke web service: Invokes a web service. It requires you to specify a WSDL URL to the web service and then allows selecting an operation to perform. You can also pre-configure a web service in rule editor to make the web service available as a menu item in the rule editor.
- Set property: Sets the value of a property of the specified object.
- Clear Value Of: Clears the value of the specified object.
- Set Focus: Sets focus on the specified object.
- Save Form: Saves the form.
- Submit Forms: Submits the form.
- Reset Form: Resets the form.
- Validate Form: Validates the form.
- Add Instance: Adds an instance of the specified repeatable panel or table row.
- Remove Instance: Removes an instance of the specified repeatable panel or table row.
The Set Value Of rule type allows you to set the value of a form object depending on whether the specified condition is satisfied or not. The value can be set to a value of another object, a literal string, a value derived from a mathematical expression or a function, or a value of a property of another object. Similarly, you can check for a condition on a component, string, property, or values derived from a function or mathematical expression.
Note that the Set Value Of rule type is not available for all form objects, such as panels and toolbar buttons.
A standard Set Value Of rule has the following structure:
____________________________________________
Set value of Object A to:
(value of Object B) OR
(string ABC) OR
(object property X of Object C) OR
(value from a function) OR
(value from a mathematical expression);
When:
(Condition 1 AND Condition 2 AND Condition 3) is TRUE;
____________________________________________
If you are writing rules for the following form objects, the form objects' options/values in the form are pre-populated in the rule editor:
- Drop downs
- Radio buttons
- Check boxes
Using the Show rule type, you can write a rule to show or hide a form object based on whether a condition is satisfied or not. The Show rule type also triggers the Hide action in case the condition is not satisfied or returns False.
A typical Show rule is structured as follows:
____________________________________________
Show Object A;
When:
(Condition 1 OR Condition 2 OR Condition 3) is TRUE;
Else:
Hide Object A;
____________________________________________
Similar to the Show rule type, you can use the Hide rule type to show or hide a form object based on whether a condition is satisfied or not. The Hide rule type also triggers the Show action in case the condition is not satisfied or returns False.
A typical Hide rule is structured as follows:
____________________________________________
Hide Object A;
When:
(Condition 1 AND Condition 2 AND Condition 3) is TRUE;
Else:
Show Object A;
____________________________________________
The Enable rule type lets you enable or disable a form object based on whether a condition is satisfied or not. The Enable rule type also triggers the Disable action in case the condition is not satisfied or returns False.
A typical Enable rule is structured as follows:
____________________________________________
Enable Object A;
When:
(Condition 1 AND Condition 2 AND Condition 3) is TRUE;
Else:
Disable Object A;
____________________________________________
Similar to the Enable rule type, the Disable rule type allows you to enable or disable a form object based on whether a condition is satisfied or not. The Disable rule type also triggers the Enable action in case the condition is not satisfied or returns False.
A typical Disable rule is structured as follows:
____________________________________________
Disable Object A;
When:
(Condition 1 OR Condition 2 OR Condition 3) is TRUE;
Else:
Enable Object A;
____________________________________________
The Validate rule type validates the value in a field using an expression. For example, you can write an expression to check that the text box for specifying name doesn't contain special characters or numbers.
A typical Validate rule is structured as follows:
____________________________________________
Validate Object A;
Using:
(Expression 1 AND Expression 2 AND Expression 3) is TRUE;
____________________________________________
Opmerking:
If the specified value doesn't comply with the Validate rule, you can display a validation message to the user. You can specify the message in the Script validation message field in the component properties in the sidebar.

Rule editor provides a comprehensive yet simple user interface to write and manage rules. You can launch the rule editor user interface from within an adaptive form in authoring mode.
To launch the rule editor user interface:
-
Tap the form object for which you want to write a rule, and in Component Toolbar tap
. The rule editor user interface appears.
Any existing rules on the selected form objects are listed in this view. For information about managing existing rules, see Manage rules.
Displays the title of the adaptive form object through which you launched the rule editor and the rule type currently selected. In the above example, the rule editor is launched from an adaptive form object titled Salary and the rule type selected is When.
The pane on the left in the rule editor user interface includes two tabs — Forms Objects and Functions.
The Form Objects tab shows a hierarchical view of all objects contained in the adaptive form. It displays the title and type of the objects. When writing a rule, you can drag-drop form objects onto the rule editor.
The form objects that have one or more valid rules applied are marked with a Green dot. If any of the rules applied to a form object is invalid, the form object is marked with a Yellow dot.
The Functions tab includes a set of built-in functions, such as Sum Of, Min Of, Max Of, Average Of, Number Of, and Validate Form. You can use these functions to compute values in repeatable panels and table rows and use them in action and condition statements when writing rules. You can, however, create custom functions too.

Opmerking:
You can perform text search on objects and functions names and titles in Forms Objects and Functions tabs.
In the left tree of the form objects, you can tap the form objects to display the rules applied to each of the objects. Not only you can navigate through the rules of the various form objects, you can also copy-paste rules between the form objects. For more information, see Copy-paste rules.
Visual rule editor is the area in the visual editor mode of the rule editor user interface where you write rules. It allows you to select a rule type and accordingly define conditions and actions. When defining conditions and actions in a rule, you can drag-drop form objects and functions from the Form Objects and Functions pane.
For more information about using visual rule editor, see Write rules.
You can switch from visual editor mode to code editor mode of the rule editor, and vice versa, using the switcher right above the rule editor. When you launch rule editor the first time, it opens in the visual editor mode. You can write rules in the visual editor mode or switch to the code editor mode to write a rule script. However, note that if you modify a rule or write a rule in code editor, you cannot switch back to the visual editor for that rule unless you clear the code editor.
AEM Forms tracks the rule editor mode you used last to write a rule. When you launch the rule editor next time, it opens in that mode. However, you can also configure a default mode to open the rule editor in the specified mode. To do so:
- Go to AEM web console at http://[host]:[port]/system/console/configMgr.
- Click to edit Adaptive Form Configuration Service.
- choose Visual Editor or Code Editor from the Default Mode for Rule Editor drop-down
- Click Save.
The Done button is used to save a rule. You can save an incomplete rule. However, incomplete are invalid and don't execute. Saved rules on a form object are listed when you launch the rule editor next time from the same form object. You can manage existing rules in that view. For more information, see Manage rules.
The Cancel button discards any changes you made to a rule and closes the rule editor.
You can write rules using the visual rule editor or the code editor. When you launch the rule editor the first time, it opens in the visual editor mode. You can switch to the code editor mode and write rules. However, note that if you write or modify a rule in code editor, you cannot switch to the visual editor for that rule unless you clear the code editor. When you launch the rule editor next time, it opens in the mode that you used last to create rule.
Let's first look at how to write rules using visual editor.

The Loan Requirements section in the example loan application form requires applicants to specify their marital status, salary, and if married, their spouse's salary. Based on the user inputs, the rule computes the loan eligibility amount and displays in the Loan Eligibility field. Apply the following rules to implement the scenario:
- The Spouse's Salary field is shown only when the Marital Status is Married.
- The loan eligibility amount is 50% of the total salary.
-
First, write the rule to control the visibility of the Spouse Salary field based on the option user selects for the Marital Status radio button.
Open the loan application form in authoring mode. Tap the Marital Status component and tap
. Next, tap Create to launch the rule editor.
-
Repeat steps 1 through 5 to define another rule to hide the Spouse Salary field if the marital Status is Single. The rule appears as follows in the rule editor.
Opmerking:
Alternatively, you can write one Show rule on the Spouse Salary field, instead of two When rules on the Marital Status field, to implement the same behavior.
-
Next, write a rule to compute the loan eligibility amount, which is 50% of the total salary, and display it in the Loan Eligibility field. To achieve this, create Set value Of rules on Loan Eligibility field.
In authoring mode, tap the Loan Eligibility field and tap
. Next, tap Create to launch the rule editor.
-
In the extended expression field, select divided by from the Select Operator field and Number from the Select Option field. Then, specify 2 in the number field.
Opmerking:
You can create complex expressions by using components, functions, mathematical expressions, and property values from the Select Option field.
-
In the When statement:
- Select or drag-drop from the Forms Object tab the Marital Status field in the first Drop object or select here field.
- Select is equal to from the Select Operator field.
- Select String in the other Drop object or select here field and specify Married in the Enter a String field.
The rule finally appears as follows in the rule editor.
Opmerking:
Alternatively, you can use the Set Value Of statement to compute the loan eligibility in the When rule that you created to show-hide the Spouse Salary field. The resultant combined rule when Marital Status is Single appears as follows in the rule editor.
Similarly, you can write a combined rule to control visibility of the Spouse Salary field and compute loan eligibility when the Marital Status is Married.

The rule editor auto generates the JavaScript code for any rule you create using visual editor. You can switch from visual editor to the code editor to view the generated code. However, if you modify the rule code in the code editor, you cannot switch back to the visual editor. If you prefer writing rules in code editor rather than visual editor, you can write rules afresh in the code editor. The visual-code editors switcher helps you switch between the two modes.
The code editor JavaScript is the expression language of adaptive forms. All the expressions are valid JavaScript expressions and use adaptive forms scripting model APIs. These expressions return values of certain types. For the complete list of adaptive forms classes, events, objects, and public APIs, see JavaScript Library API reference for adaptive forms.
For more information about guidelines to write rules in the code editor, see Adaptive Form Expressions.
Apart from the out-of-the-box functions like Sum of, that are listed under Functions Output, you can write custom functions that you frequently need. Ensure that the function you write is accompanied by the jsdoc above it.
Accompanying jsdoc is required:
- If you want custom configuration and description.
- Because there are multiple ways to declare a function in JavaScript, and comments let you keep a track of the functions.
For more information, see usejsdoc.org.
Supported jsdoc tags:
- Private
Syntax: @private
A private function is not included as a custom function.
- Name
Syntax: @name funcName <Function Name>
Alternatively, you can use: @function funcName <Function Name> or @func funcName <Function Name>.
funcName is the name of the function (no spaces allowed).
<Function Name> is the display name of the function.
- Member
Syntax: @memberof namespace
Attaches a namespace to the function.
- Parameter
Syntax: @param {type} name <Parameter Description>
Alternatively, you can use: @argument {type} name <Parameter Description> or @arg {type} name <Parameter Description>.
Shows parameters used by the function. A function can have multiple parameter tags, one tag for each parameter in the order of occurence.
{type} represents parameter type. Allowed parameter types are:
- string
- number
- boolean
All other parameter types are categorized under one of the above. None is not supported. Ensure that you select one of the types above. Types are not case sensitive. Spaces are not allowed in the parameter name. <Parameter Descrption>
can have multiple words. - string
- Return Type
Syntax: @return {type}
Alternatively, you can use @returns {type}.
Adds information about the function, such as its objective.
{type} represents the return type of the function. Allowed return types are:
- string
- number
- boolean
All other return types are categorized under one of the above. None is not supported. Ensure that you select one of the types above. Return types are not case sensitive.
- string
Opmerking:
Comments before custom function are used for summary. Summary can extend to multiple lines until a tag is encountered. Limit the size to a single for a concise description in the rule builder.
Adding a custom function
For example, you want to add a custom function which calculates area of a square. Side length is the user input to the custom function, which is accepted using a numeric box in your form. The calculated output is displayed in another numeric box in your form. To add a custom function, you have to first create a client library, and then add it to the CRX repository.
Perform the following steps to create a client library and add it in the CRX repository.
-
Create a client library. For more information, see Using Client-Side Libraries.
After you have added your client library in the CRX repository, use it in your adaptive form. It lets you use your custom function as a rule in your form. Perform the following steps to add the client library in your adaptive form.
function area(len) { return len*len; }
var area; //Some codes later /** */ area = function(len) { return len*len; };
var b={}; /** */ b.area = function(len) { return len*len; }
/** */ var x1, area = function(len) { return len*len; }, x2 =5, x3 =true;
Limitation: custom function picks only the first function declaration from the variable list, if together. You can use function expression for every function declared.
var c = { b : { /** */ area : function(len) { return len*len; } } };
Opmerking:
Ensure that you use jsdoc for every custom function. Although jsdoc comments are encouraged, include an empty jsdoc comment to mark your function as custom function. It enables default handling of your custom function.
Any existing rules on a form object are listed when you tap the object and tap . You can view the title and a preview the rule summary. Furthermore, the UI allows you to expand and view the complete rule summary, change the order of rules, edit rules, and delete rules.

You can perform the following actions on rules:
- The Content column in the rule list displays the rule content. If the entire rule content is not visible in the default view, tap
to expand it.
- Any new rule you create is stacked at the bottom of the rule list. The rules are executed from top to bottom. The rule at the top executes first followed by other rules of the same type. For example, if you have When, Show, Enable, and When rules at first, second, third, and fourth positions from top, respectively, the When rule at the top gets executed first followed by the When rule at the fourth position. Then, the Show and Enable rules will be executed.
You can change the order of a rule by tappingagainst it or drag-drop it to the desired order in the list.
- To edit a rule, select the check box next to the rule title. Additional options to edit and delete the rule appear. Tap Edit to open the selected rule in the rule editor in visual or code editor mode depending the mode used to create the rule.
- To delete a rule, select the rule and tap Delete.
You can copy-paste a rule from one field to other similar fields to save time.
To copy-paste rules, do the following:
-
Tap the form object from which you want to copy a rule, and in the component toolbar tap
. The rule editor user interface appears with the form object selected and the existing rules appear.
For information about managing existing rules, see Manage rules.
-
Select another form object to which you want to paste the rule and tap Paste. Further, you can edit the rule to make changes in it.
Opmerking:
You can paste a rule to another form object only if that form object supports the copied rule's event. For example, a button supports the click event. You can paste a rule with a click event to a button but not to a check box.
Rule editor allows you to use multiple AND and OR operators to create nested rules. You can mix multiple AND and OR operators in rules.
Following is an example of a nested rule that displays a message to the user about eligibility for a child's custody when the required conditions are met.

You can also drag-and-drop conditions within a rule to edit it. Tap and hover over the handle () before a condition. Once the curson turns into the hand symbol as shown below, drag and drop the condition anywhere within the rule. The rule structure changes.

Rule editor allows you to use date comparisons to create conditions.
Following is an example condition that displays a static text object if the mortgage on the house is already taken, which the user signifies by filling up the date field.
When the date of mortgage of the property as filled in by the user is in the past, the adaptive form displays a note about the income calculation. The following rule compares the date filled in by the user with the current date and if the date filled in by the user is earlier than the current date, the form displays the text message (named Income).

When filled date is earlier than the current date, the form displays the text message (Income) as following:

Rule editor allows you to create conditions that compare two numbers.
Following is an example condition that displays a static text object if the number of months an applicant is staying at his current address is less than 36.

When the user signifies that he has been living at his present residential address for less than 36 months, the form displays a notification that additional proof of residence may be requested.

In AEM Forms versions prior to AEM 6.1 Forms feature pack 1, form authors and developers used to write expressions in the Scripts tab of the Edit component dialog to add dynamic behavior to adaptive forms. The Scripts tab is now replaced by the rule editor.
Any scripts or expressions that you must have written in the Scripts tab are available in the rule editor. While you cannot view or edit them in visual editor, you can edit in code editor.
In a loan application form, you want to capture whether the loan applicant is an existing customer or not. Based on the information user provides, the customer ID field should show or hide. Also, you want to set focus on the customer ID field if the user is an existing customer. The loan application form has the following components:
- A radio button, Are you an existing Geometrixx customer?, which provides Yes and No options. The value for Yes is 0 and No is 1.
- A text field, Geometrixx customer ID, to specify the customer ID.

In the example rule, the statement in the When section is the condition, which when returns True, executes the actions specified in the Then section.
The rule appears as follows in the code editor.

In a purchase order form, you have the following table, in which users will fill in their orders. In this table:
- The first row is repeatable, so users can order multiple products and specify different quantities. Its element name is Row1.
- The title of the cell in Product Quantity column of the repeatable row is Quantity. The element name for this cell is productquantity.
- The second row in the table is non-repeatable and the title of the cell in Product Quantity column in this row is Total Quantity.

Now, you want to add specified quantities in the Product Quantity column for all products and display the sum in the Total Quantity cell. You can achieve this by writing a Set Value Of rule on the Total Quantity cell as shown below.


In the purchase order form explained in the previous example, you want to restrict user from ordering more than one quantity of any product that is priced more that 10000. To do this, you can write a Validate rule as shown below.

