How to compile spreadsheet decision table into compiled rules(aka executable rule model)

Rule executeable model is fast to load and running because it has pre-comipled into java bytecode before running.

This project is original generated by exporting a project in business-central.

You have to add the following to enable rules compiled into byte code since by default exporting project from Business central, there is no drools-model-comiler included:

    <!--This is required for compile execution model-->
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-model-compiler</artifactId>
      <version>7.39.0.Final-redhat-00005</version>
    </dependency>  

Run

cd rules
mvn clean install -DskipTests
#You would notice that there 10000 java/class file was generated by kie-maven-plugin

# The rule package is spreadsheet-decisiontable-1.0-SNAPSHOT.jar
cd ../myapp
mvn clean package -DskipTests 
Initialize Kie Session elapsed time: 1826 
fired rules: 1 elapsed time: 167 
Is Object Pass:false

You can also try the following to check the generated java byte code

unzip -jar target/spreadsheet-decisiontable-1.0-SNAPSHOT.jar 

Try 100k rows decision table

By default, I disable 100kTable.xls since it takes above 10mins to compile;

Rename rules/src/main/resources/com/myspace/spreadsheet_decisiontable/ 10kTable.xls ->10kTable.xls.deactive 100kTable.xls.deactive->100kTable.xls

cd rules
mvn clean install -DskipTests
#It took me 16 mins in my lapto to compile, there are 100k java files generated

# The rule package is spreadsheet-decisiontable-1.0-SNAPSHOT.jar
cd ../myapp
mvn clean package -DskipTests 
Initialize Kie Session elapsed time: 21885 
fired rules: 1 elapsed time: 8603 
Is Object Pass:false

Summary

Precompile decision table rules improve the performance;

For 10K rules, fire one rule cost ~150 millseconds time;
For 100k rules, fire one rule costs about 8000+ millseconds time;

The compilation takes very long time due to large amounts of java code being generated;
for 10k rules, Pre-Compilation takes 1.5 minutes
For 100k rules, it takes around 15+ minutes to compile;
(Maven parallel compilation doesn't work due to kie-maven-plugin is not thread safe;)