见下文我已尝试过以下页面中的示例。每件事都运行正常,但我没有应用规则,并且生成的状态适用于此规则。
示例代码的位置: http://dilipsarangi.blogspot.co.uk/2015/09/drools-610-dynamic-rules-in-database.html
我能够将表中的数据加载到测试用例中。
但是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
答案 0 :(得分:0)
修改status属性后,您需要更新每个规则中的$ person对象:
update($person);
如果不这样做,对象的任何更改都不会在工作内存中设置。
虽然上述方法有效,但您最好使用modify关键字:
modify($person) {$person.setStatus=":" + "Infant"};
每个规则都类似。在这种情况下,不需要update关键字。
有一些功能,例如属性反应bean,无法使用更新,因此最好将修改作为最佳实践。