gpt4 book ai didi

java - 在这种情况下如何在drools中使用collect()

转载 作者:行者123 更新时间:2023-12-01 12:14:24 24 4
gpt4 key购买 nike

我正在尝试执行如下操作来收集满足某些条件的特定类型的对象。

rule "collect_other"
$lineItem2 : A( $iVal : iValue, $qd2 : quantity)
B($bVal : bId)
$rowLowerOther : C(iValue == $iVal, bId == $bVal,
$lsequence : sequence, $jValue : jAvlDate)
$rowHigherOther : List()
from collect(C(iValue == $iVal, bId == $bVal,
sequence == $lsequence-1, jAvlDate != $jValue))

then
//do something
end

现在我只得到一个对象,即使我有许多对象满足条件。

注意:我想通过从“C”的第一个对象实例中获取值来收集满足条件的所有项目

请帮助我。

最佳答案

C 类的对象是:

C(101, "BU1", 1,"2014-11-23");
C(101, "BU1", 2,"2014-11-24");
C(101, "BU1", 3,"2014-11-25");
C(101, "BU1", 4,"2014-11-26")

假设我们有

A(101,...)
B("BU1")

然后是模式

C(iValue == $iVal, bId == $bVal,$lsequence : sequence,...)

匹配任何这些 C 对象,将 $lsequence 绑定(bind)到 1、2、3 等。对于第一个绑定(bind),规则不会触发,因为没有 C 事实与序列 == 1-1 匹配

对于每个值 2、3、4 等,规则将精确匹配 C 事实并将其收集到列表中,即分别具有 seuqnce == 1、2、3... 的事实。

也许这符合你的要求 - 但我只是猜测。

rule "collect_other"
when
$lineItem2: A( $iVal: iValue, $qd2 : quantity )
B( $bVal : bId )
$rowLowerOther: C(iValue == $iVal, bId == $bVal,
$lsequence : sequence, $jValue: jAvlDate)
not C( iValue == $iVal, bId == $bVal, sequence < $lsequence )
$rowHigherOther : List()
from collect(C(iValue == $iVal, bId == $bVal, jAvlDate != $jValue))
then
//...
end

关于java - 在这种情况下如何在drools中使用collect(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27102897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com