85.6. 事件时序算子
在流模式中,决策引擎支持以下时序运算符,这些事件插入到决策引擎的工作内存中。您可以使用这些运算符来定义您在 Java 类或 DRL 规则文件中声明的事件行为的时序原因。当决策引擎以云模式运行时,不支持临时运算符。
-
之后 -
before -
coincides -
期间 -
includes -
完成 -
完成于 -
meets -
达到的 -
重叠 -
重叠, -
Starting 启动者- 之后
此 operator 指定在关联事件后当前事件是否发生。此运算符也可以定义在相关事件后面可以达到相关事件的时间,或者当前事件可在关联事件之后达到限额的时间范围。
例如,如果
$eventA在 3 分钟和 30 秒之间启动,则以下模式匹配,在$eventB完成后为 4 分钟。如果$eventA早于 3 分钟,且 30 秒在完成后或超过 4 分钟后启动,则模式不会被匹配。$eventB$eventA : EventA(this after[3m30s, 4m] $eventB)
$eventA : EventA(this after[3m30s, 4m] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
3m30s <= $eventA.startTimestamp - $eventB.endTimeStamp <= 4m
3m30s <= $eventA.startTimestamp - $eventB.endTimeStamp <= 4mCopy to Clipboard Copied! Toggle word wrap Toggle overflow afteroperator 支持最多两个参数值:- 如果定义了两个值,则间隔在第一个值(示例中为 3 分钟和 30 秒)开始,并以第二个值结束(示例中为 4 分钟)。
- 如果只定义一个值,则间隔在提供的值启动,并无限期地运行,且不会出现结束时间。
- 如果没有定义值,则间隔以 1 毫秒开始,且无限期地运行,且没有结束时间。
afteroperator 还支持负时间范围:$eventA : EventA(this after[-3m30s, -2m] $eventB)
$eventA : EventA(this after[-3m30s, -2m] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果第一个值大于第二个值,则决策引擎会自动逆向。例如,决策引擎以相同的方式解释以下两种模式:
$eventA : EventA(this after[-3m30s, -2m] $eventB) $eventA : EventA(this after[-2m, -3m30s] $eventB)
$eventA : EventA(this after[-3m30s, -2m] $eventB) $eventA : EventA(this after[-2m, -3m30s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - before
此运算符指定当前事件是否在关联事件之前发生。此运算符也可以定义在关联事件之前当前事件的时长,或当前事件在关联事件之前可以达到无限的时间范围。
例如,如果
$eventA在 3 分钟到 30 秒到 4 分钟之间完成,则以下模式匹配,在$eventB开始前 4 分钟。如果$eventA在前 3 分钟和 30 秒前为$eventB开始前,或超过 4 分钟,则在$eventB开始前,该模式不会被匹配。$eventA : EventA(this before[3m30s, 4m] $eventB)
$eventA : EventA(this before[3m30s, 4m] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
3m30s <= $eventB.startTimestamp - $eventA.endTimeStamp <= 4m
3m30s <= $eventB.startTimestamp - $eventA.endTimeStamp <= 4mCopy to Clipboard Copied! Toggle word wrap Toggle overflow beforeoperator 支持最多两个参数值:- 如果定义了两个值,则间隔在第一个值(示例中为 3 分钟和 30 秒)开始,并以第二个值结束(示例中为 4 分钟)。
- 如果只定义一个值,则间隔在提供的值启动,并无限期地运行,且不会出现结束时间。
- 如果没有定义值,则间隔以 1 毫秒开始,且无限期地运行,且没有结束时间。
beforeoperator 还支持负时间范围:$eventA : EventA(this before[-3m30s, -2m] $eventB)
$eventA : EventA(this before[-3m30s, -2m] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果第一个值大于第二个值,则决策引擎会自动逆向。例如,决策引擎以相同的方式解释以下两种模式:
$eventA : EventA(this before[-3m30s, -2m] $eventB) $eventA : EventA(this before[-2m, -3m30s] $eventB)
$eventA : EventA(this before[-3m30s, -2m] $eventB) $eventA : EventA(this before[-2m, -3m30s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - coincides
此 operator 指定两个事件是否同时发生,且是相同的开始和结束时间。
例如,如果开始和结束时间戳为
$eventA和$eventB,则以下模式匹配:$eventA : EventA(this coincides $eventB)
$eventA : EventA(this coincides $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow coincidesoperator 支持事件开始和结束时间之间的两个参数值(如果它们不相同):- 如果只给出一个参数,则使用参数 来设置这两个事件的开始和结束时间的阈值。
- 如果给出两个参数,则第一个参数用作开始时间的阈值,第二个参数被用作结束时间的阈值。
以下模式使用 start 和结束时间阈值:
$eventA : EventA(this coincides[15s, 10s] $eventB)
$eventA : EventA(this coincides[15s, 10s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果满足以下条件,则特征匹配:
abs($eventA.startTimestamp - $eventB.startTimestamp) <= 15s && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 10s
abs($eventA.startTimestamp - $eventB.startTimestamp) <= 15s && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 10sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持
coincidesoperator 的负间隔。如果您使用负间隔,则决策引擎会生成错误。- 期间
此 operator 指定当前事件是否在关联事件启动和结束的时间范围内发生。当前事件必须在关联事件开始后启动,且必须在关联事件结束前结束。(通过
coincides运算符,开始和结束时间相同或几乎相同。)例如,如果
$eventA在$eventB开始并且在$eventB结束前结束,则以下模式匹配:$eventA : EventA(this during $eventB)
$eventA : EventA(this during $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
$eventB.startTimestamp < $eventA.startTimestamp <= $eventA.endTimestamp < $eventB.endTimestamp
$eventB.startTimestamp < $eventA.startTimestamp <= $eventA.endTimestamp < $eventB.endTimestampCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Operator 中,支持一个、两个或四个可选参数:
- 如果定义一个值,这个值是两个事件的开始时间和两个事件结束时间之间的最大距离。
如果定义了两个值,则这些值是一个阈值,当前事件开始时间和结束时间必须与相关事件启动和结束时间相关。
例如,如果值为
5和10s,当前事件必须在关联事件开始后 5 到 10 秒之间启动,且必须在关联事件结束前 5 到 10 秒之间结束。- 如果定义了四个值,则第一个值和第二个值是事件开始时间之间的最小和最大距离,第三值和第四个值则是两个事件结束时间之间的最小和最大距离。
- includes
此运算符指定关联事件是否在发生当前事件时的时间段内。相关事件必须在当前事件开始后启动,且必须在当前事件结束前结束。(此运算符的行为是 Operator 行为的反向情况。)
例如,如果
$eventB在$eventA启动后启动,且在$eventA结束前结束,则以下模式匹配:$eventA : EventA(this includes $eventB)
$eventA : EventA(this includes $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
$eventA.startTimestamp < $eventB.startTimestamp <= $eventB.endTimestamp < $eventA.endTimestamp
$eventA.startTimestamp < $eventB.startTimestamp <= $eventB.endTimestamp < $eventA.endTimestampCopy to Clipboard Copied! Toggle word wrap Toggle overflow includesoperator 支持一个、两个或四个可选参数:- 如果定义一个值,这个值是两个事件的开始时间和两个事件结束时间之间的最大距离。
如果定义了两个值,则这些值是一个阈值,其中关联了事件开始时间和结束时间必须与当前事件开始和结束时间相关。
例如,如果值为
5和10s,相关事件必须在当前事件开始后 5 到 10 秒之间启动,且必须在当前事件结束前 5 到 10 秒之间结束。- 如果定义了四个值,则第一个值和第二个值是事件开始时间之间的最小和最大距离,第三值和第四个值则是两个事件结束时间之间的最小和最大距离。
- 完成
此运算符指定当前事件在关联事件后是否启动,但这两个事件同时结束。
例如,如果
$eventA在$eventB启动后启动,则以下模式匹配,并同时在$eventB结束后结束:$eventA : EventA(this finishes $eventB)
$eventA : EventA(this finishes $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
$eventB.startTimestamp < $eventA.startTimestamp && $eventA.endTimestamp == $eventB.endTimestamp
$eventB.startTimestamp < $eventA.startTimestamp && $eventA.endTimestamp == $eventB.endTimestampCopy to Clipboard Copied! Toggle word wrap Toggle overflow 完成Operator 支持一个可选参数,用于设置两个事件结束时间之间的最长时间:$eventA : EventA(this finishes[5s] $eventB)
$eventA : EventA(this finishes[5s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果满足这些条件,这个特征匹配:
$eventB.startTimestamp < $eventA.startTimestamp && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 5s
$eventB.startTimestamp < $eventA.startTimestamp && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 5sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持
完成Operator 的负间隔。如果您使用负间隔,则决策引擎会生成错误。- 完成于
此运算符指定关联事件是否在当前事件后启动,但两个事件同时结束。(此运算符的行为与
完成Operator 的行为相反。)例如,如果
$eventB在$eventA启动后启动,则以下模式匹配,并同时在$eventA结束后结束:$eventA : EventA(this finishedby $eventB)
$eventA : EventA(this finishedby $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
$eventA.startTimestamp < $eventB.startTimestamp && $eventA.endTimestamp == $eventB.endTimestamp
$eventA.startTimestamp < $eventB.startTimestamp && $eventA.endTimestamp == $eventB.endTimestampCopy to Clipboard Copied! Toggle word wrap Toggle overflow Operator
完成支持一个可选参数,用于设置两个事件结束时间之间的最长时间:$eventA : EventA(this finishedby[5s] $eventB)
$eventA : EventA(this finishedby[5s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果满足这些条件,这个特征匹配:
$eventA.startTimestamp < $eventB.startTimestamp && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 5s
$eventA.startTimestamp < $eventB.startTimestamp && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 5sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持 operator
完成的负间隔。如果您使用负间隔,则决策引擎会生成错误。- meets
此 operator 指定关联事件启动时当前事件是否同时结束。
例如,如果
$eventA在$eventB启动时,以下模式匹配:$eventA : EventA(this meets $eventB)
$eventA : EventA(this meets $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
abs($eventB.startTimestamp - $eventA.endTimestamp) == 0
abs($eventB.startTimestamp - $eventA.endTimestamp) == 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow meetsoperator 支持一个可选参数,用于设置当前事件的结束时间和关联事件的开始时间之间的最长时间:$eventA : EventA(this meets[5s] $eventB)
$eventA : EventA(this meets[5s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果满足这些条件,这个特征匹配:
abs($eventB.startTimestamp - $eventA.endTimestamp) <= 5s
abs($eventB.startTimestamp - $eventA.endTimestamp) <= 5sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持 meet operator 的负间隔。
如果您使用负间隔,则决策引擎会生成错误。- 达到的
此运算符指定关联事件在当前事件启动时是否同时结束。(此运算符的行为与 meets 运算符
的行为相反。)例如,如果
$eventB在$eventA启动时同时结束,则以下模式匹配:$eventA : EventA(this metby $eventB)
$eventA : EventA(this metby $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
abs($eventA.startTimestamp - $eventB.endTimestamp) == 0
abs($eventA.startTimestamp - $eventB.endTimestamp) == 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator 达到的可选参数支持一个可选参数,用于设置关联事件结束时间和当前事件的开始时间之间的最大距离:$eventA : EventA(this metby[5s] $eventB)
$eventA : EventA(this metby[5s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果满足这些条件,这个特征匹配:
abs($eventA.startTimestamp - $eventB.endTimestamp) <= 5s
abs($eventA.startTimestamp - $eventB.endTimestamp) <= 5sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持 operator
达到的负间隔。如果您使用负间隔,则决策引擎会生成错误。- 重叠
此 operator 指定在关联事件启动前当前事件是否启动,它会在关联事件发生的时间范围内结束。当前事件必须在相关事件的开始和结束时间之间结束。
例如,如果
$eventA在$eventB开始前,如果启动了 $eventA,则匹配,然后在$eventB结束$eventB时结束:$eventA : EventA(this overlaps $eventB)
$eventA : EventA(this overlaps $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重叠Operator 支持最多两个参数:- 如果定义了参数,则该值是关联事件的开始时间和当前事件的结束时间之间的最大距离。
- 如果定义了两个参数,值为关联事件开始时间和当前事件结束时间之间的最小距离(第一个值)和最大距离(秒数)。
- 重叠,
此运算符指定关联事件是否在当前事件启动前启动,并在当前事件发生的时间范围内结束。相关事件必须在当前事件的开始和结束时间之间结束。(此运算符的行为是
重叠运算符的行为。)例如,如果在
$eventA启动时启动$eventB,则以下模式匹配,然后在结束前结束:$eventA$eventA : EventA(this overlappedby $eventB)
$eventA : EventA(this overlappedby $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator 重叠支持最多两个参数:- 如果定义一个参数,则该值是当前事件开始时间和关联事件的结束时间之间的最大距离。
- 如果定义了两个参数,值为当前事件开始时间和关联事件结束时间之间的最小距离(第一个值)和最大距离(秒数)。
- Starting
此运算符指定两个事件是否同时启动,但当前事件在关联事件结束前结束。
例如,如果
$eventA和的同时启动,以下模式匹配,$eventB$eventA结束 $eventA 结束:$eventA : EventA(this starts $eventB)
$eventA : EventA(this starts $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
$eventA.startTimestamp == $eventB.startTimestamp && $eventA.endTimestamp < $eventB.endTimestamp
$eventA.startTimestamp == $eventB.startTimestamp && $eventA.endTimestamp < $eventB.endTimestampCopy to Clipboard Copied! Toggle word wrap Toggle overflow start operator 支持一个可选参数,用于设置两个事件启动时间之间的最大距离:
$eventA : EventA(this starts[5s] $eventB)
$eventA : EventA(this starts[5s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果满足这些条件,这个特征匹配:
abs($eventA.startTimestamp - $eventB.startTimestamp) <= 5s && $eventA.endTimestamp < $eventB.endTimestamp
abs($eventA.startTimestamp - $eventB.startTimestamp) <= 5s && $eventA.endTimestamp < $eventB.endTimestampCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持
启动operator 的负间隔。如果您使用负间隔,则决策引擎会生成错误。- 启动者
此运算符指定两个事件是否同时启动,但关联事件在当前事件结束前结束。(此 Operator 的行为与
启动Operator 行为相反。)例如,如果
$eventA和$eventB同时启动,则以下模式匹配,$eventB在$eventA结束前终止:$eventA : EventA(this startedby $eventB)
$eventA : EventA(this startedby $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以以以下方式表达此 operator:
$eventA.startTimestamp == $eventB.startTimestamp && $eventA.endTimestamp > $eventB.endTimestamp
$eventA.startTimestamp == $eventB.startTimestamp && $eventA.endTimestamp > $eventB.endTimestampCopy to Clipboard Copied! Toggle word wrap Toggle overflow Operator 启动的一个可选参数支持在两个事件的开始时间之间设置最大距离:$eventA : EventA( this starts[5s] $eventB)
$eventA : EventA( this starts[5s] $eventB)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果满足这些条件,这个特征匹配:
abs( $eventA.startTimestamp - $eventB.startTimestamp ) <= 5s && $eventA.endTimestamp > $eventB.endTimestamp
abs( $eventA.startTimestamp - $eventB.startTimestamp ) <= 5s && $eventA.endTimestamp > $eventB.endTimestampCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持 operator
启动的负间隔。如果您使用负间隔,则决策引擎会生成错误。