Business rules are added by editing your form or workflow. Click the Rules editing mode in the Form/Workflow Designer header to add new business rules or edit existing ones.
...
- form.load : This event is occurs when a form or workflow step loads for the first time. It is useful for setting default values via rules that you need to be set before the user starts interacting with the form.
- form.unload : This event is true when users click the form's Submit or a workflow's Continue button. It is useful for setting control values just prior to the execution of the form's Doc Actions and Form Actions. If you have a rule in your form that changes any control(s) after clicking Submit, thereby making the form invalid, the form will no longer be submitted and the invalid form will redisplay. Form and Document actions will not execute, PDFs are not generated, invalid controls become highlighted as expected and form.unload output displays in the debug console.
- form.positionUpdated : This event is used for the Geo location feature. You can fire a rule using this special identifier every time the position is updated.
- form.activate: This event indicates that a workflow has navigated to a step. If form.activate is true, the workflow just moved to a step. Use the _data.getParameter to determine what step that is.
- form.deactivate: This event indicates that a workflow has left a step. If form.deactivate is true, the workflow just left a step. Use the _data.getParameter to determine what step that is.
form.load vs form.activate
...
When you are designing a form/workflow with many objects and a lot of business rules, reduce the number of page reloads when switching between the designer view, rules view, and the test view by clicking the save and test icon. Save and Test checks for Rule errors before the test popup displays. If rule validation errors are detected, the designer is notified and given the option to correct before the Test popup is displayed.
If you clicked the save and test icon from the Rules page, clicking Cancel on a Rule Validation Failure message returns to the Rules page where you can make changes. Clicking Ok proceeds to the Test popup. Refer to Testing Test Forms and Testing Workflows for more information.
Rule Validator
...
The validator also supports global directives. Use the global directive to identify additional global objects and functions defined in the execution environment and made available to the rule for which it is not appropriate to include a var statement in the rule code itself. One directive can be used to list all additional globals on a single line. Currently there are no known cases requiring the use of the global directive.
Rule Editor Functions
The Rule Validator includes an enhanced editor designed to provide an easy experience when developing rules. The rule editor box includes the following features:
Features | Description |
---|---|
Line Numbers | Line numbers in the rule code editor make it easier to correlate reported validation errors with the line of code. |
Bracket auto close | Type a {, ( or [ and the closing bracket is automatically inserted. |
Match Bracket | Place the cursor on a bracket and both it and the matching bracket are shown in a matching distinctive color (green). |
Syntax Hi-lighting | JavaScript syntax hi-lighting with keywords, variables, comments, etc. shown in distinctive colors. |
Auto Indent | New lines are auto-indented according to generally accepted code formatting rules. |
Code Folding | Bracketed code blocks (functions, if-then-else blocks, etc.) are collapsible. Click the arrow immediately to the right of the line numbers to collapse/expand code blocks. |
Full screen edit mode | Expand the editor to full screen mode if you need more space to work. Click the "double arrow" expand icon (directly above the editor box) or press F2 when your cursor is inside the Rule box to expand to full screen. The ESC key returns you to small window mode. |
Auto Complete/Hinting | When composing a rule, the designer can pick from a list of available controls and their properties directly within the rule editor. The pick list is context sensitive and will behave differently based on where the cursor is located when it is invoked. When on a blank space or immediately following an open bracket/brace, it can be manually invoked using Ctrl-Space to bring up a list of controls. Typing a dot (.) immediately after a control name or after the index ("[i]") that follows a control name will automatically bring up a context sensitive pick list of properties applicable to that control for selection. You can type the first letter of the item you are looking for and the property starting with that character will be highlighted in the list. Continue typing and the matching options will progressively narrow to the characters typed. Double click your choice using the mouse or press the Enter key to select an item. Any other key dismisses the pick list. . See the example below. |
Help | The help icon displays a small help window listing the hot keys described above - (F2, ESC and Ctrl-Space) |
...
Here is an example of the Share URL (Link/Email/Web) that will display the debug console for the form in the image when browsed. Note the _test=true is preceded by a '?' to separate the form/workflow URL from the parameters. Subsequent parameters, such as the embed=true parameter, are preceded by the '&' to separate the parameters from each other. Refer to Parameter Separators in URLS for more information about this syntax.
...
Excerpt | ||||||||
---|---|---|---|---|---|---|---|---|
There are several special considerations when writing rules using date, time and date/time controls. You can also find many working samples in the Rules Examples chapter. To initialize a date control, the data must be in the correct format. Here are examples of correct date formats:
The following formats will not correctly initialize a date control. They will either cause unexpected results or be flagged as an invalid value when the form is used.
In general, it is not recommended to rely on either the browser's locale or the server's locale when writing date, time (time of day) and date/time literals in rules. The recommended method is to use locale independent formats that are listed below. These are standard ISO formats. Date - yyyy-MM-dd Date/Time - yyyy-MM-ddTHH:mm:ssZ - The trailing Z indicates UTC.). Time - HH:mm:ss (or HH:mm). Time is really time of day and is not affected by time zones at all.
Here is an example rule:
This rule will initialize a date control in a form with 02-20-2020, a time control with 1:10 PM and a date and time control with 02-20-2020 in the date portion and 1:10 PM in the time portion. Notice the special character "Z" at the end of the date/time value. This is equivalent to an offset of UTC-00:00 and indicates that the time of 18:10:02 is given in UTC. 18:10:02 UTC is equal to 1:10 PM Eastern Standard time. | ||||||||
Tip | ||||||||
Review the Time Zones documentation for additional details about setting Dates and Times using business rules. |
Rules and Repeating Controls
...
Reusing Data from a Web Service
The example above uses the database connector, which returns a clean json that doesn't cause any problems when it is copied into a text field. The json returned from other services might included extra spaces or other characters and might require trimming. This can cause an error such as 'SyntaxError: Unexpected token in object literal'.
You may need to add this code, which removes spaces from the json string, to your first rule:
Code Block |
---|
var json = http.get(requestUrl); jsonUserData.value = json.replace(/[\n\t\r]/g,""); |
...
- form.type.id - The unique id associated with a given form (See Sharing Forms.)
- flow.type.id - The unique id associated with a given workflow. (See Sharing Forms.)
- form.id - The unique form instance id; This id is unique for each for submission.
- form.name - The name of the form
- flow.id - The unique workflow instance id; This id is unique for each workflow submission.
- flow.activity.id - The ID of the current workflow activity
- flow.activity.name - The name of the current workflow activity
- form.extid - Client defined extId passed in the formtype Url parameter
- flow.extid - Client defined extId passed in the flowtype Url parameter
form.description - The description of the form
form.project.id - The unique id associated with the project of the given form
form.tenant.id - the Tenant ID where a form/workflow is located
form.user.uuid - The unique user id of the user that submitted the form
project.id - The unique id associated with a given project (See Sharing Forms.)
project.name -The name of the project
tn.id - the Tenant ID where a form/workflow is located
- tn.name - the Tenant Name where a form/workflow is located
...
Attributes with more than one value are also supported. For example, The carLicense attribute can return multiple licenses. You can write a rule to populate dropdown options with those values. Make sure the carLicense attribute is added to the custom field on the LDAP Configuration screen and of course, there are multiple carLicense attributes, each one containing a different value for the dropdown options, set up for appropriate users on the LDAP server.
...
Designers may want to copy rules created with the Visual Rule Builder so they can be reused in the same, or another, form/workflow. To copy a rule's javascript code, click the Copy icon icon on the “Rule Code” tab that appears in either Rule Builder mode (when javascript code is read-only) or Edit Code mode. This icon will copy all of the javascript to the clipboard. You can then create a new rule (in the same or another form/workflow), click Edit Code on the new rule, and paste the copied code there to replicate the rule. Then, edit as desired.
View All
Click the View All button to display a read-only view of all the rules in your form/workflow. Then use a browser search (Ctrl+F) to highlight all the places in your rules where a particular search item is mentioned. For example, if you were looking for all the rules that set the required property for a section, search for 'SectionName.required' (replace SectionName with the name of your section). This view might be helpful when correcting errors reported by the Rules Editor.
...