我正在使用一个系统,其中插入 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 在加载规则时静态类型检查规则,不允许这种使用,因为不能保证拥有所有者/费率/学生字段等等。
有没有办法做到这一点,可能是某种类型转换或绕过类型检查?
(注意:不幸的是,目前还不能选择更改要键入的模型,而不是将所有内容都放入对象中。)