Drools 似乎只支持与时间运算符一起使用的时间单位的天、小时、分钟、秒和毫秒。我正在制定一个寻找特定年龄段人群的规则。例如:6个月至5岁、18岁以下、12岁以上等。
我的 person 类有一个 dateOfBirth 实例变量,但没有 person.age 方法可以进行直接比较,例如:
$p : Person(age <= 18)
我没有太多的自由来修改 Person 类,我试图避免编写 utils 方法并使用“eval”进行比较,因为“evals”没有优化。我是一个流口水的新手,并写了以下规则。
rule "Under18Years"
when
now : RuleTime()
$p : Person(dateOfBirth after[-6570d, 0s] $now )
then
System.out.println("Under18Years fired");
end
我知道这不是很准确,因为我只使用了 6570 (365*18) 天;忽略闰年。我最好在标准 SI 年 (31,556,926) 乘以 18 中使用秒来计算 18 年,但有更好的方法吗?这也不适用于涉及数月的条件。有没有人对这个问题有任何其他想法/解决方案?