At its core, the library allows you to pass input data as key-value pairs and evaluate it against rules defined sequentially in either JSON or Excel-based decision table definitions. It supports both first match and all matches policies with strict or lenient validation modes. It can invoke external Java methods as part of rule evaluation or return values and even embed JEXL expressions to manage more complex rules.
The library allows decision tables to be defined as JSON or Excel files. While JSON based tables are recommended for production (since they can be versioned and tracked), they are not friendly to visualize and update. Accordingly, the library provides methods to convert from JSON to Excel and vice versa so that it becomes easy to visualize and make changes.
Developers can further extend functionality by invoking Java methods or embedding JEXL scripts directly within rule definitions. The library also supports analytics by generating events whenever rules are loaded or matches are fired.
We have used this library internally in American Express with great success and we hope the same for the community. It would be great to discuss and get feedback on the library. Thanks!