drools存储的交易能否实时查看
时间: 2023-08-09 09:11:49 浏览: 24
Drools 是一款规则引擎,用于实现业务规则的自动化执行。Drools 内部存储的交易数据是可以实时查看的,但是需要根据具体的使用情况来选择合适的方式进行查看。如果你是使用 Drools 作为后台服务来处理交易数据的,可以通过打印日志或者使用监控工具来实时查看交易数据。如果你是使用 Drools 作为前端工具来展示交易数据的,可以通过实时更新数据展示页面的方式来实现实时查看。总之,Drools 存储的交易数据是可以实时查看的,具体的实现方式需要根据具体情况进行选择。
相关问题
drools的滑动窗口,交易存在哪里
在drools中,滑动窗口可以用来对数据流进行聚合计算,以便更好地监控、分析和控制数据流。在上面的规则中,我们使用了一个时间滑动窗口来对账户的交易记录进行聚合计算。具体而言,这个滑动窗口是通过以下的accumulate函数来实现的:
```
accumulate(
Transaction($account == $account, $timestamp : timestamp) over window:time(30d);
$count : count($timestamp);
$count >= 30
)
```
该函数会对所有与指定账户相关的交易记录进行聚合,聚合的时间范围是最近30天。在聚合的过程中,使用了一个$timestamp变量来记录每个交易的时间戳,然后使用count函数来统计在滑动窗口内的交易数量。最后,如果交易数量大于等于30,则该规则会被触发。
需要注意的是,这里的交易记录是事先存储在Drools的工作内存(working memory)中的,可以通过规则中的模式(pattern)来匹配。在上面的规则中,我们使用了一个Account模式来匹配所有具有交易记录的账户,并将其赋值给$account变量。然后,在滑动窗口中,我们使用了一个Transaction模式来匹配所有与该账户相关的交易记录,并将其用于聚合计算。
用drools实现同一渠道连续交易次数>10次
好的,下面是用Drools实现同一渠道连续交易次数>10次的示例代码:
首先,定义一个交易事实对象 Transaction,包含交易渠道 channel 和交易时间 time 两个属性:
```java
public class Transaction {
private String channel;
private Date time;
// 构造函数和 getter/setter 略
}
```
然后,定义一个规则文件 TransactionRules.drl,其中包含了一个名为“连续交易次数>10”的规则,用于判断同一渠道的连续交易次数是否大于10次:
```drl
package com.example.rules
import com.example.Transaction;
rule "连续交易次数>10"
when
$tx1: Transaction($channel: channel, $time: time)
$tx2: Transaction(channel == $channel, time > $time)
$tx3: Transaction(channel == $channel, time > $tx2.time)
$tx4: Transaction(channel == $channel, time > $tx3.time)
$tx5: Transaction(channel == $channel, time > $tx4.time)
$tx6: Transaction(channel == $channel, time > $tx5.time)
$tx7: Transaction(channel == $channel, time > $tx6.time)
$tx8: Transaction(channel == $channel, time > $tx7.time)
$tx9: Transaction(channel == $channel, time > $tx8.time)
$tx10: Transaction(channel == $channel, time > $tx9.time)
then
System.out.println($channel + "渠道连续交易次数>10");
end
```
在这个规则中,我们定义了一个名为“连续交易次数>10”的规则,它使用了十个交易事实对象表示同一渠道连续十次交易。如果这十个交易事实对象的渠道都相同,则表示该渠道的连续交易次数>10,触发规则动作并输出相应的信息。
最后,在应用程序中,我们可以读取交易数据并将其转换为交易事实对象,然后将这些交易事实对象注入到Drools中,并执行规则,如下所示:
```java
public static void main(String[] args) {
// 读取交易数据并转换为交易事实对象列表
List<Transaction> transactions = readTransactions();
// 创建KieContainer和KieSession
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("TransactionRulesSession");
// 将交易事实对象注入到Drools中
for (Transaction transaction : transactions) {
kSession.insert(transaction);
}
// 执行规则
kSession.fireAllRules();
// 关闭KieSession
kSession.dispose();
}
```
在这个示例中,我们使用了 KieSession 来执行规则,并将交易事实对象列表中的每个对象都插入到了 KieSession 中。然后,执行规则并输出结果。
需要注意的是,具体的规则实现还需要根据实际业务场景进行调整。如果您有任何问题,请随时提出。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)