我有类似以下的规则。我需要将匹配器返回的值分配给其他地方使用的处理程序。我怎样才能做到这一点?谢谢。
package a.b.c
import java.util.List;
import a.b.Matcher;
import a.b.Container;
import a.b.TestObject1;
import a.b.TestObject2;
global Matcher myMatcher;
global Container container;
when
$x1: TestObject1(
$x1_1 : id, (id in ("11", "16", "140"))
)
$x2: TestObject2(
$x2_2: id, myMatcher.match(id, container.getContainer(100)) != null
)
then
//print.
end
答案 0 :(得分:0)
AFAIK没有直接的方法可以做到这一点。 2个选项是:
创建一个不同的规则来计算所有TestObject2事实的match()值:
rule 'Calculate match value'
$t: TestObject2()
when
TestObject2Match m = new TestObject2Match($t); // -> you must define this class
m.setMatchValue(myMatcher.match($t.getId(), container.getContainer(100)));
insertLogical(m);
then
现在,您之前拥有的规则必须按以下方式重写:
rule '...'
$x1: TestObject1(
$x1_1 : id, (id in ("11", "16", "140"))
)
$m: TestObject2Match(matchValue != null)
when
//print $m.getMatchValue()
then
希望它有所帮助,