Business rule elements
Each business rule is built of the following components:
Validation formula
Variable
It is a business rule component that refers to a cell in a table/concept in the dictionary with optional filtering. By default, the name is set to $v0. Each subsequent variable will have a name with an incremented number e.g. $v1, $v2, $v3 etc.
Expression
Shows the uses of the variables defined for a business rule, e.g. $v0 = $v1 + $v2.
Join
Defines the way tables from a business rule should combine together.
Where
Additional logical expression applied before executing the business rules, used to limit data set used for validating.
Additional options
Run rule even when no values for a variable are provided - if the cells included in the variable have no value Matter will run the business rule anyway to avoid errors.
Export to XBRL - includes a rule in the XBRL export file.
Is deactivated - the rule is not active.
Variable components
Clicking on the existing variable opens it’s components and allows to make edits.
Each variable has following details:
Properties
Properties include variable name that is assigned automatically using the predefined order (e.g. $v1, $v2, $v3 etc.). However, it can be set manually. To do it click on name of the variable and edit it.
In properties it is also possible to define Sequence (true or false) and set a Fallback value.
Sequence is used to create a joined element. By default it has false value and all elements mentioned in the rule will be treated separately. If marked as true variable elements will be treated as joined.
Fallback indicates a value that should be replaced when there is no fact reported. The expanded menu next to a fallback contains all the most usable fallback values. However, by choosing “other” it is possible to write a custom one.
For most arithmetic rules the fallback value should be set to “0”, so the given variable is ‘skipped’ while the business rule is still evaluated.
The Fallback value is set automatically by the system if left empty after you save the rule. It is set based on the data type used by the variable.
Here are the rules the system follows to set the fallbacks:
Pure, Integer, Monetary, Percentage, Decimal → Zero
Enumeration → Default Qname
Boolean True → Default Boolean (can’t be null)
Boolean → Default Boolean
Date → Default Date
Text, LEI, ISIN → Empty String
Any data types that are not mapped are set to
none
If “Sequence” is used OR the variable has more than one ordinate with different types selected → Empty Sequence
Dictionary Variables always have their Fallback Empty Sequence
Constant Variables don’t have Fallbacks
If you want to prevent this behaviour and set the fallbacks automatically please turn the expert mode ON for this rule (the “Manual fallback mode (expert)“ on the Edit Rule page)
Indicator
Used in cross-report validation, to indicate, that this variable should use data from the referenced module; in the example above, the reference indicator is set to referenceIndicator
. Reference indicator value must be set to the InstanceID
of the reference report during the execution of the validation rule.
Indicator could be also auto-generated to provide the information regarding framework and framework version.
Context
Context is used to give a detailed description about the elements of the variable. Ticking checkboxes for rows, columns or tables mark the chosen element as “is scope”.
Is scope
When a business rule applies to several axis ordinates, it is possible to duplicate the calculation of a single calculation in a single rule by selecting the “Is scope” flag.
For example, if there is a rule saying that r010 = r020 + r030 which applies to columns c010, c020, and c030, columns should be indicated as a ‘scope’ of the rule. This will ensure that the rule applies to each column and there is no need to create a separate rule for each column.
Constants
From the field there is another possibility to define constants.
Filter
Filter is mostly used for individual defining of values. Allows narrowing down the values taken for calculations, e.g. in the case of open row tables, it is possible to filter only rows following a specific pattern.