July 1, 2022. Release 8.5.3 is a minor release that adds several advanced features such as handling collections of objects, new operators, multiple rules in CSV-based decision tables, upgrades dependencies, and more. Below is the complete list of the 8.5.3 changes.
Advanced Iterations Over Collections
Usually our users used special columns ActionIterate with different flavors (ActionIterateWithType, ActionIterateWithBreak) to iterate through collections/arrays of business objects. While these column will be supported, this release introduced a more intuitive column of the type ActionLoop. Here are a few examples:
As you may guess what this table does: For Each “Flight” From the array “Passenger Flights” Execute Rules “DefineFlightSuitability”.
The rules applied to each Flight may be described in any decision table like this one from the standard OpenRules sample “FlightRebooking”:
The column “ActionLoop” may include an optional sub-column “Until” as in this table from the standard sample “IterateWithBreak”:
You may use simple expressions inside the sub-column “Until”, e.g. “Scheduled Passengers > 0” or “Salary >= 120000”.
Iterating Over Arrays of Basic Types
In the above examples Flight was the name of a business concept defined in the Glossary and the array “Passenger Flights” had type Flight. However, now you may use a similar column ActionLoop for arrays/collections of basic types such as String, int, double, boolean, etc. For example, the new standard sample “ICD10Challenge” uses embedded loops over the same array “Diagnoses” that has type String:
The first loop uses decision variable “Diagnosis 1” and the second loop uses decision variable “Diagnosis 2” where both variables are defined in the Glossary with the basic type String. The second table will be executed for every element of the array “Diagnoses” with the current diagnoses available as “Diagnosis 1”. It will execute rules “AnalyzeDiagnoses”, defined in the third table, using decision variables “Diagnosis 1” and “Diagnosis 2”.
Multiple Rules in CSV-based Decision/Big Tables
Now decision tables (including Big tables) that use CSV files can contain multiple rules, e.g.
Read more in this post.
Operator “Add Unique”
We added the operator “Add Unique” ( with synonym “+unique”) that allows you to add an element to an array or collection only if it has not already existed. For instance, if you want to avoid adding duplicate errors to the array “Errors” your decision table may use this column:
Operator “Intersect With”
This operator checks if two arrays intersect. Now this operator works not only with arrays but with any lists and any other collections of business objects. Here is an example:
We also added operator “Does Not Intersect With”.
New and Modified Samples
We added/modified the following projects in the workspace “OpenRulesSamples“:
Changing Port for REST Applications
Now you may use System property “server.port” to change the default port 8080 for automatically deployed REST services.
With this release RuleDB projects can be deployed as REST services.
OpenRules uses an automated vulnerability check that utilizes the NVD, the U.S. government repository. So, as usual with all OpenRules release, we updated several 3rd party packages – you may find the latest list of dependencies here.