🚀 This release includes:
- ✨ Enhanced support for Spring Boot Fat Jars
- ➕ Additional logging in RuleAdapter
- 🛠 Fix for mapping facts to instance variables in POJO rules when NameValueReferableMap key is different than NameValueReferable name
- Corrections to the README
👻 Null facts used in the invocation of a rule caused an exception. This patch allows null facts to be used without throwing an exception.
- ➕ Added Rules Auditing
- ⚡️ Updated DSL to include support for Rules Auditing
- ➕ Added Rules Auditing for POJO Rules
- 🛠 Fixed POJO Results - previously getResults() on RuleBookRunner always returned Optional true; now it only returns Optional true if a Result was set
- 🛠 Fixed Spring Boot Bug - when POJO Rules were packaged in a Spring Boot uber jar, RuleBookRunner would fail to scan rules in a package; this has been corrected
- 0️⃣ RuleBooks using the RuleBookBuilder now must specify a default result immediately affter a result type is specified
- A Rule can break the rule chain when a rule fails if RuleChainActionType.STOP_ON_FAILURE is specified when the Rule is created
- 0️⃣ Errors are no longer logged when a default result is not specified for a RuleBookRunner
- RuleBooks are made thread safe for POJO and DSL created RuleBooks
- RuleBooks can now be safely used as singletons with Spring
- RuleBook results are now unique per thread
- 🛠 Result reads are now chained on POJO Rules - fixes Megabank example
- Conditions omitted from POJO rules now cause actions to always fire (instead of never fire)
🖨 NameValueTypeConvertible is used in the lambda when() and then() functions. Previously, it was decorating the FactMap, but not delegating to its toString method. This meant when filtering facts via the using() method and using the System.out::println function reference, the String value of the fact was not being outputted (e.g. in the Home Loan example in the README).
The bug was corrected by having NameValueTypeConvertible delegate its toString method to the map it decorates.
- ➕ added BigDecimal to NameValueTypeConvertibleMap
- ➕ added Boolean to NameValueTypeConvertibleMap
Now when() and then() methods in the DSL will be able to convert facts of an unspecified type easily to BigDecimal or Boolean types using the methods getBigDeciVal() and getBoolVal, respectively.