我定义了一个类,它充当规则引擎的事件
它有以下成员: 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有人能帮帮忙吗?
关注子总线
发布于 2014-02-24 18:02:47
这就是我的想法:
$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并使用简单的语法运行它。
https://stackoverflow.com/questions/21850418
复制相似问题