Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Merged branch "DOC0001122" into parent

A business rule is an action run on the server-side after submission of when a record form (when inserting, updating or deleting a record)is inserted, updated or deleted. Business rules are executed within in a database transaction, irrespective 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 of a rule 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. 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;.
  • executing execution of a server-side script of the rule;.
  • displaying a message to on the client side;.
  • creating system events for sending e to send e-mail notifications or running other run other server-side scripts;.
  • aborting interrupting database transactions with the database.

To view all business rules navigate to System DefinitionSettings Business Rules.

To view the business rules related to a specific table, complete the following steps below:

  1. Navigate to the list or form view of the table;
  2. Select ConfigureBusiness Rules from the burger menu.

Business rules types


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

  • before;
  • after;
  • async after.

Each type of business rules has its own run conditions.

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.

The following scheme below illustrates when the before, after, and async after rules run. All rules execute are executed after the start of an action record start on a record (insert, update, or delete).

Process The process starts with a form action: if it is the an update action, the data source is the database, and therefore so the record has the previous block. The previous block represents the form condition state before the action (form submission – submission – insert, update , or delete), and the current blocks represent a the form condition state after the action is completed. Form submission can be performed by a user, a script , or a REST API request.Image Removed

 Image Added 

Business rules creation


Tip

Role required: admin.

Business rules creation

You can create business rule that will be running when inserting, updating or deleting a record.

To create it, please perform the following stepsTo create a new business rule, perform the steps below:

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

Business rules form fields

Anchor
business rule fields
business rule fields

This field

is available

appears when

the

the Advanced checkbox is selected and

the

the When

field

 field value is set to before

or

 or after.

This field

is available

appears when

the

the Advanced checkbox is selected and

the

the When

field

 field value is set to before

or

 or after.

This field

is available

appears when

the

the Advanced checkbox is selected.

FieldMandatoryDescription
NameYBusiness rule nameSpecify a name for the business rule.
TableYTable on which a Select the table for which the business rule will runis executed.
DescriptionNA Add a brief description of the action description.
ActiveNSelect this checkbox to make activate the business rule active.
InheritanceNSelect this checkbox to apply this business rule to all child tables of the table defined in the specified Table field.
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).
When to Run tab
WhenN

