Junction

The rule type 'Junction' applies a logical operation to a set of Boolean values returned by other rules.

Unlike most other Rule types, junctions are not introduced into a rule configuration by an explicit selection from the context menu in the Rule editor, but are created implicitly when a new rule is added to an existing configuration.

Depending on the position selected for adding a new rule, one of the following junction types is referred to:

Junction type

Symbol

Relative position

Logical operation

AND-junction (CONJUNCTION)

<AND>

above or below

A conjunction resolves 'true', if all immediately contained rules are passed.

OR-junction (DISJUNCTION)

<OR>

left or right

A disjunction resolves 'true', if any of the immediately contained rules are passed.

Combined with the only other implicitly applied rule type for negation (see Not rule), these two junction types enable the definition of logical dependencies without limits regarding complexity.

The following example defines an 'aggregate' consisting of 5 rules, including one conjunction and one disjunction:

images/download/attachments/201666241/image-2025-3-31_13-47-22-version-1-modificationdate-1743421642804-api-v2.png

  • The rule defining an association criterion in this configuration will be passed, exactly if the reference object is of Custom entity type 'Tour' OR 'Stop' AND it as been modified since the start of the current calendar day.

  • A precise description of this aggregate in mathematical notation requires the use of parentheses: ( (Type is 'Tour') \/ (Type is 'Stop') ) /\ (Last modified date ≥ 'Start of today')

  • The notation of the Rule editor (see screenshot) visualizes the logical precedence by nesting rules, provided the involved elements are 'expanded' far enough.

In the following XML code for the above configuration, the junctions appear as elements of the type <core:RuleJunction>, whereas the hierarchy between rules is visualized by indentation and nesting:

<?xml version="1.0" encoding="UTF-8"?>
<core:RuleJunction xmlns:core="CORESYSTEM" junctionType="CONJUNCTION">
<core:RuleJunction junctionType="DISJUNCTION">
<core:CheckTypeRule type="custom.Tour" isCollectionOf="false" checkNullValue="false"/>
<core:CheckTypeRule type="custom.Stop" isCollectionOf="false" checkNullValue="false"/>
</core:RuleJunction>
<core:EntityPropertyRule>
<core:CompareableMatcher type="GREATER_OR_EQUALS_THAN">
<core:DateTimeValue type="START_TODAY"/>
</core:CompareableMatcher>
<core:PropertyResolver property="lastModified" expectedType="java.sql.Timestamp"/>
</core:EntityPropertyRule>
</core:RuleJunction>