我尝试使用事实在类似于动态设置date-effective
的规则中设置date-expires
和salience
的值,但不断收到解析器错误。这些属性是在规则解析时固定还是可以动态设置?
我找不到任何进一步的提示,所以我只想检查是否有人知道这是否可行?
这对我的动态显着起作用:
rule "my rule XYZ"
salience $priority
when
// condition facts
$rrd : RuleRuntimeData(ruleCode == "xyz", $priority : priority)
...
这样的事情可能吗?如果是这样,语法是什么?
rule "my rule XYZ"
date-expires $dateExpires
date-effective $dateEffective
salience $priority
when
$rrd : RuleRuntimeData(ruleCode == "xyz", $priority : priority, $dateExpires : endDate, $dateEffective : startDate)
...
(如果是必须在规则解析时修复的值,我可能必须使用日期事实或agendafilter而不是date-effective
和date-expires
属性。
答案 0 :(得分:2)
可能是动态设置这些值会有一些用例。但是,定义规则应该从他们即将评估的数据中解雇的时间的想法令人难以置信。必须至少部分地进行规则评估,以获得具有日期有效日期/时间的事实T.如果时间尚未到来,它可能会失败。但是想象另一个规则,其中另一个事实X必须在评估之前到达事实T带有日期/时间的日期有效。如果X超过T中给出的时间,则T的评估将日期/时间设置为过去的时间并且评估继续进行。总之:LHS评估的技术细节将影响规则是成功还是失败。
请注意,动态显着性完全不同:它仅在成功评估后将触发优先级设置为事后补充。
议程过滤器听起来是一种非常合理的方式来定义规则激活的时间窗口。
我对“约会事实”不太确定,但谁知道 - 我没有看到你的想法。