Defines Select the moment of the business rule execution:

  • beforeexecution prior to the operation the rule is executed before the trigger of the business rule launch trigger (prior to the is fired (before inserting, updating, inserting or deleting a record);
  • after – execution – the rule is executed after to the operation trigger of the business rule launch trigger is fired (after the inserting, updating, inserting or deleting a record).
  • async afterexecution the rule is carried out executed after all preceding business rules are completedhave been executed: the system returns the form with all changes, and then runs the async after business rules in the background.
OrderN

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.

Info
PriorityN

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
Action InsertinsertNSelect this checkbox to execute the business rule when inserting when a new record is inserted.
Action UpdateupdateNSelect this checkbox to execute the business rule when updating a record is updated.
Action DeletedeleteN

Select this checkbox to execute the business rule when deleting a record is deleted.

Info
Filter ConditionsconditionsN

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.

Info

Use the dynamic filter conditions like is (dynamic) or is not (dynamic) when composing conditional expressions setting up conditions to make your business rules more versatile.


Action tab

Info

The Action tab is not available for the async after business rules.


Set ValuevalueN

Select a column and define the value you need.
Available columns depend on the table specified in the Table field.

info

  • The values from
the
  • the Set value
field
  •  field are applied at the moment of the rule running.
The current
  • The current object state in the script is equal to the state after applying
the
  • the Set value
template
  •  template.
  • Application of

the
  • the Set value

template
  •  template occurs automatically in

the before
  • the before business rules. To use the template in

the after
  • the after business rules you should

call
  • call update()

for the current object to
  •  for the current object in the script:

Code Block
languagejs
themeConfluence
linenumberstrue
(function executeRule(current, previous /*null when async*/) {
    current.update();
})(current, previous);


Warning

To avoid recursion, you should use the current.update() object only in the after business rules. See below in more detail.


Abort action

Anchor
abort action
abort action

Abort Action

N

Select this checkbox to interrupt the transaction (insert, update, or delete) when all conditions are met.

Tip

It is a good practice to specify the reason for the interruption of the action abortion. Select the Add Messagemessage checkbox and type add the text in the Message field.

If no message is specified, the standard 'Saving error' message will be message is displayed when the action abortsis aborted:

Image Modified

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.

Warning

Keep in mind that when When you use the setAbortAction() to abort a transaction, the script is not executed after calling this method is called will not be executed.


Add MessagemessageNSelect 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.
MessageN

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. 

Tooltip
onlyIcontrue
appendIconinfo-filled
iconColorblue

Image Removed

message is displayed as a flash message

To enable localization of the messages, use the values of the  Source Message You can use values from the Source Messages (source_message) table as values of the Message field, which allows localizing the messages displayedrecords from the app category (determined by the value in the Category column). See Localization and Multi-language 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.

Info

The Message field appears when the Add Message checkbox is selected.


Advanced tab
ScriptN
Info

This field is available when the Advanced is selected.

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:

  • previous – the state of a record object before insertinsertion, update, or deletedeletion. The previous object is only available for the update action.
  • current – the state of a record that will be is inserted, updated, or deleted. The current object is still available after the record is deleted.
When a record is inserted
previous 
  • previous is null.
current 
  • current is equal to
the 
 object
  •  object that will be inserted.
When a record is updated
previous 
 object
  •  object as it was before transaction started.
current 
  • current is equal to
the 
 object
  •  object at the moment when the rule execution starts.
When a record is deleted
previous 
  • previous is null.
current 
  • current is equal to
the 
 object
  •  object at the moment when the rule execution starts.
note

You can call the REM attributes in

your

the business

rule

rules of before type

,

. In this case, while

your

the business rule is

processed

processing, you

will

get the current attribute values, before the transaction occurs.

At the moment of triggering the

When the async after business rule is triggered, the action of the rule

action

is sent to the queue. Because of this, there may be

an insignificant lag

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

moment of execution of

time the business rule action is executed.

Warning
Info

The previous object is available only for the update action.

Anchor
recursion_warning
recursion_warning

  • Avoid using current.update() in the before or async after business rule scripts, since as it may cause recursion. If you cannot avoid using current.update(), add a run condition for the rule which stops being that is not satisfied after the first run execution of the rule. Otherwise, recursion is unavoidableinevitable.
  • Avoid using the setAbortAction method with the async after business rules.
  • If a business rule script inserts or updates records in other tables, use the after run type Если в скрипте бизнес правила производится создание/обновление записей в других таблицах, используйте тип запуска after. В противном случае, если в процессе выполнения транзакции одно из бизнес правил выполнится с ошибкой, правило запускаемое на before создаст/обновит запись в других таблицах, что приведет к несогласованности данных.business rule type. Otherwise, if a business rule fails during a transaction, the before rule inserts/updates a record in other tables which leads to data inconsistency.

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:

  • 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 rules 
Anchor
abort business rule
abort business rule


The abort

It is possible to perform business rules that terminate abort the follow-up subsequent actions and processes.

Info

: business rules

terminate the following processes: Business rules, Notifications, Approval Rules, etc.

See Approvals to learn more about approval rule rejection.

,notifications,approval rules, and others.

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 Actionaction checkbox.
  4. In the When to Run tab, check that the When field has the is set to before field.

    Tooltip
    onlyIcontrue
    appendIconinfo-filled
    iconColorblue

    The When field is displayed when the Advanced checkbox is selected.


  5. Click Save or Save and Exit exit to apply the changes.

Out-of-the-box business rules overrideoverride  
Anchor
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
languagejs
themeConfluence
titleExample
linenumberstrue
(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);


Table of Contents