Drools Fusion介绍

Drools Fusion介绍

ID:42577338

大小:316.40 KB

页数:11页

时间:2019-09-18

Drools Fusion介绍_第1页
Drools Fusion介绍_第2页
Drools Fusion介绍_第3页
Drools Fusion介绍_第4页
Drools Fusion介绍_第5页
资源描述:

《Drools Fusion介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、drools fusion(3)2010-12-0223:07五、事件处理模式(EventProcessingModes) Drools支持2种事件处理模式:云模式(CloudMode)和流模式(StreamMode) 1.云模式(CloudMode) 云(Cloud)处理模式是默认的处理方式。 在云模式下,不会区分事实和事件,都看成是事实。 (1)没有时间的概念。尽管事件在插入引擎被赋予了时间戳,也不能判断该事件“多大了”,因为没有“现在”的概念。滑动窗(slidingwindows)基于“现在”的概念,所以在云模式下无法使用。 (2)

2、无序的事件云。由于事件无序,没有自动的生命周期管理,需要像正常的事实一样显示的删除事件。 云模式虽然是默认的执行模式,我们也可以配置它: KnowledgeBaseConfigurationconfig=KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption(EventProcessingOption.CLOUD); 等同系统属性配置: drools.eventProcessingMode=cloud 2.流模式(StreamMode) 当处理事件流的时

3、候需要选择流处理模式。 在流模式下: (1)插入到引擎里的事件必须是时间顺序的。 (2)引擎强制性的和使用的会话时钟sessionclock同步。 配置流模式: KnowledgeBaseConfigurationconfig=KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption(EventProcessingOption.STREAM); 等同配置系统属性: drools.eventProcessingMode=stream 使用流(STREAM)模

4、式,引擎有时间流和"现在"的概念(通过读取SessionClock的时间戳), 提供了以下3种支持: (1)滑动窗的支持 (2)自动的时间生命周期管理 (3)使用消极模式(NegativePatterns)自动的规则延迟 3.会话时钟(SessionClock)在流模式(Streammode)中的作用 在云模式下,会话时钟只有一个作用,就是给插入到workingmomery的事件赋予时间戳的值(如果规则没有定义时间戳属性) 在流模式下,会话时钟负责维护当前时间戳,基于当前的时间戳,引擎根据事件的年龄计算所有时间运算,从多种源同步流,安排未

5、来任务等等。 4.流模式(inStreamMode)中的消极模式(NegativePatterns) 消极模式在流模式和云模式意义是不同的。 在云模式下,所有的事实和事件都是预先知道的,消极模式立即计算执行 //arulethatactivatesimmediatelyuponmatching rule"Soundthealarm" when    $f:FireDetected()    not(SprinklerActivated()) then    //soundthealarm end 在流模式下,带有时间约束的消极模式可以要求

6、引擎等待一段时间后激活规则。 //arulethatautomaticallydelaysactivationduetotemporalconstraints rule"Soundthealarm" when    $f:FireDetected()    not(SprinklerActivated(thisafter[0s,10s]$f)) then    //soundthealarm end 六.滑动窗(SlidingWindows) 滑动窗是一种选择事件范围的方式。 滑动窗有2种实现方式:滑动时间窗(SlidingTimeWin

7、dows),滑动长度窗(SlidingLengthWindows)。 注意:滑动窗只有在引擎为(STREAM)流模式下才是可用的 1.滑动时间窗(SlidingTimeWindows) 滑动时间窗(允许我们的规则)仅仅匹配发生在最近X时间单元的事件。 例如,如果只关心最近2分钟的股票行情,模式(pattern)可以这样写: StockTick()overwindow:time(2m) 更复杂的例子: 如果最近10分钟从传感器读来的温度高于最大的临界值,发出警报。 rule"Soundthealarmincasetemperatureris

8、esabovethreshold" when    TemperatureThreshold($max:max)    Number(doubleValue>$max)fromaccumula

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。