美文网首页
5.规则模板

5.规则模板

作者: 元代码 | 来源:发表于2018-06-20 12:15 被阅读0次

    当多个规则文件的代码相同,但是需要根据不同的参数,输出不同的结果时可以选择使用规则模板,避免了写多个相似的drl文件。
    1.maven依赖

    <!-- 模板 -->
    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-templates</artifactId>
    </dependency>
    

    2.定义模板文件Cheese.drt

    template header
    age
    type
    log
    
    package org.drools.examples.templates;
    
    global java.util.List list;
    
    template "cheesefans"
    
    rule "Cheese fans_@{row.rowNumber}"
        when
            Person(age == @{age})
            Cheese(type == "@{type}")
        then
            list.add("@{log}");
    end
    end template
    

    3.创建ExampleCheese.xls



    4.kmodule.xml使用模板及数据表

    <kbase name="TemplatesKB" packages="org.drools.examples.templates">
    
    <ruleTemplate dtable="org/drools/examples/templates/ExampleCheese.xls"
    
    template="org/drools/examples/templates/Cheese.drt"
    
    row="2" col="2"/>
    
    <ksession name="TemplatesKS"/>
    
    </kbase>
    

    5.使用

    KieContainer kc = KieServices.Factory.get().getKieClasspathContainer();
    
    KieSession ksession = kc.newKieSession("TemplatesKS");
    
    ksession.insert(new Cheese("stilton", 42));
    
    ksession.insert(new Person("michael", "stilton", 42));
    
    final List<String> list = new ArrayList<String>();
    
    ksession.setGlobal("list", list);
    
    ksession.fireAllRules();
    
    System.out.println(list);
    
    ksession.dispose();
    

    参考:

    https://github.com/kiegroup/drools/tree/master/drools-examples/src/main/resources/org/drools/examples/templates

    相关文章

      网友评论

          本文标题:5.规则模板

          本文链接:https://www.haomeiwen.com/subject/cjotyftx.html