Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Business A business rule is a an action run on the server-side script running at the moment of inserting, updating, or deleting a record. Business rules are used for such tasks as conditionally automatic value change in the form fields or event creation for email notifications and script actionswhen 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.
Info |
---|
Business rules can use scenarios scripts to perform actions with records in the database. Even so, there There are several 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:
- Navigate to the list or form view of the table.
- Select Configure → Business Rules from the burger menu.
Business rules types
Depending on the business task you are solving, use one of the following types of business rules:
- before
- after
- async after
Process starts with a form action: if it is the update action, data source is the database, and therefore the record has the previous block. The previous block represents form condition before action (form submission – insert, update, or delete), and the current blocks represent a form condition after the action is completed. Form submission can be performed by a user, script, or REST API request.

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 conditionscondition:
- After the system performs server updates (after the database transaction is completed).
Async after rules run conditionscondition:
- After all business rules of other types (after all after business rules).
Info |
---|
Async The async after business rules run after before the before and after business rules, so the user first , a user receives the form with all the changes, and then the async after rules run. Thus, using async the async after business business rules, you can optimize system response time – use async the async after rules for resource-intensive scripts that take a lot of time. |
Tip |
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.
Image Added
Business rules creation
You can create business rule that will be running when inserting, updating or deleting a recordTip |
---|
Role required: admin. |
To create ita new business rule, please perform the following steps below:
- Navigate to System Definition → Settings→ Business Rules.
- Click New and fill in the fields.
- Click Save or Save and Exitexit to apply the changes.
Business rules form fields Anchor business rule fields business rule fields
Field | Mandatory | Description | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Name | Y | Business rule nameSpecify a name for the business rule. | |||||||||||||||||||||||||||||||
Table | Y | Table on which a Select the table for which the business rule will runis executed. | |||||||||||||||||||||||||||||||
Description | N | A Add a brief description of the action description. | |||||||||||||||||||||||||||||||
Active | N | Select this checkbox to make activate the business rule active. | |||||||||||||||||||||||||||||||
Inheritance | N | Select this checkbox to apply this business rule to all child tables of the table defined in the specified Table field. | |||||||||||||||||||||||||||||||
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 | Defines Select the moment of the business rule execution:
| |||||||||||||||||||||||||||||||
Order | N | Defines Specify the order of the business rule execution. If there are several multiple business rules of the same type (before, after, async after), they will perform are executed in the ascending order. infoThis field is availableappears when thethe Advanced checkbox is selected and thethe When fieldfield value is set to before oror after. | |||||||||||||||||||||||||||||||
Priority | N | Defines Specify the importance 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. Info | This field is availableappears when thethe Advanced checkbox is selected and thethe When fieldfield value is set to before oror after. | ||||||||||||||||||||||||||||||
Action Insertinsert | N | Select this checkbox to execute the business rule when inserting when a new record is inserted. | |||||||||||||||||||||||||||||||
Action Updateupdate | N | Select this checkbox to execute the business rule when updating a record is updated. | |||||||||||||||||||||||||||||||
Action Deletedelete | N | Select this checkbox to execute the business rule when deleting a record is deleted. Info | This field is availableappears when thethe Advanced checkbox is selected. | ||||||||||||||||||||||||||||||
Filter Conditionsconditions | N | A condition builder that allows using static and dynamic filtersSpecify the conditions for the business rule execution. After specifying a table in the Table field, all fields of this table will be are available in the constructorcondition builder.
| |||||||||||||||||||||||||||||||
Action tab
| |||||||||||||||||||||||||||||||||
Set Valuevalue | 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 the Filter Conditions field field, you can use the script with the setAbortAction and ss.addErrorMessage methods in the script. In this case, the Abort Actionaction checkbox should be cleared.
| |||||||||||||||||||||||||||||||
Add Messagemessage | N | Select this checkbox to display the Message text field if you want need to show a message to a user when a the business rule is performed. | |||||||||||||||||||||||||||||||
Message | N | Enter the message text you want need to show to a user when a the business rule is performed. The message will appear in the bottom right corner.
is displayed as a flash message. Here, you can also copy the value of a To enable localization of the messages, use the values of the Source Message (source_message) record) records from the app category (determined by the value in the Category column). See the Localization and Multi-language Language Support article 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 |
The action sequence that will Add a script that determines the actions to be executed when a the business rule is launched, . The previous and current variables are available:
You can call the REM attributes in yourthe business rulerules of before type ,. In this case, while yourthe business rule is processedprocessing, you willget 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. |
Note |
---|
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:
|
Abort business rules Anchor abort business rule abort business rule
abort business rule | |
abort business rule |
It is possible to perform business rules that terminate abort the follow-up subsequent actions and processes.
: business rules,
Notifications Approval Rules, etc.approval rules, and others.
See Approvals to learn more about approval rule rejection.
To make your business rule abort the follow-up processes, complete the steps below:
- Open a business rule record you need.
- In the When to Run tab, define the abort conditions.
- In the Action tab, select the Abort Actionaction checkbox.
In the When to Run tab, check that the When field has the is set to before field.
Tooltip onlyIcon true appendIcon info-filled iconColor blue The When field is displayed when the Advanced checkbox is selected.
Click Save or Save and Exit exit to apply the changes.
Out-of-the-box business rules overrideoverride Anchor override override
override | |
override |
If necessary, some "out-of-the-box" business rules can be overridden.
- For applications other than Simple it is sufficient enough to copy an "out-of-the-box" rule using the Make a copy action and deactivate the original rule. Then you You can determine define the required logic in the copy of the rule.
- For the Simple application the majority of the , most rules are delivered with Protection Policypolicy = Protected, thus so you can not simply deactivate them. However, the rules of the When=before type can be overridden by rules of a higher order with the same start conditions of a higher order. For example, an "out-of-the-box" rule with the before type generates a value in a fieldthe Subject field. The order of the rule is 999. To change the value generation logic, it is sufficient enough to make a copy of the rule using the Make a copy action, determine define a specific logic and set Order = 1000. If the value in the field must should remain unchanged, use the rule triggered by an Action Updateupdate event with the following script:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
(function executeRule(current, previous = null /*not null only when action is update*/) { if (previous) { current.getValue('field_name')subject = previous.getValue('field_name')subject; } })(current, previous); |
Бизнес правила
Бизнес правило представляет собой действие, запускаемое на серверной стороне после отправки формы записи (при создании, обновлении или удалении). Бизнес правила выполняются в рамках транзакции с БД, вне зависимости от интерфейса, через который была инициирована транзакция (отправка формы пользователем, выполнение серверного скрипта, REST запрос, выполнение блока Workflow Activity). Действие правила может выполнятся как в отношении текущей записи, так и в отношении других записей.
Бизнес правила используют для:
- изменения значений в полях записи вызвавшей срабатывание правила при соблюдении определённых условий;
- выполнения серверного скрипта правила;
- выведения сообщений на сторону клиента;
- создания системных событий для отправки уведомлений по электронной почте или выполнения других серверных скриптов;
- прерывания выполнения транзакции с БД.
- перейти на список или форму таблицы;
- выбрать пункт бургер меню Configure -> Business Rules.
В зависимости от решаемой бизнес задачи, используют соответствующий тип бизнес правил:
- before;
- after;
- async after (асинхронные).
- Правила с типом before (When=before) запускаются до завершения транзакции с БД.
- Правила с типом after запускаются после завершения транзакции.
- Правила с типом async after (асинхронные бизнес правила) выполняются после блока after правил без обеспечения очерёдности.
Последовательность выполнения бизнес правил разных типов в контексте отправки формы:
Image Removed
В скрипте бизнес правила доступны объекты записи, вызвавшей срабатывание правила – previous
и current
.
previous
– объект класса SimpleRecord, который является состоянием записи в БД до срабатывания правила. В бизнес правилах на Action Insert и Action Deleteprevious
равен null.current
– объект класса SimpleRecord, который хранит состояние записи в момент срабатывания правила. В бизнес правилах на Action Delete – содержит состояние объекта до удаления. Особенность работы асинхронных бизнес: в момент срабатывания бизнес правила, действие правила отправляется в очередь. Другими словами, возможен незначительный простой между срабатыванием бизнес правила и выполнением действия. Поэтому в асинхронных бизнес правилах current содержит состояние объекта на момент выполнения действия правила.
Запуск бизнес правил влияет на производительность приложения. Для оптимизации выполнения запросов при отправке формы задавайте условия срабатывания бизнес правил через поле Filter Conditions.
Например, в задаче Task существует поле caller. Поле ссылается на запись пользователя User. Если у пользователя значение поля Active меняется на true, устанавливать всем задачам пользователя поле Active равным true. И наоборот, если пользователь становится неактивным (Active=false) – активность его задач должна меняться на false. Скрипт бизнес правила, запускаемого после обновления записи User будет иметь вид:(
function
executeRule(current, previous
/*null when async*/
) {
if
(previous.active != current.active) {
// значение в поле active меняется?
const task =
new
SimpleRecord(
'task'
);
task.addQuery(
'caller'
, current.sys_id);
task.addQuery(
'active'
,
'!='
, current.active);
// исключить из выборки записи, для которых не нужно менять значение
task.query();
task.setMultipleValue(
'active'
, current.active);
task.updateMultiple();
}
})(current, previous);
В таком виде бизнес правило будет срабатывать при каждом обновлении текущей записи, вне зависимости от того, изменилось ли значение активности. Для оптимизации, условие срабатывания должно if
(previous.active != current.active)
быть вынесено в поле Filter Conditions:
Image Removed
Бизнес правила могут использоваться для прерывания выполнения транзакции с БД.
Существует два сценария настройки бизнес правила для прерывания транзакции:
- No/Low-code сценарий. Применим если условие запуска правила может быть задано через поле Filter Condition.
Параметры бизнес правила:
• When: before
• Filter Condition: {условие запуска правила}
• Abort Action: активно
• Message: {текст сообщения с причинами прерывания} - Pro-code сценарий, если условие запуска не может задано через Filter Condition
Параметры правила:
• When: before
• Advanced: активно
• Abort Action: не активно
• Script: {скрипт с вызовом метода ss.addErrorMessage() для вывода сообщения с причиной прерывания + вызов метода setAbortAction()}
Рекомендации по использованию бизнес правил
Используйте для вывода сообщения поле Message или метод ss.addErrorMessage() в скрипте правила.
Особенности использования бизнес правил
- Значения из поля Set value применяются в момент срабатывая правила. Состояние объекта
current
в скрипте правила равно состоянию после применения шаблона Set value. - Применение шаблона Set value происходит автоматически в правилах типа before. Для применения шаблона в правилах с типом after необходимо добавлять в Script вызов метода update() для объекта
current
:
(
function
executeRule(current, previous
/*null when async*/
) {
current.update();
})(current, previous);
- Для прерывания транзакции необходимо использовать правила с типом before. Прерывание возможно реализовать, активируя поле Abort Action. В таком случае условия прерывания нужно задавать через поле Filter Condition. Если условие не может быть задано через Filter Condition – необходимо использовать метод SimpleRecord setAbortAction() для объекта
current
в скрипте правила:(
function
executeRule(current, previous
/*null when async*/
) {
if
(String(current.serial_number).length != 10) {
ss.addErrorMessage(
'Serial Number should be 10 characters length'
);
current.setAbortAction(
true
);
}
})(current, previous);
- Используя метод прерывания транзакции setAbortAction() необходимо учитывать, что скрипт написанный после вызова метода не будет выполнен.
- В качестве значения для поля Message могут использоваться значения из справочника Source Message (source_message), что позволит локализовать выводимые сообщения.
- Системные поля записи: ID (sys_id), Updated by (sys_updated_by), Updated at (sys_updated_at), Created by (sys_created_by), Created at (sys_created_at), Table (sys_db_table_id) заполняются после создания (вставки) записи. Соответственно, в бизнес правилах с типом before срабатывающих при вставке, значения системных полей будут недоступны. Для получения значений системных полей (кроме sys_id) используйте методы
• ss.getUserID()
• new SimpleDateTime().getValue()
•new
SimpleRecord(
'sys_db_table'
).get(
'name'
, current.getTableName()).sys_id;
- В бизнес правилах на Action Delete объект
current
содержит состояние объекта до удаления. - В момент срабатывания асинхронного бизнес правила, действие правила отправляется в очередь. Поэтому возможен незначительный простой между срабатыванием бизнес правила и выполнением действия. Объекты
current
иprevious
в асинхронных бизнес правилах содержит состояние объекта на момент выполнения действия правила.
Отладка правил
Историей срабатывания конкретного бизнес правила доступна на форме бизнес правила в связанном списке Script Log:
Image Removed
По умолчанию, логирование серверных скриптов отключено. Для включения перейдите в список системных свойств System Properties и укажите значение true для записи системного свойства simple.logs.enable_script_logging.
Выполнение каждого серверного скрипта логируется в таблицу Script Logs [sys_log_script]. Переход в список через навигатор – System Logs -> Script Logs.
Выполните фильтрацию логов по документу, для которого необходимо проанализировать транзакцию, укажите промежуток выполнения транзакции +- 10 секунд и добавьте сортировку по полю Start time:
Table of Contents |
---|