drools fusion(3) 2010-12-02 23:07 五、事件处理模式(Event Processing Modes) Drools 支持 2 种事件处理模式:云模式(Cloud Mode)和流模式(Stream Mode) 1.云模式(Cloud Mode) 云(Cloud)处理模式是默认的处理方式。 在云模式下,不会区分事实和事件,都看成是事实。 (1)没有时间的概念。尽管事件在插入引擎被赋予了时间戳,也不能判断该事件“多大了”,因为没有“现在”的概念。滑动窗(slid用。 (2)无序的事件云。由于事件无序,没有自动的生命周期管理,需要像正常的事实一样显示的删除事件。 云模式虽然是默认的执行模式,我们也可以配置它: KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption( EventProcessingOption.CLOUD ); 等同系统属性配置: drools.eventProcessingMode = cloud 2.流模式(Stream Mode) 当处理事件流的时候需要选择流处理模式。 在流模式下: (1) 插入到引擎里的事件必须是时间顺序的。 (2) 引擎强制性的和使用的会话时钟 session clock 同步。 配置流模式: KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption( EventProcessingOption.STREAM ); 等同配置系统属性: drools.eventProcessingMode = stream 使用流(STREAM)模式,引擎有时间流和"现在"的概念(通过读取 Session Clock 的时间戳), 提供了以下 3 种支持: (1) 滑动窗的支持 (2) 自动的时间生命周期管理 (3) 使用消极模式(Negative Patterns)自动的规则延迟 3.会话时钟(Session Clock)在流模式(Stream mode)中的作用 在云模式下,会话时钟只有一个作用,就是给插入到 working momery 的事件赋予时间戳的值(如果规则没有定义时间戳属性) 在流模式下,会话时钟负责维护当前时间戳,基于当前的时间戳,引擎根据事件的年龄计算所有时间运算,从多种源同步流,安排 4.流模式(in Stream Mode)中的消极模式(Negative Patterns) 消极模式在流模式和云模式意义是不同的。 在云模式下,所有的事实和事件都是预先知道的,消极模式立即计算执行 //a rule that activates immediately upon matching rule "Sound the alarm" when $f : FireDetected( ) not( SprinklerActivated( ) ) then // sound the alarm end 在流模式...