Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Drools使用规则模板从数据库(drl文件)生成动态规则文件_Java_Drools - Fatal编程技术网

Java Drools使用规则模板从数据库(drl文件)生成动态规则文件

Java Drools使用规则模板从数据库(drl文件)生成动态规则文件,java,drools,Java,Drools,见下文,我已经尝试了下面页面中的示例。每件事都很好,但我没有得到应用的规则,并由此规则生成适用的状态 样本代码的位置: 我能够将表中的数据加载到测试用例中。 但是当System.out.println(aa.getName()+,“+aa.getStatus()) aa.getstatus为空 动态生成的规则 package org.drools.template.jdbc; dialect "mvel" rule "ageRule_7" when $person :

见下文,我已经尝试了下面页面中的示例。每件事都很好,但我没有得到应用的规则,并由此规则生成适用的状态

样本代码的位置:

我能够将表中的数据加载到测试用例中。 但是当
System.out.println(aa.getName()+,“+aa.getStatus())

aa.getstatus
为空

动态生成的规则

package org.drools.template.jdbc;
dialect "mvel"

rule "ageRule_7"
    when
        $person : Person(age>=81 && age<100)
    then
     $person.status=":" + "Old Aged";
end

rule "ageRule_6"
    when
        $person : Person(age>=61 && age<81)
    then
     $person.status=":" + "Senior Citizen";
end

rule "ageRule_5"
    when
        $person : Person(age>=41 && age<61)
    then
     $person.status=":" + "Middle Aged";
end

rule "ageRule_4"
    when
        $person : Person(age>=18 && age<41)
    then
     $person.status=":" + "Youth";
end

rule "ageRule_3"
    when
        $person : Person(age>=13 && age<18)
    then
     $person.status=":" + "Juvenile";
end

rule "ageRule_2"
    when
        $person : Person(age>=6 && age<13)
    then
     $person.status=":" + "Young Age";
end

rule "ageRule_1"
    when
        $person : Person(age>=2 && age<6)
    then
     $person.status=":" + "Baby";
end

rule "ageRule_0"
    when
        $person : Person(age>=0 && age<2)
    then
     $person.status=":" + "Infant";
end
package org.drools.template.jdbc;
方言“mvel”
规则“第7条”
什么时候

$person:person(年龄>=81&&age=61&&age=41&&age=18&&age=13&&age=6&&age=2&&age=0&&age修改status属性后,需要更新每个规则中的$person对象:

update($person);
如果不这样做,对对象的任何更改都不会设置在工作内存中

尽管上述方法有效,但最好改用modify关键字:

modify($person) {$person.setStatus=":" + "Infant"};
对于每个规则都类似。在这种情况下,不需要update关键字


有一些功能,例如无法使用更新的属性被动bean,因此最好使用修改作为最佳实践。

我使用的是6.4.0 final。我发布的规则是使用drt文件生成的规则。实际的drt模板“我尝试使用以下更改更改模板,但实际上不起作用。请参见li中的示例nk提供实际的drl文件'then//$person.status=“:“+”@{status}”;modify($person){$person.status=“:“+”@{status}”;}'对不起,将分号移到{}括号之外。我已经更新了答案。@JavaEvangelist使用
setX()也是一种很好的做法
方法,而不是访问字段。@Neil Belch,我使用的是Drools 6.1.0修改($person){$person.status=“:“+”baby“};我的项目在git hub@Neil Belch,我使用的是depreact方法,这是问题的原因吗