假设我有一个包含成员数据MyObject
和someValue
的对象类型otherValue
,我按如下方式插入两个逻辑规则:
Rule "Checks Some Value"
when
$myO : MyObject( someValue == Constants.someValueChecker )
then
insertLogical(new SomeValueChecked($myO));
end
Rule "Checks Other Value"
when
$myO : MyObject( otherValue == Constants.otherValueChecker )
then
insertLogical(new OtherValueChecked($myO));
end
我的问题是,有没有办法验证这些规则是否针对同一个MyObject实例触发了?另外,在给定MyObject的特定实例的情况下,有没有办法知道这些规则是否已经为它启动了?
答案 0 :(得分:1)
验证是否已为同一对象检查“some”和“other”值(并假设MyObject
的引用保留在成员myObject
中):
rule "some and other value"
when
SomeValueChecked( $obj: myObject )
OtherValueChecked( myObject == $obj )
then
...
end
并检查两者是否都针对特定MyObject
实例:
rule "some and other checked for green"
when
$obj: MyObject( color == Colour.GREEN ) // or some other property
SomeValueChecked( myObject == $obj )
OtherValueChecked( myObject == $obj )
then
...
end
显然,单独检查“某些”或“其他”需要什么。