首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drools融合重复数据消除

Drools融合重复数据消除
EN

Stack Overflow用户
提问于 2014-02-18 18:10:53
回答 1查看 166关注 0票数 0

我定义了一个类,它充当规则引擎的事件

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

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

我制定了下面的规则,但它似乎不起作用

代码语言:javascript
复制
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

有人能帮帮忙吗?

关注子总线

EN

回答 1

Stack Overflow用户

发布于 2014-02-24 18:02:47

这就是我的想法:

代码语言:javascript
复制
$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.drools.core.runtime.rule.TypedAccumulateFunction并使用简单的语法运行它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21850418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档