82.6. 事件的临时运算符
在流模式中,决策引擎支持以下临时运算符,用于插入到决策引擎工作内存中的事件。您可以使用这些运算符来定义您在 Java 类或 DRL 规则文件中声明的事件的临时原因行为。当决策引擎在云模式下运行时,不支持临时运算符。
-
after
-
之前
-
coincides
-
during
-
includes
-
完成
-
完成完成
-
先决条件
-
满足
-
重叠
-
重叠:
-
启动
启动者
- after
此 operator 指定当前事件是否在关联事件后发生。此 operator 也可以定义当前事件可以遵循关联的事件,或者限制当前事件可以遵循关联的事件的时间。
例如,如果
$eventA
在 3 分钟到 30 秒和$eventB
完成后 4 分钟之间启动,则以下模式匹配。如果$eventA
在$eventB
完成后启动 3 分钟和 30 秒,或者在$eventB
完成后再 4 分钟后启动,则模式匹配模式。$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 <= 4m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow after
操作员支持最多两个参数值:- 如果定义了两个值,间隔从第一个值(示例中的 3 分钟和 30 秒)开始,并以第二个值结束(示例中 4 分钟)。
- 如果只定义一个值,间隔从提供的值开始,并在没有结束时间的情况下运行。
- 如果没有定义值,间隔以 1 毫秒开始,并在没有结束时间的情况下运行。
之后的
operator 还支持负时间范围:$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 - 之前
此 operator 指定当前事件是否在关联事件前发生。此操作员还可定义当前事件在关联事件之前可以处理的时间,或者定义当前事件可以在关联的事件之前的限制时间范围。
例如,如果
$eventA
完成 3 分钟到 30 秒到$eventB
启动前 4 分钟之间,则以下模式匹配。如果$eventA
完成在$eventB
启动之前的 3 分钟和 30 秒前,或者在$eventB
启动前 4 分钟前,则模式匹配模式。$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 <= 4m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow before
运算符最多支持两个参数值:- 如果定义了两个值,间隔从第一个值(示例中的 3 分钟和 30 秒)开始,并以第二个值结束(示例中 4 分钟)。
- 如果只定义一个值,间隔从提供的值开始,并在没有结束时间的情况下运行。
- 如果没有定义值,间隔以 1 毫秒开始,并在没有结束时间的情况下运行。
before
运算符还支持负时间范围:$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 如果事件开始和结束时间之间的距离不相同,则
coincides
操作器支持最多两个参数值:- 如果只给出一个参数,则使用该参数为两个事件的开始和结束时间设置阈值。
- 如果指定了两个参数,则第一个参数用作开始时间的阈值,第二个参数则用作结束时间的阈值。
以下模式使用 start 和 end 时间阈值:
$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) <= 10s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持
coincides
operator 的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。- during
此 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.endTimestamp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator
期间
支持其中一个、两个或四个可选参数:- 如果定义了一个值,则这个值是两个事件的开始时间和两个事件结束时间之间的最大距离。
如果定义了两个值,则这些值是一个阈值,当前事件开始时间和结束时间必须与相关的事件开始和结束时间相关。
例如,如果值为
5s
和10s
,则当前事件必须在关联事件启动后 5 到 10 秒之间启动,且必须在关联事件结束 5 秒和 10 秒之间结束。- 如果定义了四个值,则第一个值和第二个值是事件开始时间之间的最小和最大距离,第三个值和第四个值是两个事件结束时间之间的最小和最大距离。
- includes
此 operator 指定在当前事件发生时相关的事件是否发生。关联的事件必须在当前事件启动后启动,且必须在当前事件结束前结束。(此操作器的行为是运算符行为的相反。)
例如,如果
$eventB
在$eventA
start 后启动,并在$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.endTimestamp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow includes
运算符支持 one、2 或四个可选参数:- 如果定义了一个值,则这个值是两个事件的开始时间和两个事件结束时间之间的最大距离。
如果定义了两个值,则这些值是一个阈值,相关的事件开始时间和结束时间必须与当前事件启动和结束时间相关。
例如,如果值为
5s
和10s
,相关的事件必须在当前事件启动后 5 到 10 秒之间启动,且必须在当前事件结束 5 秒和 10 秒之间结束。- 如果定义了四个值,则第一个值和第二个值是事件开始时间之间的最小和最大距离,第三个值和第四个值是两个事件结束时间之间的最小和最大距离。
- 完成
此 operator 指定当前事件是否在关联的事件后启动,但两个事件同时终止。
例如,如果
$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.endTimestamp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 完成
运算符支持一个可选参数,用于设置两个事件结束时间之间允许的最大时间:$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) <= 5s
Copy 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.endTimestamp
Copy 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) <= 5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持 Operator
完成
的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。- 先决条件
此 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) == 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow meets
操作符支持一个可选参数,该参数设定当前事件结束时间和关联事件的开始时间之间允许的最大时间:$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) <= 5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持
满足
Operator 的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。- 满足
此 operator 指定在当前事件启动时相关的事件是否同时结束。(此操作器的行为与
满足
运算符的行为相反。)例如,如果
$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) == 0
Copy 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) <= 5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持 Operator
满足
的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。- 重叠
此 operator 指定当前事件是否在关联事件启动前启动,并在相关的事件的时间范围内结束。当前事件必须在关联事件的开始和结束时间之间结束。
例如,如果
$eventA
在$eventB
$eventB
结束前结束,则以下模式匹配:$eventA : EventA(this overlaps $eventB)
$eventA : EventA(this overlaps $eventB)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow overlaps
operator 支持最多两个参数:- 如果定义了一个参数,则该值是关联事件的开始时间和当前事件结束时间之间的最大距离。
- 如果定义了两个参数,则值为关联事件开始时间和当前事件的结束时间之间的最小距离(第一个值)和当前事件的结束时间。
- 重叠:
此 operator 指定关联的事件是否在当前事件启动前启动,并在当前事件发生的时间范围内结束。关联的事件必须在当前事件的开始和结束时间之间结束。(此操作器的行为与重叠的运算符行为相反。)
例如,如果
$eventB
在$eventA
$eventA
结束前结束,则以下模式匹配:$eventA : EventA(this overlappedby $eventB)
$eventA : EventA(this overlappedby $eventB)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator
的重叠
支持最多两个参数:- 如果定义了一个参数,则该值是当前事件开始时间和关联事件结束时间之间的最大距离。
- 如果定义了两个参数,则值是当前事件开始时间和关联事件结束时间之间的最小距离(第一个值)和最大距离(秒值)。
- 启动
此操作器指定两个事件是否同时启动,但当前事件在关联事件结束前结束。
例如,如果
$eventA
和$eventB
同时启动,并且$eventA
结束于$eventB
结束,则以下模式匹配:$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.endTimestamp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow start 运算符支持一个可选参数,该参数在两个事件的开始时间之间设置最大距离:
$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.endTimestamp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持 start 运算符的负间隔。
如果您使用负间隔,则决策引擎会生成一个错误。
- 启动者
此 operator 指定两个事件是否同时启动,但关联的事件在当前事件结束前结束。(此操作器的行为与
启动
操作器行为相反。)例如,如果
$eventA
和$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.endTimestamp
Copy 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.endTimestamp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告决策引擎不支持 Operator
启动
的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。