当前位置: 首页 > 知识库问答 >
问题:

Drools Fusion重复数据消除

燕照
2023-03-14

我定义了一个类作为规则引擎的事件

它有以下成员1.电话号码2.纬度3.经度

我如何制定一个规则,其中1。该规则计算同一地点不同人数的数量2。同一人如果在1分钟的间隔内多次穿越同一地点,应仅计算为一个,不应重复

我制定了以下规则,但似乎不起作用

import locationbasedservices.LocationEvent;

declare LocationEvent
  @role(event)
  @expires(1m)
end

rule "footfallcount"
when
  LocationEvent ( $msisdn : msisdn )
  $footfallcnt : Number(intValue > 0)
    from accumulate( LocationEvent(latitude=="77.77", longitude=="77.77",
                                   age>31 && <40, arpu>40.00, gender=="MALE")
                       from entry-point LocationSvc,
  not ArrayList( size >= 2 )
    from collect( LocationEvent( msisdn == $msisdn )
                    from entry-point LocationSvc),
          count(1))
then
  System.out.println("Footfall: " + $footfallcnt);
end

有人能帮忙吗?

问候Subbu

共有1个答案

梁渊
2023-03-14

这就是我的想法:

$m2e: Map( $size: size )
        from accumulate ( $le: LocationEvent ( latitude == "77.77", longitude == "77.77",
                                               age > 31 && < 40, arpu > 40.00,
                                               gender == "MALE", $msisdn : msisdn )
                                 over window:time( 1m ),
                          init( Map m2e = new HashMap(); ),
                          action( m2e.put( $msisdn, $le ); ),
                          result( m2e ) )

请仔细注意Drools手册中关于累积的部分所说的内容:最好在Java代码中开发累积函数,实现org。流口水。果心运行时。规则键入daccumeratefunction并使用简单语法运行它。

 类似资料:
  • 我有一个PHP应用程序(每个请求)扫描一些文件的存在。 为此,我使用了,因为通常我只知道文件名的开头。 我注意到,不返回任何客户端当前打开的文件,因此我的应用程序认为如果有人打开了它,则不存在。 是否有办法使返回打开(:=锁定?)还有文件吗? 奇怪的是,这里没有提到。但是我可以确认glob没有返回当前由客户端打开的文件。。。(一旦客户端关闭访问应用程序,将一如既往地返回文件) ps.:甚至没有返回

  • 本文向大家介绍Oracle删除重复的数据,Oracle数据去重复,包括了Oracle删除重复的数据,Oracle数据去重复的使用技巧和注意事项,需要的朋友参考一下 Oracle  数据库中查询重复数据: select * from employee group by emp_name having count (*)>1;  Oracle  查询可以删除的重复数据 select t1.* from

  • 本文向大家介绍Mysql删除重复的数据 Mysql数据去重复,包括了Mysql删除重复的数据 Mysql数据去重复的使用技巧和注意事项,需要的朋友参考一下 MySQL数据库中查询重复数据 select * from employee group by emp_name having count (*)>1; Mysql  查询可以删除的重复数据 select t1.* from employee

  • 我有2个数据帧,和,有一个列(和其他非重要的)。 我想在中删除包含已在中的电子邮件的行。 我该怎么做?

  • 虽然我看到了数据库可用的消息,但我无法登录到我的H2数据库事件。 我的文件如下所示: “数据库未找到”错误消息如下所示: 我使用的是 h2 数据库版本 2.1.214 和Spring启动版本 2.5.9