Would like some advice regarding using Decision Tables in DROOLS 5.6.0 Final. We have decision tables with over 12,000 rows. It is a basic ‘look-up’ table with 3 conditions and 2 actions. The conditions are, for example: Company = X Dept = X Class = X then value = X and log X. When I reduced the number of rows to approx. 500 . .. it works.
I have set the max memory in the JVM to 2 gigs. We have tried compiling the decision tables using the spreadsheet compiler as well as the decision table compiler.
Below is the error when using the decision table compiler. However, we get the same PermGen space error with the spreadsheet compiler.
Obviously, we need to be able to have more than 500 rows in our decision table(s). Any advice would be appreciated.
Aug 14, 2014 6:33:09 PM com.macys.test.rules.engine.AttribDecisionTbl main
INFO: found file:c:\attribute-data.xls
Aug 14, 2014 6:33:10 PM com.macys.test.test_drools.RuleRunner loadRules
INFO: Loading file: log-rules.drl
Aug 14, 2014 6:33:10 PM com.macys.test.test_drools.RuleRunner loadRuleFile
INFO: found rule file:log-rules.drl
Aug 14, 2014 6:33:11 PM com.macys.test.test_drools.RuleRunner loadRules
INFO: Loading file: AttributeRules-MDSLife-V1.xls
Aug 14, 2014 6:33:11 PM com.macys.test.test_drools.RuleRunner loadExcelRules
INFO: found file:AttributeRules-MDSLife-V1.xls
Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at org.drools.rule.JavaDialectRuntimeData$PackageClassLoader.fastFindClass(JavaDialectRuntimeData.java:624)
at org.drools.util.CompositeClassLoader$CachingLoader.load(CompositeClassLoader.java:254)
at org.drools.util.CompositeClassLoader$CachingLoader.load(CompositeClassLoader.java:237)
at org.drools.util.CompositeClassLoader.loadClass(CompositeClassLoader.java:88)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.drools.rule.JavaDialectRuntimeData.wire(JavaDialectRuntimeData.java:434)
at org.drools.rule.JavaDialectRuntimeData.wire(JavaDialectRuntimeData.java:429)
at org.drools.rule.JavaDialectRuntimeData.onBeforeExecute(JavaDialectRuntimeData.java:257)
at org.drools.rule.DialectRuntimeRegistry.onBeforeExecute(DialectRuntimeRegistry.java:139)
at org.drools.compiler.PackageBuilder.reloadAll(PackageBuilder.java:1202)
at org.drools.compiler.PackageBuilder.compileAllRules(PackageBuilder.java:951)
at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:938)
at org.drools.compiler.PackageBuilder.addPackageFromDecisionTable(PackageBuilder.java:451)
at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:715)
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:51)
at com.macys.test.test_drools.RuleRunner.loadExcelRules(RuleRunner.java:161)
at com.macys.test.test_drools.RuleRunner.loadRules(RuleRunner.java:53)
at com.macys.test.test_drools.RuleRunner.runStatelessRules(RuleRunner.java:217)
at com.macys.test.rules.engine.AttribDecisionTbl.main(AttribDecisionTbl.java:99)