我正在使用一个系统,其中插入 Drools 引擎的一些数据遵循以下(严重过度简化)格式:
public class Item {
public String getValueType() { ... }
public Object getValue() { ... }
}
这些值可能有几种不同的类型。现在,我想创建一堆 Drools 规则来检查值的各个字段,大致如下:
$a : Item(valueType == "Car", value.owner.location == "At Home")
$b : Item(valueType == "Payments", value.rates.discounts.percent == 1337)
$c : Item(valueType == "Royalty", value.student.occupation == "Librarian")
...等等。现在,我面临的问题是 Drools 在加载规则时静态类型检查规则,不允许这种使用,因为对象不能保证具有所有者/费率/学生字段等。
有没有办法做到这一点,可能是某种类型转换或绕过类型检查?
(注意:不幸的是,目前还不能选择更改要输入的模型而不是将所有内容都推入对象中。)
从 Drools 5.5.0 开始,您可以“投射”事实的属性。请阅读本文档第 4.1.1.2 节:http://docs.jboss.org/drools/release/5.5.0.Final/droolsjbpm-introduction-docs/html_single/ http://docs.jboss.org/drools/release/5.5.0.Final/droolsjbpm-introduction-docs/html_single/
基本上,您需要做的是:
$a : Item(valueType == "Car", value#Car.owner.location == "At Home")
免责声明:我以前从未尝试过这个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)