230 likes | 353 Views
ECA Rule-based RFID Data Management. 基于 ECA 规则的 RFID 数据管理. 摘要.
E N D
ECA Rule-based RFID Data Management 基于ECA规则的RFID 数据管理
摘要 RFID阅读器网络每天都在产生冗余的事件数据,这些数据为经过处理,没有任何业务意义。如何设计适当的数据处理机制以派生出逻辑结论和业务状态成为有挑战性的议题,本文介绍了和RFID数据管理有关的议题,并介绍一种使用ECA规则处理复杂决策逻辑和处理数据的方法。我们的方法中,RFID中间件的应激功能通过规则库来说明和管理,不是嵌入在程序中,这样RFID数据处理过程是有效率和有弹性的,是RFID中间件的模块化,提升了RFID中间件的可维护性和可扩展性。
Ⅰ.介绍 在RFID数据处理中,我们面临几个挑战:(1)数据聚合(2)状态转变(3)业务处理。 所以我们提出ECA规则引擎来处理这些问题。规则引擎有多个优点:首先,规则引擎能在成千上万的事件中快速稳定地做成决策,第二,基于规则的定义是很有弹性的,易于修改和维护。第三,规则适合于用机器来处理和分析。最后,规则可以在单个规则中管理,也可以在分布于Web上的多个规则库中管理。
Ⅱ.相关工作 ALE规约是应用级接口,可以让用户从不同的数据源获得过滤和整理好的数据,建立处理方法和用报告形式请求过滤事件。 我们的工作着重介绍在RFID中间件中怎样用ECA规则去处理事件,以使RFID数据管理更有弹性和有效。
Ⅲ. 数据处理中的ECA规则 A. ECA 规则 ECA模型开始是使用在主动数据库系统中,为了支持整合规则到DBMS中的反应性行为。在ECA模型中,有以下的事件--条件--动作模式定义: WHEN E IF C DO A; 意思是当某个事件E发生时,会对条件C进行判别,如果判别通过执行动作A。
Ⅲ. 数据处理中的ECA规则 B.基于ECA规则的RFID数据管理 事件来源于RFID部署环境和事件的输出,动作的最后输出被送到上层系统做进一步处理。如图1所示:
Ⅲ. 数据处理中的ECA规则 输入接口:管理员利用输入接口增加基于知识和经验的规则,业务逻辑的知识和经验被描述和增加到规则库中。 规则库:规则库包含管理员定义的所有规则。 规则管理器:规则管理器管理规则库中的规则,并根据事件类型的触发规则。 条件检测器:当发现触发事件,条件检测器检查条件是否满足。 动作管理器:动作管理器管理动作集中的动作,而且调度动作的运行。
Ⅲ. 数据处理中的ECA规则 动作集:动作集包含规则中的事件,这些动作包括业务处理初始化、另一种事件的产生、给企业应用程序的通知、EPCIS的数据存储、从EPC网络查询信息等等。 事件管理器: 管理事件队列中的事件以及把它们传给规则管理器。 事件队列:接收和缓冲RFID事件流。 事件构造器: 从RFID数据流中抽取出原始的标签事件。 RFID部署环境:它是事件的源头。RFID阅读器可以安装在码头和卡车上。我们用“逻辑阅读器”来描述有同一逻辑目标的一个或者多个物理阅读器。
Ⅳ.设计和实现 图2给出了我们的RFID中间件的事件处理流程。 RFID事件处理:事件处理分为三层:(1)原始事件处理层(2)中间事件处理层(3)业务事件处理层。上面两层有规则库和事件集。 (1)原始事件处理层 这是RFID处理的开始步骤,在这一层,能得到阅读器编号,标签出现和消失事件和标签数据编码。 标签在某个时间段被阅读器多次读取,而且被多个阅读器读取,产生了多余的数据,这一阶段也过滤这些重复的数据。
Ⅳ.设计和实现 不同公司的RFID产品的频率、编码、存储规则和数据内容都可能不同,这里还对RFID数据进行解析。这一层不包括语义数据处理。 (2)中间事件处理层 这一层对数据进行过滤和聚合。 不同的企业应用程序关注不同的RFID数据集,有时他前面需要某类物品的数量。为了动态适应经常变化的需求,中间事件处理层利用规则去过滤和聚合逻辑,比如通过过滤数据得到某个兴趣数据、贴在货盘或者货物上的标签数据、某类产品的数目等。
Ⅳ.设计和实现 除了这些,为了兼容ALE规约,系统可以通过解析定义数据处理策略的文件来生成处理规则。 数据处理后被送到上层应用以及存储在EPCIS中。 (3)业务事件处理层 这一层处理与业务逻辑相关的事件,如改变物品状态、核实集装箱货物、检查标错的原理或者识别伪造品。 业务事件处理层的处理范围很广,比如在集装箱货品核实应用中,它可以用来检查每种货物的数量,然而可以不需要货品的序列号。通过用户接口,每个贸易伙伴可以根据他们的业务逻辑和需求做配置。
Ⅳ.设计和实现 这些配置被转换成规则的形式并存储在规则库中,用户可以从规则集中选择他们感兴趣的业务服务,即选择对应的规则集。比如,当一个顾客从货架上拿走一个商品,即一个标签从智能货架消失,系统可以立即产生一个动作,比如通知仓库员该商品低库存。 在这一层也能得到上下层数据服务,通过EPC网络可以发现和标签有关的信息。 管理和配置模块:通过这个模块,管理员可以管理和配置规则,可以向规则库增加过滤规则、聚合规则、和业务处理规则等。
Ⅳ.设计和实现 B.实现要点 我们的RFID系统用Java编写。我们选择Drools去实现规则引擎。Drools是用Java实现的基于Rete算法的规则引擎,Rete只是一个决策算法,其效率和执行的规则数目五个。Drools用java编写,但能够在.Net和Java平台运行,而且预先插入组件。 一个规则有如下一个粗糙的结构: Rule“name” ATTRIBUTES When LHS Then RHS End
Ⅳ.设计和实现 很简单,很多标号都不需要,甚至“name”的双引号都是可选的,ATTRIBUTES暗示规则应该怎样执行。LHS是规则的条件部分,遵循某种语法,RHS是执行的java语义代码(也可是groovy和C#)。在LHS中任何变量约束都是允许的。 下面是事件处理模块的实现细节。 (1)原始事件处理层 这是基本处理步骤。因为RFID产品的多样性,RFID数据的种类也很多。在这些情况下,从原始RFID数据流中根据要求抽取出原始RFID事件。 下面是一个原始标签事件规定的例子 Class RawTagEvent{ physicalReaderID; tagID; timestamp;}
Ⅳ.设计和实现 阅读器的部署信息存储在数据库中,建立物理阅读器和逻辑阅读器的关系,然后在内存中建立一个映射。映射过程之后,我们能得到RFID逻辑阅读器ID,这些数据存储在散列表中,键值是逻辑阅读器ID和识别的标签ID。 通过比较散列表中的逻辑RFID阅读器ID和标签ID,中间件剔除重复的数据。当新的阅读数据插入散列表,就可以识别出某个标签的出现。系统间隔地去检测散列表,如果某个标签在一段时间内没出现,那就代表该标签消失。接着通过解码,可以到得到公司前缀检索和相关的内容。这样便产生原始事件。
Ⅳ.设计和实现 下面原始标签事件规定的例子 Class PrimitiveTagEvent{ logicalReaderID; physicalReaderID; tagID; idType; status; timestamp; filter; company; reference; serialNum; }
Ⅳ.设计和实现 (2)中间事件处理层 管理员可以使用用户接口设置过滤器的约束条件,如公司名,逻辑阅读器ID等。比如,可设置“filter”字段为货盘标签、货箱标签、包装袋标签、货品标签等。不同的数据过滤和不同的数据聚合规则可以根据配置生成。这些规则存储在规则库中。 Rule“TagFilter” When Event:PrimitiveTagEvent(logicalReaderID==”L1”, idType==”SGTIN-96”, filter==”011”, company==“0001289”) then ……//further process End
Ⅳ.设计和实现 当一个满足括符中的条件原始事件到达时,事件管理器触发业务处理。原始事件是用户定义的数据类型。规则“TagFilter”开始标签过滤,当条件用“,”分开,如果任一个条件不满足,那么标签事件重新跟踪,然后离开规则的执行。
Ⅳ.设计和实现 (3)业务事件处理层 下面是该层的一个规则: Rule “Smart shelf shortage Report” when SSReportEvent(map:map) //smart shelf report e then Hget shaver's set and report the shortage Set set= (Set)map.get("000128"); if(set! =null && set.size(O<10) ShortageReport.report( item, set); Hget shampoo's set and report the shortage set= (Set)map.get("000130"); if(set!=null && set.size(<20) ShortageReport.report( item, set); end
Ⅳ.设计和实现 总之,每一层从数据库获取规则文件的url,当触发事件发生,Drools引擎触发对应的规则,判别条件之后,执行动作。输出也可以触发事件,以触发其他规则。
Ⅳ.设计和实现 总之,每一层从数据库获取规则文件的url,当触发事件发生,Drools引擎触发对应的规则,判别条件之后,执行动作。输出也可以触发事件,以触发其他规则。
Ⅴ.总结 在数据过滤、聚合、平滑、分组和业务逻辑执行中使用ECA规则的方法可以把大量的RFID数据转换成有价值的信息。当我们使用Drools,我们只需要写规则并把规则放到系统中。我们不需要去编译这些规则,这有规则引擎自动完成。我们增加新规则不需要重启系统,这些规则能被动态加载。这是非常有用和有弹性的RFID事件处理过程,而且我们能使用专业领域语言(DSL),这样能够扩展规则语言到你的问题域中。如果你的规则需要用到专业术语,你可以自己定义DSL。总之,这是一个处理RFID数据的好方法,有很好的处理效率,提高了RFID中间件的可维护性和可扩展性。