A business rule is an action run on the server-side when a record is inserted, updated or deleted. Business rules are executed in a database transaction, regardless of the interface used to initiate the transaction (a user submitting a form, the execution of a server-side script, a REST request, the execution of a Workflow Activity block). The rule action can be executed both on the current record and on other records.
Business rules can use scripts to perform actions with records in the database. There are other options of the script actions available, such as client-side scripts and UI-actions. |
Business rules are used for:
To view all business rules navigate to System Settings → Business Rules.
To view the business rules related to a specific table, complete the steps below:
Depending on the business task you are solving, use one of the following types of business rules:
Before rules run conditions:
After rules run condition:
Async after rules run condition:
The async after business rules run after the before and after business rules, so the user first receives the form with all the changes, and then the async after rules run. Thus, using the async after business rules, you can optimize system response time – use the async after rules for resource-intensive scripts that take a lot of time. |
The following scheme illustrates when the before, after, and async after rules run. All rules are executed after the start of an action on a record (insert, update, or delete).
The process starts with a form action: if it is an update action, the data source is the database, so the record has the previous block. The previous block represents the form state before the action (form submission – insert, update or delete), and the current blocks represent the form state after the action is completed. Form submission can be performed by a user, a script or a REST API request.
Role required: admin. |
To create a new business rule, perform the steps below:
Business rules form fields
Field | Mandatory | Description | |||||||
---|---|---|---|---|---|---|---|---|---|
Name | Y | Specify a name for the business rule. | |||||||
Table | Y | Select the table for which the business rule is executed. | |||||||
Description | N | Add a brief description of the action. | |||||||
Active | N | Select this checkbox to activate the business rule. | |||||||
Inheritance | N | Select this checkbox to apply this business rule to all child tables of the specified Table. | |||||||
Advanced | N | Select this checkbox to display the Script field and advanced settings such as the type of the business rule (the When field in the When to Run tab). | |||||||
When to Run tab | |||||||||
When | N | Select the moment of the business rule execution:
| |||||||
Order | N | Specify the order of the business rule execution. If there are multiple business rules of the same type (before, after, async after), they are executed in the ascending order. This field appears when the Advanced checkbox is selected and the When field value is set to before or after. | |||||||
Priority | N | Specify the priority of the business rule. If there are multiple business rules with the same Order, they are executed in the descending order according to their Priority. This field appears when the Advanced checkbox is selected and the When field value is set to before or after. | |||||||
Action insert | N | Select this checkbox to execute the business rule when a new record is inserted. | |||||||
Action update | N | Select this checkbox to execute the business rule when a record is updated. | |||||||
Action delete | N | Select this checkbox to execute the business rule when a record is deleted. This field appears when the Advanced checkbox is selected. | |||||||
Filter conditions | N | Specify the conditions for the business rule execution. After specifying the Table, all fields of this table are available in the condition builder.
| |||||||
Action tab
| |||||||||
Set value | N | Select a column and define the value you need. Available columns depend on the specified Table.
| |||||||
Abort action | N | Select this checkbox to interrupt the transaction (insert, update, or delete) when all conditions are met.
If the abort conditions cannot be set using the Filter Conditions field, use the script with the setAbortAction and ss.addErrorMessage methods. In this case, the Abort action checkbox should be cleared.
| |||||||
Add message | N | Select this checkbox to display the Message field if you need to show a message to a user when the business rule is performed. | |||||||
Message | N | Enter the message you need to show to a user when the business rule is performed. The message is displayed as a flash message. To enable localization of the messages, use the values of the Source Message (source_message) records from the app category (determined by the value in the Category column). See Localization and Multi-Language Support to learn more. Do not use variables and dynamic links to other records in this message. In order to add a message with variables or dynamic links, select the Advanced checkbox and configure the script in the tab of the same name.
| |||||||
Advanced tab | |||||||||
Script | N | Add a script that determines the actions to be executed when the business rule is launched. The previous and current variables are available:
You can call the REM attributes in the business rules of before type. In this case, while the business rule is processing, you get the current attribute values, before the transaction occurs. When the async after business rule is triggered, the action of the rule is sent to the queue. Because of this, there may be a slight delay between the triggering of the business rule and execution of the action. The current and previous objects in the async after business rules contain the state of the object at the time the business rule action is executed.
This field appears when the Advanced checkbox is selected. |
The server-side business logic may not work for system tables if the creation or updating of records is initiated by the backend. For example, an Impor Set is created as part of loading an Import Source, or an Email is created as a result of a notification rule, and so on. Example of tables for which server-side business logic may not work:
|
It is possible to perform business rules that abort the subsequent actions and processes: business rules, notifications, approval rules, and others.
To make your business rule abort the follow-up processes, complete the steps below:
In the When to Run tab, check that the When field is set to before.
The When field is displayed when the Advanced checkbox is selected. |
Click Save or Save and exit to apply the changes.
If necessary, some "out-of-the-box" business rules can be overridden.
(function executeRule(current, previous = null /*not null only when action is update*/) { if (previous) { current.subject = previous.subject; } })(current, previous); |