drools规则引擎源码解析
drools規(guī)則引擎源碼解析
文章目錄
- drools規(guī)則引擎源碼解析
- 一、規(guī)則編譯
一、規(guī)則編譯
org.drools.compiler.kie.builder.impl.KieBuilderImpl#buildAll(java.util.function.BiFunction<org.drools.compiler.kie.builder.impl.InternalKieModule,java.lang.ClassLoader,org.drools.compiler.kie.builder.impl.KieModuleKieProject>, java.util.function.Predicate<java.lang.String>)
=>
org.drools.compiler.kie.builder.impl.AbstractKieProject#buildKnowledgePackages(org.drools.compiler.kproject.models.KieBaseModelImpl, org.drools.compiler.kie.builder.impl.ResultsImpl, java.util.function.Predicate<java.lang.String>)
=>
org.drools.compiler.kie.builder.impl.KieBuilderImpl#buildKieProject(org.drools.compiler.kie.builder.impl.ResultsImpl, org.drools.compiler.kie.builder.impl.KieModuleKieProject, org.drools.compiler.compiler.io.memory.MemoryFileSystem)
=>
org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl#build(boolean) 編譯
org.drools.compiler.builder.impl.KnowledgeBuilderImpl#buildRules 編譯規(guī)則集
=>
org.drools.compiler.builder.impl.KnowledgeBuilderImpl#compileKnowledgePackages 編譯規(guī)則包(重點)
=>
org.drools.compiler.builder.impl.KnowledgeBuilderImpl#compileFunctions 編譯function(此處dialect一定為java)
=>
org.drools.mvel.java.JavaDialect#addFunction 增加function (此處使用JavaCompiler源碼編譯工具類,因此依賴java源碼或class字節(jié)碼)
org.drools.mvel.java.JavaDialect#addFunction 編譯function
- function編譯舉例
編譯結(jié)果
package com.example.demo;import com.example.demo.*;import com.example.drools.Person;public class Hello implements java.io.Externalizable {private static final long serialVersionUID = 510l;public static String hello(String applicantName) throws Exception {return "Hello " + applicantName + "!";} public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {}public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {} }未完待續(xù)……
總結(jié)
以上是生活随笔為你收集整理的drools规则引擎源码解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 博文视点 OpenParty第11期:世
- 下一篇: ios 在UIView上画图,线条