Skip to main content
Version: 1.20.1

Business Rules

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.

note

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:

  • changing values in the fields of a record that caused the rule to run when certain conditions are met.
  • execution of a server-side script of the rule.
  • displaying a message on the client side.
  • creating system events to send e-mail notifications or run other server-side scripts.
  • interrupting database transactions.

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:

  1. Navigate to the list or form view of the table.
  2. Select Configure → Business rules from the burger menu.

Business rule types


Depending on the business task you are solving, use one of the following types of business rules:

  • before
  • after
  • async after

Before rules run conditions:

  • After record action start (insert, update, or delete).
  • Before the system performs server updates (before the database transaction is completed).

After rules run condition:

  • After the system performs server updates (after the database transaction is completed).

Async after rules run condition:

  • After all business rules of other types.
note

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.

Create a business rule


tip

Role required: admin.

To create a new business rule, perform the steps below:

  1. Navigate to System Settings → Business Rules.
  2. Click New and fill in the fields.
  3. Click Save or Save and exit to apply the changes.

Business rules form fields

FieldMandatoryDescription
NameYSpecify a name for the business rule.
TableYSelect the table for which the business rule is executed.
DescriptionNAdd a brief description of the action.
ActiveNSelect this checkbox to activate the business rule.
InheritanceNSelect this checkbox to apply this business rule to all child tables of the specified Table.
AdvancedNSelect 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).
caution

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 Import Set record 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:

  • Main Log (sys_log)
  • Script Log (sys_log_script)
  • Exception Log (sys_log_exception)
  • Record Deletion Log (sys_record_deletion_log)
  • Import Set (sys_import_set)
  • Activity Feed Item (sys_activity_feed_item)
  • Email (sys_email)

Abort business rule


It is possible to perform business rules that abort the subsequent actions and processes: business rules, notifications, approval rules, and other.

To make your business rule abort the follow-up processes, complete the steps below:

  1. Open a business rule record you need.
  2. In the When to Run tab, define the abort conditions.
  3. In the Action tab, select the Abort action checkbox.
  4. 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.
  5. Click Save or Save and exit to apply the changes.

Override an out-of-the-box business rule


If necessary, some "out-of-the-box" business rules can be overridden.

  • For applications other than Simple it is enough to copy an "out-of-the-box" rule using the Make a copy action and deactivate the original rule. You can define the required logic in the copy of the rule.
  • For the Simple application, most rules are delivered with Protection policy = Protected, so you cannot deactivate them. However, the rules of the When = before type can be overridden by rules of a higher order with the same start conditions. For example, an "out-of-the-box" rule with the before type generates a value in the Subject field. The order of the rule is 999. To change the value generation logic, it is enough to make a copy of the rule using the Make a copy action, define a specific logic and set Order = 1000. If the value in the field should remain unchanged, use the rule triggered by an Action update event with the following script:
Example
(function executeRule(current, previous = null /*not null only when action is update*/) {
if (previous) {
current.subject = previous.subject;
}
})(current, previous);