...
Associated JBoss community project: EAT
Drools - Executable Model Compiler 2.0
Summary of the idea:
Drools is a business rules management system that allows developers and business analysts to write business rules in an easy way and to evaluate such rules in the fastest way possible. With the “executable model” we provided a Java DSL to write such rules in a typesafe way, leveraging the javac compilation to get fast startup time while instantiating the engine. The original DRL (Drools Rules Syntax) language is supported: we provide a compiler to compile the DRL to Java Code.
The original executable model compiler needs some improvement: the idea is to generate the executable model code in the fastest way possible.
We targeted correctness rather than speed in 1.0, and by rewriting the type checker and leveraging a multi phase approach we could theoretically support parallel compilation. We also have some known performance issues in lambda externalisation - as it’s implemented as a post processing phase it adds extra time to the compilation. We’d love to have a performance oriented approach, in which we measure the build time from the start so that it should be easier to track the wanted speed. Correctness is guaranteed by the current test suite that should be supported 100%. We should avoid JavaParser AST generation in the processing phase, as its AST is not optimized for sharing and cloning it’s an expensive operation.
Project references:
http://blog.athico.com/2018/02/the-drools-executable-model-is-alive.html
Knowledge Prerequisite:
- The Java Programming Language
- Basic understanding of Pattern Matching
- Basic understanding of Rule Engine
Skill Level: Intermediate
Contact: Luca Molteni (lmolteni@redhat.com)
GitHub:
https://github.com/kiegroup/drools