文中大部分中心思想来源于Event Processing In Action一书的9.4节。
模式识别器的基本策略是:所有时间窗内的事件被称为候选事件(Participant Events),再由候选事件根据规则产生匹配集(Matching Set)。
1. 计算策略 Evaluation Policy
即何时产生匹配集。主要有两种:
· 立即 Immediate 每个事件到来时都试图去产生匹配集。大多数情况下,都需要使用这种策略,以即时判断复杂事件的产生。
· 搁置 Deferred 在时间窗关闭时产生匹配集。当规则涉及时间限制,或者需要对指定时间内的事件做统计时往往需要使用此种策略。例如 5分钟不发生错误 或 一个月内的平均值小于30 这样的规则。使用这种策略时,往往需要用户显式地指定时间窗,即指定间隔多久判断事件是否发生。
2. 势策略 Cardinality Policy
名字太玄乎,其实就是用于控制在一段时间内可产生的匹配集个数。
· 单个 Single 仅产生一个匹配集。在产生一个匹配集后,时间窗关闭前,不会再产生其他匹配集。
· 不限 Unbounded 可以不限量地产生匹配集。
· 有限 Bounded 仅可以产生指定个数的匹配集。
3. 事件选择策略 Repeated Type Policy
在产生匹配集时,往往有多个同类事件候选,这是决定选取哪个事件的策略。
· 覆盖 Override 同类型的新事件到来时,会把旧事件踢出候选集,占山为王。
· 全部 Every 所有的事件都被用来产生匹配集。这样就会一次产生许多匹配集。显然,在势策略为Single时,该选项不可用。
· 首个 First / 末个 Last 只选取第一个/最后一个事件。
· 由属性值决定 With max/min value <attribute_name>
4. 消费策略 Consumption Policy
此策略决定在产生匹配集后,匹配集的成员是否需要从候选集中被删除。亦即决定了一个事件可否属于多个匹配集。
如果势策略为Single,消费策略无意义。
· 消费 Consume 就是产生匹配集后,其成员从候选集中消失。
· 重用 Reuse 不消失
· 有限重用 Bounded Reuse 顾名思义,一个事件只能属于有限个匹配集。
5. 顺序策略 Order Policy
事件处理中一个很重要的基础,就是事件必须是有序的。此策略决定事件按何排序。可用的选项包括产生时间、到达时间、指定的属性值等。