Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Business-

A business rule is a server-side script running at

when

the moment

when

of inserting, updating, or deleting a record.

them for

Business rules are used for such tasks as conditionally automatic value change in the form fields or event creation for email

notifies

notifications and script actions.

Info

Business

-

rules can use scenarios to perform actions with records in the database. Even so, there are several other options of the script actions available, such asclient

-side

scripts and UI-actions.

The scheme below illustrates when Before and After rules run.

Image Removed

Before Rules run conditions:

before, after,andasync after rules run. All rules execute after an action record start (insert, update, or delete).

The process starts with a form action: if it is the update action, the data source is the database, and therefore the record has the previous block. The previous block represents a form condition before an 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.

Image Added

Before rules run conditions:

  • After record action start (insert, update, or delete).After a user submits the form;
  • Before the system performs the server updates.

After rules run conditions:

After a user submits a form;

  • After the system performs the server updates.
Note

Role required: admin.

Abort Business-rules

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

Async after rules run conditions:

  • After all business rules of other types (after all after business rules).
Info

The abort Async after business -rules terminate the following processes: Business-rules, Notifications, Approval Rules, and etc.

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

  1. Open the business-rule desired.
  2. On the form, check the Abort Action box.
  3. Click Save or Save and Exit.

rules run after before and after business rules, so first, a user receives the form with all changes, and then async after rules run. Thus, using async after business rules, you can optimize system response time – use async after rules for resource-intensive scripts that take a lot of time.


Tip

Role required: admin.

Business

Business-

rules creation


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

To create it, please perform the following steps:

  1. Navigate to System Definitions → Business to System Settings → Business Rules.
  2. Click New.Fill and fill in the form fields and save the business-rule.
  3. Click Save or Save and Exit to apply the changes.

Business rules form fields

Anchor
business rule fields
business rule fields

In this field, you can specify the field values of the Table record applied by default when performing a business-ruleCheck this box the - the -
FieldMandatoryDescription
NameYThe business-Business rule name,.
TableYTable A table on which the a business - rule will be performingrun.
DescriptionNThe A brief action description.
Active
Abort actionWhen set to TRUE, and all conditions of business-rule are met then the transaction (update, insert, delete) will be interrupted.
ActiveWhen set to TRUE, this business-rule will be performing; otherwise it will not.
InheritanceWhen set to TRUE, this business-rule will be applied not only for the table specified in the Table field but also for all its child tables.
AdvancedWhen set to TRUE, additional fields for configuration are displayed on the business-rule form, including Script field.
NSelect this checkbox to make the business rule active.
InheritanceNSelect this checkbox to apply this business rule to all child tables of the table defined in the Table field.
AdvancedNSelect this checkbox to display the Script field and advanced settings such as type of the business rule (the When field in the When to Run tab)Template.
When to Run tab
WhenN

Defines the moment of

a

business

-

rule execution:

  • before – execution prior to the operation of the business
-
  • rule launch trigger (prior to the updating, inserting or deleting a record)
;
  • after
– execution
  • – execution after
to
  • the operation of the business
-
  • rule launch trigger (after the updating, inserting or deleting a record).
  • async after execution is carried out after all preceding business rules are completed: the system returns the form with all changes and then runs async after business rules in the background. Using async after business rules, you can optimize system response time.
OrderN

Defines the order of the business

-

rule execution. If there are

over one

several business

-rules,

rules of the same type (before, after, async after), they will perform in the ascending order.

Info

This field is available when the Advanced is selected and the When field value is before or after.


PriorityN

Defines the importance of the business rule.

Info

This field is available when the Advanced is selected and the When field value is before or after.


Action InsertNSelect this checkbox to execute the business rule when inserting When set to TRUE, this business-rule will perform the actions when inserting a new record.
Action UpdateNSelect this checkbox to execute the business rule When set to TRUE, this business-rule will perform the actions when updating a record.
Action DeleteN

Select this checkbox to execute the business rule

When set to TRUE, this business-rule will perform the actions

when deleting a record.

Role Conditions
Info

This

multiselect

field

specifies the roles of users that must be met to perform a business-rule

is available when the Advanced is selected.


Filter ConditionsN

A Business-rule launch condition builder that allows using static and dynamic filters. After specifying a table in the Table field, all fields of this table will be available in the constructor.

Info

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


Action tab

Info

Action tab is not available for async business rules.


Set ValueNSelect a column and define the value you need.
Available columns depend on the table specified in the Table field.
Abort ActionN

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

Tip

A good practice is to specify the reason of action to abortion. Select the Add Message checkbox and type the text in the Message field.

If the message is not specified, only the standard 'Saving error' message will occur when the action aborts:

Image Added


If abort conditions cannot be set using the Filter Conditions field, you can use the script with the setAbortAction and ss.addErrorMessage methods in the script. In this case, the Abort Action checkbox should be cleared.

Add MessageNSelect this checkbox to display the Message text field if you want to show a message to a user when a business rule is performed.
MessageN

Enter the message text you want to show to a user when

a business

rule is performed.

Advanced tab
Condition

The condition option written using server-side API defines situations when a business-rule runs. If this condition is met, then the Script will be executed. Use logical operators && (AND) and || (OR) for making up the complex conditional expressions.

Condition option allows invoking server-side Script Includes created.

The message will appear in the bottom right corner. 

Tooltip
onlyIcontrue
appendIconinfo-filled
iconColorblue

Image Added


Alternatively, a Message can be a value of the Source Message (source_message) record from the app category. See the Interface Localization article to learn more.

Info

The field appears when the Add Message checkbox is selected.


Advanced tab
ScriptNScript


Info

This field is available when the Advanced is selected.

The action sequence that will be executed when

the

a business

-

rule is launched,

Variables

previous and current variables are available

in the function:

previous – the state of the record field before saving. This variable is not available to use in Action Insert business-rules;

current – record fields values that will be saved.

:

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


Note

You can call REM attributes in your business rule of before type, In this case, while your business rule is processed, you will get the current attribute values, before the transaction occurs.


Info

The previous object is available only for the update action.


Warning

It is strongly recommended to avoid using:

  • current.update() with before, async and after business rules. It may cause unpredictable system behavior. 
  •  the setAbortAction method with async.



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 Import 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.

A list of table examples 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


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

Info

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

See Approval Management to learn more about approval rule rejection.

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 has the 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 to apply the changes.

Out-of-the-box business rules override 
Anchor
override
override


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

  • For applications other than Simple, it is sufficient to copy an out-of-the-box rule using the Make a copy action and deactivate the original rule. Then you can determine the required logic in the copy of the rule.
  • For the Simple application, the majority of the rules are delivered withProtection Policy = Protected, thus you can not simply deactivate them. However, the rules of the When=before type can be overridden by rules 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 the Subject field. The order of the rule is 999. To change the value generation logic, it is sufficient to make a copy of the rule using the Make a copy action, determine a specific logic and set Order = 1000. If the value in the field must remain unchanged, use the rule triggered by an Action Update 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.subject = previous.subject;
  }
})(current, previous);


Table of Contents
absoluteUrltrue
classfixedPosition