Creating macro rules
Macro rules allow non-technical users to create macro conditions without any knowledge of K# macro syntax. The rules are internally implemented as predefined macro expressions, but appear as purely text-based clauses describing certain requirements. Users build conditions out of macro rules inside a dedicated Rule designer interface.
The system contains many different types of rules by default, and allows you to create custom rules to fulfill any requirements of your users. There are several categories of macro rules:
Rule category |
Description |
Managed in |
Global |
Global rules are available when creating conditions in any part of the system. Note: Certain types of conditions that are closely related to individual applications do not offer global rules. |
Macro rules -> Global |
Form validation |
Allow the system to validate input values of form fields. Users can select the validation rules when defining fields in the field editor (general fields) and the form builder. |
Macro rules -> Form validation |
Workflow |
Users can select workflow rules when adding conditions to workflow scopes or advanced workflow steps. |
Workflows -> Macro rules |
On-line marketing |
Users can select on-line marketing rules when building conditions for:
|
Contact management -> Configuration -> Macro rules |
Reporting |
Users can select reporting rules when specifying conditions for Report subscriptions. |
Open the Reporting application, select any report category in the tree and open the Macro rules tab (in the collapsible panel). |
E-commerce |
The system provides rules for creating conditions that limit discounts: |
Store configuration or Multistore configuration -> Discount rules |
Defining macro rules
To prepare new macro rules for your users:
Navigate to the management interface for the appropriate type of rule (see the table above).
Click New macro rule.
Fill in the following properties:
General
Display name
Sets the name displayed to users in the list of macro rules in the rule designer. Also serves as a basic description of the rule’s purpose.
Name
Serves as a unique identifier of the rule (for example in the API).
Description
A text description of the rule’s purpose and parameters. The text appears as a tooltip when users hover over the rule in the rule designer.
Enabled
If disabled, users cannot select the rule when building conditions.
Note: Disabling a rule does not affect the functionality of existing conditions where users have added the given rule.
Rule data
User text
Defines the text displayed in the rule designer when users insert the rule into a condition.
To add parameters into the text, enter the Column name of a specific parameter enclosed in curly brackets, for example {days}. In the rule designer, the parameter appears as an underlined section in the text. Users can set the parameter’s value by clicking the underlined text.
See the Adding rule parameters section for more information.
Condition
The actual condition represented by the rule. Define the condition through standard macro code (K#). The field provides autocomplete support.
Add any parameters offered by the rule to the appropriate position in the code, using the same syntax as for the User text field, for example {days}. When the system resolves the condition, the parameter expression is replaced by the value set for the parameter by users in the rule designer.
Required data
Limits for which conditions the macro rule is available. The rule only appears when building conditions that have the specified data items available in the resolving context. You can add multiple required data items separated by semicolons (;).
Leave this property empty unless you are creating rules specifically for conditions with a customized resolving context.
Requires context
Enable this property if the rule’s condition needs to access context data (information about the current user, the currently viewed page, etc.) in order to work correctly. This ensures that the rule only appears for conditions that have the context available when they are resolved.
For example, the context is accessible when evaluating the conditions of Content personalization variants on the website’s page, but not when the system is building dynamic Contact groups.
Click Save.
Adding rule parameters
Parameters are variables inside macro rules that modify the resulting condition. By adding parameters, you can make flexible rules that are usable for a wide range of scenarios. For example, in a macro rule that requires the current user to be a member of certain roles, the names of the roles would be a parameter.
To create a parameter for a macro rule:
Edit the macro rule.
Open the Parameters tab.
Prepare the parameter as a form field. Every parameter has a certain data type and various other settings. The interface that users see when editing the parameter’s values depends on the selected Form control.
Refer to Reference - Field editor for details about working with the field editor.
Click Save.
Switch to the rule’s General tab.
Place the parameter into the rule’s User text and Condition code.
- The syntax for inserting parameters is the parameter’s Column name enclosed in curly brackets, for example {role}.
- When the system resolves conditions containing the macro rule, the parameter expressions in the condition code are replaced by the values entered by users. You need to position the parameter expression accordingly.
Click Save.
Users can now set the values of the rule’s parameters when building conditions.
Automatic rule parameters
There are several predefined parameters you can use to add common functionality to macro rules:
- {_is}, {_has}, {_was}, {_will}, {_perfectum} - provide an easy way to negate a rule’s condition. Each variant offers different wording, so you can use the one that matches the text of your rule. The parameters allow users to choose between a positive and negative option, for example is or is not. If the negative option is selected, the parameter resolves into the K# negation operator “!” in the condition code. With the positive option, the parameter returns an empty string.
- {_any} - useful for rules where a list of items needs to be specified through another parameter. The parameter allows users to switch between two options that determine how the rule processes the item list — any (at least one of the items must meet the given condition) or all (the condition must be fulfilled for all items in the list). When resolved, the parameter returns either a false (any) or true (all) value. In the condition code, you can insert the parameter as an additional argument of macro methods that work with object lists, which automatically ensures the required functionality. For example: CurrentUser.IsInRole(“{roles}”, {_any})
When you enter one of the automatic parameters into the User text field of a rule, the system automatically creates a field with the corresponding configuration and default values on the Parameters tab.
Modifying existing macro rules
When you make changes in the definition of a macro rule or its parameters, the system does NOT update the functionality of existing conditions. This may lead to incorrect behavior of conditions containing the modified rule.
To make sure your conditions are up-to-date, you need to manually perform the following steps after modifying an existing macro rule:
- Find the condition fields that contain the rule. You can use the macro report tool to search.
- Click Edit next to the field to open the rule designer.
- If required, update the parameters for all occurrences of the modified rule.
- Click Save & Close.
When you save the condition, the system uses the current definitions of the contained macro rules.