【发布时间】:2018-01-09 20:45:39
【问题描述】:
我需要有关以下规则的帮助:
连续多次存款的账户,并在 4 小时后立即多次提取,其总和等于使用不同 ATM 在同一家银行存入的相同金额。 (最后一次存款和第一次提取之间没有中间操作)
我有 Operation 类:Account, Amount, Operation, ATM, Timestamp。
我有这个规则:
declare Operation
@role(event)
@timestamp(Timestamp)
end
rule
when
$op1:Operation($acc:Account,$b:Bank,$amount:Amount,Operation=="CREDIT",$atm:ATM)
not Operation(Account == $acc,ATM != $atm, Bank == $b, this before $op1) accumulate($op2:Operation(Account == $acc,ATM != $atm, Bank == $b,Operation=="CREDIT",$amount1:Amount);$c:count($op2),$d:sum($amount1);$c>=4,$d>=300)
then
System.out.println( "Account: " + $acc + " amount " + ($amount + $d) + " operations " + $c+ " in different banks");
end
前面的规则返回在同一家银行的不同ATM上进行4次以上操作的账户的存款总和,我的疑问是如何考虑它们是连续的,并且在4小时后比较前一个与从该帐户提取的总和相加。
【问题讨论】:
-
到目前为止你尝试了什么? - 或者:我在哪里可以找到你的招标?
-
不要在 cmets 中发布代码,这很难读。 - 您可以编辑您的问题。
-
我认为只要有n个存款没有提取就必须通过为某个帐户设置一个监视器来处理这个问题。然后,将考虑监视器的状态来处理其他事件。让我们将规则编辑到问题中。
-
我用规则编辑了问题。当您说“这必须通过为某个帐户设置监视器来处理......”时,我不明白。拜托,你能详细解释一下吗?
标签: drools drools-fusion