Release Notes 5.3.1
OpenRules Release 5.3.1 is a minor but important release that improves OpenRules's effectiveness in multi-threaded environments. While previous versions were thread-safe, the actual executions of the same instance of the OpenRulesEngine in different threads were fast but still one in a time. Starting with the release 5.3.1 OpenRules supports real parallelism even when you run one instance of the rule engine in different threads.
This release takes an advantage from the fact that contrary to many other rule engines OpenRules' rule engine is stateless. It allows a user to create only one instance of the class OpenRulesEngine and to share this instance between different threads - there are no needs to create a pool of rule engines. A user may also initialize the engine with application data common for all threads, and attach this data directly to the engine using the methods setAttachment(Object attachment). Different threads will receive this instance of the rule engine as a parameter, and will safely run various rules in parallel using the same engine.
OpenRules 5.3.1 includes a new example "HelloFromThreads" that demonstrates how to organize a parallel execution of the same OpenRulesEngine's instance in different threads and how to measure their performance. The initial tests executed by OpenRules customers using their real-world applications demonstrate an essential gain in performance with impressive scalability metrics.
This release also fixes two bugs:
1) An old implementation restriction that did not respect a validation order in Java snippets has been removed: now the expression such as "customer != null && customer.age > 16" would not lead to an exception if the object customer is really null;
2) Excel cells that were incorrectly interpreted by the latest version of the POI as invalid Excel formulas now will be automatically fixed by OpenRules.
You may download the latest OpenRules release from www.openrules.com/support.htm.