不同用户的Drools规则

提姆

我最近开始使用Drools Fusion进行编程,并且我有一个智能可穿戴设备,可以将计步器和心率数据发送到我的笔记本电脑。然后,我使用drools规则语言处理此数据。但是,假设我有多个智能可穿戴设备,每个智能设备都有一个唯一的MAC地址。我使用时间窗口,我的问题是如何更改规则文件,以便规则仅针对具有相同macaddress的事件触发,并根据此MAC地址采取适当的措施。我当前的规则文件如下:

import hellodrools.Steps
import hellodrools.HeartRate
import hellodrools.AppInfo

declare AppInfo
    @role(event)
end

declare Steps
    @role(event)
end

declare HeartRate
    @role(event)    
end


rule "ACC STEPS RULE"
when
    accumulate( Steps( $s : steps )
                over window:time( 1h ) from entry-point "entrySteps"; 
        $fst: min( $s ), $lst: max( $s );
        $lst - $fst < 50 )
then
    System.out.println("STEPS RULE: get moving!");
    System.out.println($lst + "   " + $fst);

end

rule "HEARTRATE RULE 1"
when
    $heartrate : HeartRate(heartRate >= 150) from entry-point "entryHeartRate"
then
    System.out.println("Heartrate is to high!");
end

rule "HEARTRATE RULE 2"
when
    $heartrate : HeartRate(heartRate <= 50 && heartRate >= 35) from entry-            point "entryHeartRate"
then
    System.out.println("Heartrate is to low!");
end

rule "HEARTRATE RULE 3"
when
    $heartrate : HeartRate(heartRate < 35 && heartRate >= 25) from entry-point "entryHeartRate"
then
    System.out.println("Heartrate is critical low!");
end

rule "HEARTRATE RULE 4"
when
    $max : Double() from accumulate(
        HeartRate( $heartrates : heartRate ) over window:time( 10s ) from entry-point "entryHeartRate",
        max( $heartrates ) )&&
    $min : Double() from accumulate(
        HeartRate( $heartrates : heartRate ) over window:time( 10s ) from entry-point "entryHeartRate",
        min( $heartrates ) )&&
    eval( ($max - $min) >= 50 )
then
    System.out.println("Heartrate to much difference in to little time!");
end

我的HeartRate事件具有以下字段:

int heartRate;
Date timeStamp;
String macAddress;

我的步骤事件具有以下字段:

double steps;
Date timeStamp;
String macAddress;
异想天开

这很简单:您需要定义一个事实,使用进行调用,Walker使用String macAddress规则应处理的MAC地址创建它,然后

rule "ACC STEPS RULE"
when
  Walker( $mac: macAddress )
  accumulate( Steps( $s : steps, macAddress == $mac )
              over window:time( 1h ) from entry-point "entrySteps"; 
      $fst: min( $s ), $lst: max( $s );
      $lst - $fst < 50 )
  then ... end

并与其他规则类似。-您可以通过定义基本规则来简化此操作

rule "MAC"
when
  Walker( $mac: macAddress )
then end

并编写其他规则作为扩展:

rule "ACC STEPS RULE" extends "MAC" ...

因此您无需Walker为每个规则重复该模式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不同用户的不同视图

来自分类Dev

不同用户的动态样式

来自分类Dev

修改不同用户的_layout

来自分类Dev

不同用户类型的不同布局

来自分类Dev

Android中不同用户的不同视图

来自分类Dev

不同用户的不同视图iOS

来自分类Dev

不同用户类型的不同布局

来自分类Dev

Laravel,不同用户价格不同

来自分类Dev

iOS:在不同用户之间共享数据

来自分类Dev

yii不同用户角色的ACL

来自分类Dev

不同用户的访问控制-Laravel 5.2

来自分类Dev

不同用户分组日期的差异。

来自分类Dev

查找不同用户的列总和的差异

来自分类Dev

yii不同用户角色的ACL

来自分类Dev

显示当天预订活动的不同用户

来自分类Dev

不同用户分组日期的差异。

来自分类Dev

查找不同用户的列总和的差异

来自分类Dev

来自不同用户的DPAPI ProtectData

来自分类Dev

显示不同用户类型的视图

来自分类Dev

Django:已认证的不同用户模型

来自分类Dev

不同用户级别的PHP

来自分类Dev

不同用户的单独活动

来自分类Dev

在 Instagram 上抓取不同用户的数据

来自分类Dev

添加用户时,不同用户角色的不同用户自定义字段

来自分类Dev

Cognito 用户池中不同用户的相同身份 ID

来自分类Dev

如何选择不同用户和用户进度的每个级别

来自分类Dev

具有针对不同用户的不同设置的家长控制

来自分类Dev

具有针对不同用户的不同设置的家长控制

来自分类Dev

通过SFTP访问不同用户的apache webroot的不同部分