简化我的用例。我正在测量温度点 t1-t4 的值。 用户可以为要触发的规则指定不同的条件和值。例如
t1+ ( 2* t2) LESS-THAN 100 or t3 EQUAL 5.
因此条件和比较器是动态的,比较值和测量值也将是动态的。 这是 Drools 或任何其他规则引擎的候选者吗? 在我看来,Drools 是一个面向模板的规则引擎,因此可以做到
rule "engine_is_hot"
no-loop
when
$t1 : Temp( id =="1", $v1 : value)
$t2 : Temp( id =="2", $v2 : value)
eval ( $v1>=50 || $v1 + $v2<=100)
then
System.out.println( $t1.getId()+""+$t2.getId());
end
因此可以动态生成规则,我的意思是,逻辑比较器、比较值和当前值是动态的。我尝试使用 PackageDescr ,它不灵活;我无法指定我想要一个 < 或 >= 逻辑比较器。
最佳答案
您尝试过 PackageDecrBuilder API 吗?
https://github.com/droolsjbpm/drools/tree/master/drools-compiler/src/main/java/org/drools/lang/api
示例:
关于java - Drools 中的非模板动态规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485122/