【发布时间】:2014-07-21 13:24:16
【问题描述】:
如果我有一个查询(比如$invar 和$outvar),我可以很容易地在Java 中获得$outvar 的列表。有没有办法在规则中收集这些?我可以稍后通过引用$outvar 单独获得结果,但如果可能的话,我想使用收集、累积或来自。
谢谢
(编辑:展开)
查询 $subject 是一个未绑定的变量(按照惯例)
query findDatumsParent( Datum $subject, Datum $parent )
DatumLink( $parent, $subject; )
or
( and
DatumLink( $parent, $narrower; )
?findDatumsParent( $subject, $narrower; )
)
end
// and for completeness
declare DatumLink broader: Datum @key narrower: Datum @key end
这可以简单地用在规则中
rule blah
when
$item: Datum( "name"; )
findDatumsParent( $out, $name; )
then
System.out.println("found %s", $out);
end
但我想要类似的东西
rule blah
when
$item: Datum( "name"; )
accumulate( findDatumsParent( $out, $name; ); $set: collectSet($out) )
then
System.out.println("found %d items", $out.size());
end
getQueryResults 可以让我在 Java 中设置一个 Collection(带有一点包装),然后我可以操作集合中的元素并计算它们。
但是有什么方法可以处理查询在 Drools 中建立的绑定?
【问题讨论】:
-
这非常不清楚,尤其是没有查询文本和关于您希望如何、何时、何地获得什么的描述(用 Java 表示)。
标签: drools