This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
```va.lang.RuntimeException: Unable to load dialect 'org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration' | |
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.addDialect(KnowledgeBuilderConfigurationImpl.java:405) | |
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.buildDialectConfigurationMap(KnowledgeBuilderConfigurationImpl.java:391) | |
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.init(KnowledgeBuilderConfigurationImpl.java:239) | |
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.init(KnowledgeBuilderConfigurationImpl.java:191) | |
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.<init>(KnowledgeBuilderConfigurationImpl.java:159) | |
at org.drools.compiler.kie.builder.impl.AbstractKieProject.getBuilderConfiguration(AbstractKieProject.java:302) | |
at org.drools.modelcompiler.builder.CanonicalModelKieProject.createKnowledgeB |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Main where | |
main = return () | |
{-- | |
func 2 3 | |
=> False | |
func 3 3 | |
=> False |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
did you give a try to my fix to index generation? Any feedback? | |
On my side I have very good news for what regards the load time of the kjar generated with the executable model. As I wrote in my former email we are doing our experiments with a reduced version of your original reproducer with only 1 package and 10K rules. As anticipated, before the optimization work that we're doing loading that kjar from plain drl (without the executable model) took 10 seconds while using the executable model required 14 seconds. | |
The first experiment that I've done has been parallelizing (for large rule sets as this) how the executable model classes are loaded. This lowered the original 14 seconds to around 6.5 on my laptop and I expect even better improvements on a more beefed hardware. | |
However what has been a real game changer is the other improvement suggested by Luca and on which he worked in the last days. What he did was rewriting how the lambdas used in the executable model are generated. Now instead of being inlined |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Index: drools-model/drools-model-compiler/src/test/java/org/drools/modelcompiler/CompilerTest.java | |
IDEA additional info: | |
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP | |
<+>UTF-8 | |
=================================================================== | |
--- drools-model/drools-model-compiler/src/test/java/org/drools/modelcompiler/CompilerTest.java (revision c9b7e7a653ce77afaaea4bc0c202ac4ce1e2987b) | |
+++ drools-model/drools-model-compiler/src/test/java/org/drools/modelcompiler/CompilerTest.java (date 1580908907820) | |
@@ -2001,4 +2001,23 @@ | |
assertEquals( 1, ksession.fireAllRules() ); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DRL | |
=================== | |
[EntryPointNode(1) EntryPoint::DEFAULT ] | |
[ObjectTypeNode(4)::EntryPoint::DEFAULT objectType=[ClassObjectType event=org.drools.modelcompiler.domain.StockTick] expiration=-1ms ] | |
[AlphaNode(5) constraint=isSetDueDate == true] | |
[ AccumulateNode(6) ] | |
[RuleTerminalNode(7): rule=AccumulateMaxDate] | |
[ObjectTypeNode(2)::EntryPoint::DEFAULT objectType=[ClassObjectType class=org.drools.core.reteoo.InitialFactImpl] expiration=-1ms ] | |
[LeftInputAdapterNode(3)] | |
[ AccumulateNode(6) ] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.drools.modelcompiler.builder.generator.visitor.accumulate; | |
import java.util.List; | |
import java.util.Optional; | |
import com.github.javaparser.StaticJavaParser; | |
import com.github.javaparser.ast.Node; | |
import com.github.javaparser.ast.expr.Expression; | |
import com.github.javaparser.ast.expr.MethodCallExpr; | |
import com.github.javaparser.printer.PrettyPrinter; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
org.drools.model.Rule rule = D.rule("org.acme.test_generateModel_kjararchetype", | |
"will execute per each Measurement having ID color").attribute(Rule.Attribute.NO_LOOP, | |
true) | |
.build(D.pattern(var_GENERATED_$pattern_Measurement$1$).expr("819AEEBB391F281267C56FEF6FFF8D0E", | |
org.acme.test_generateModel_kjararchetype.LambdaPredicate8A083A1BFD61A2FB8590738F7DC4ADC3.INSTANCE, | |
D.alphaIndexedBy(java.lang.String.class, | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.optaweb.employeerostering.service.solver | |
import org.optaweb.employeerostering.domain.employee.EmployeeAvailabilityState | |
import org.optaplanner.core.api.score.buildin.hardmediumsoftlong.HardMediumSoftLongScoreHolder | |
import java.time.Duration | |
import org.optaweb.employeerostering.domain.skill.Skill | |
import org.optaweb.employeerostering.domain.spot.Spot | |
import org.optaweb.employeerostering.domain.common.DateTimeUtils | |
import java.time.temporal.IsoFields | |
import org.optaweb.employeerostering.domain.roster.Roster |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[INFO] Reactor Summary: | |
[INFO] | |
[INFO] Drools and jBPM integration multiproject ........... SUCCESS [ 13.273 s] | |
[INFO] KIE :: Swagger UI .................................. SUCCESS [ 2.052 s] | |
[INFO] KIE Identity And Session Provider .................. SUCCESS [ 25.875 s] | |
[INFO] OptaPlanner Workbench models ....................... SUCCESS [ 0.258 s] | |
[INFO] Drools data model API implementations for OptaPlanner Workbench SUCCESS [ 19.404 s] | |
[INFO] KIE :: Maven Plugin ................................ SUCCESS [ 43.942 s] | |
[INFO] KIE :: Takari Plugin ............................... SUCCESS [ 55.129 s] | |
[INFO] Drools Benchmark ................................... SUCCESS [ 18.497 s] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Index: drools-model/drools-model-compiler/src/main/java/org/drools/modelcompiler/util/lambdareplace/ExecModelLambdaPostProcessor.java | |
IDEA additional info: | |
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP | |
<+>UTF-8 | |
=================================================================== | |
--- drools-model/drools-model-compiler/src/main/java/org/drools/modelcompiler/util/lambdareplace/ExecModelLambdaPostProcessor.java (revision ef99c4aa364699c1c17ffa5468ee9f57ab241177) | |
+++ drools-model/drools-model-compiler/src/main/java/org/drools/modelcompiler/util/lambdareplace/ExecModelLambdaPostProcessor.java (revision 353b46ed16a0d7dd0a988a0293eafb5ed1cc9011) | |
@@ -29,6 +29,7 @@ | |
import com.github.javaparser.ast.CompilationUnit; | |
import com.github.javaparser.ast.body.MethodDeclaration; |