文章目录
官网:http://docs.jboss.org/drools/release/6.0.0.CR5/drools-fusion-docs/html/ch02.html
2.1. event(事件)
2.1.1. 事件语义学
2.1.2. 活动宣言
2.1.3. 事件元数据
2.2. 会话时钟
2.2.1. 可用的时钟实现
2.3. Streams支持
2.3.1. 声明和使用入口点
2.4. 时间推理
Drools 实现了由Allen定义的13种时间操作运算
Temporal Operators | Illustration | Interpretation |
---|---|---|
━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ Temporal Operators ┃ Illustration ┃ Interpretation ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x before y ┃ y ┃ X发生在y之前 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ y ┃ x after y ┃ x ┃ X发生在y之后 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x meets y ┃ y ┃ x结束时y开始 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ y ┃ x metby y ┃ x ┃ y结束时x开始 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x overlaps y ┃ y ┃ x开始在y之前,结束在y之后 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x overlappedby y ┃ y ┃ x开始在y之后,结束在y之前 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x starts y ┃ y ┃ x和y同时开始,结束在y之前 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x startedby y ┃ y ┃ x和y同时开始,结束在y之后 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x during y ┃ y ┃ x发生在y期间 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x includes y ┃ y ┃ y发生在x期间 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x finishes y ┃ y ┃X开始在y之后,同y一起结束 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x finishedby y ┃ y ┃X开始在y之前,同y一起结束 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━ ┃ x ┃ x coincides y ┃ y ┃ X和y同时发生 ━━━━━━━━━━┃━━━━━━━━━━━━━━┃━━━━━━━━━━━━━
2.4.1. Temporal Operators 时间运营商
当从当前事件到被关联事件的时间距离属于为操作员声明的距离范围时,后评估器关联两个事件并匹配。
让我们看一个例子:
$eventA : EventA( this after[ 3m30s, 4m ] $eventB )
当且仅当$ eventB完成的时间与$ eventA开始的时间之间的时间距离在(3分钟和30秒)和(4分钟)之间时,前一模式将匹配。换一种说法:
3m30s <= $eventA.startTimestamp - $eventB.endTimeStamp <= 4m
after运算符的时间距离间隔是可选的:
如果定义了两个值(如下例所示),则间隔从第一个值开始,到第二个值结束。
如果只定义了一个值,则间隔从值开始,并在正无穷大处结束。
如果未定义任何值,则假定初始值为1ms,最终值为正无穷大。
注意
可以为此运算符定义负距离。例:
$ eventA:EventA(在[-3m30s,-2m] $ eventB之后)
注意
如果第一个值大于第二个值,则引擎会自动反转它们,因为没有理由让第一个值大于第二个值。示例:以下两种模式被认为具有相同的语义:
$ eventA:EventA(在[-3m30s,-2m] $ eventB之后)
$ eventA:EventA(在[-2m,-3m30s] $ eventB之后)
注意
的后,前和 一致运营商可以被用于定义事件之间的约束,java.util.Date属性和属性长以任何组合(自纪元解释为时间戳)。例:
EventA(在$ someDate之后)