Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: new GSOC entry for Drools

...

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

https://docs.jboss.org/drools/release/7.48.0.Final/drools-docs/html_single/index.html#executable-model-con_packaging-deploying

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

https://github.com/kiegroup

Associated JBoss community project(s): https://drools.org