通知规则引擎对象更改
您可以将新对象的可用性通知规则引擎,也可以在更新或收回对象时通知规则引擎。
关于本任务
对象更改的通知取决于执行方式:
- 当规则引擎以 RetePlus 方式运行时,它会立即重新计算匹配的规则并重新调度内部议程。
- 当规则引擎以顺序或快速路径方式运行时,当您输入新的规则任务时,它将使用对象的新状态。
过程
结果
以下代码提供了用于通知规则引擎对象更改的全局模式:
insert object;
insert ClassName(<constructor_arguments>)
[{statement1; ... statement}] ;
update object;
retract object;
示例
在此示例的 then 操作部分中,将通知 RetePlus 算法新对象 penalty 可用,并且 account 对象不再可用。 因此,可以对惩罚对象运行规则,但不再对帐户对象运行规则。 在 else 操作部分中,将通知 RetePlus 算法必须重新评估依赖于 account 对象的规则。 因此,这些规则中的某些规则将停止运行,而其他规则将开始运行。
rule financial.rules.CheckBalance {
when {
account: Account();
evaluate (account.getBalance() < 0 );
}
then { // compute a penalty
Penalty penalty = new Penalty(account);
insert penalty;
retract account;
}
else { // compute a bonus
account.computeBonus();
update account;
}
};