【发布时间】:2021-12-17 21:56:36
【问题描述】:
我在STREAM模式下使用drools 7.29,我想收集某个事件后面没有的事件。
$transaction: TransactionOmDto(service_type == "CASHOUT", transfer_status == "TS", $requestId: transfer_id, $msisdn: msisdn) over window:length(1)
not(TransactionOmDto(service_type == "CONFIRMATION", transfer_status == "TS", transfer_id == $requestId, msisdn == $msisdn, this after [0s, 5m] $transaction))
//How to collect such $transaction in a List ???
例如在我的系统中,当我收到符合以下模式的交易$t1时,
$t1.transfer_id = "my_uniq_transfer_id"
$t1.msisdn == "07xxxxxxxx"
$t1.service_type == "CASHOUT"
$t1.transfer_status == "TS"
那么我还应该在接下来的 5 分钟内收到来自同一个 POS 的另一笔交易$t2,它应该满足以下条件:
$t2.transfer_id = "my_uniq_transfer_id"
$t2.msisdn == "07xxxxxxxx"
$t2.service_type == "CONFIRMATION"
$t2.transfer_status == "TS"
有时$t2 交易没有到达。 我的规则的目标是报告系统中没有$t2 确认交易的所有$t1 交易。
【问题讨论】:
-
所以你想要
$transation之前5分钟窗口内发生的所有事件? -
你好@Roddy,不。我想要在新的 5 分钟内没有被其他
TransactionOmDto事件跟踪的所有$transaction与给定模式匹配,即:TransactionOmDto(service_type == "CONFIRMATION", transfer_status == "TS", transfer_id == $requestId, msisdn == $msisdn, this after [0s, 5m] $transaction)。 -
所以当您收到 $transaction 时,您想要接下来 5 分钟内的所有事件,除了那些看起来像您描述的 d 的事件?如果不是这样,您能否使用已接收交易的示例场景以及您希望哪些交易出现在您的收藏中来更新您的问题?
-
@RoddyoftheFrozenPeas,我以这个例子更新了这个问题。
-
这条规则的触发器应该是什么?每次收到新交易?
标签: java drools rule-engine complex-event-processing