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)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    3m30s <= $eventA.startTimestamp - $eventB.endTimeStamp <= 4m
    Copy to Clipboard Toggle word wrap

    after 操作员支持最多两个参数值:

    • 如果定义了两个值,间隔从第一个值(示例中的 3 分钟和 30 秒)开始,并以第二个值结束(示例中 4 分钟)。
    • 如果只定义一个值,间隔从提供的值开始,并在没有结束时间的情况下运行。
    • 如果没有定义值,间隔以 1 毫秒开始,并在没有结束时间的情况下运行。

    之后的 operator 还支持负时间范围:

    $eventA : EventA(this after[-3m30s, -2m] $eventB)
    Copy to Clipboard Toggle word wrap

    如果第一个值大于第二个值,则决策引擎会自动撤销它们。例如,以下两种模式由决策引擎解释,其方式相同:

    $eventA : EventA(this after[-3m30s, -2m] $eventB)
    $eventA : EventA(this after[-2m, -3m30s] $eventB)
    Copy to Clipboard Toggle word wrap
    之前

    此 operator 指定当前事件是否在关联事件前发生。此操作员还可定义当前事件在关联事件之前可以处理的时间,或者定义当前事件可以在关联的事件之前的限制时间范围。

    例如,如果 $eventA 完成 3 分钟到 30 秒到 $eventB 启动前 4 分钟之间,则以下模式匹配。如果 $eventA 完成在 $eventB 启动之前的 3 分钟和 30 秒前,或者在 $eventB 启动前 4 分钟前,则模式匹配模式。

    $eventA : EventA(this before[3m30s, 4m] $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    3m30s <= $eventB.startTimestamp - $eventA.endTimeStamp <= 4m
    Copy to Clipboard Toggle word wrap

    before 运算符最多支持两个参数值:

    • 如果定义了两个值,间隔从第一个值(示例中的 3 分钟和 30 秒)开始,并以第二个值结束(示例中 4 分钟)。
    • 如果只定义一个值,间隔从提供的值开始,并在没有结束时间的情况下运行。
    • 如果没有定义值,间隔以 1 毫秒开始,并在没有结束时间的情况下运行。

    before 运算符还支持负时间范围:

    $eventA : EventA(this before[-3m30s, -2m] $eventB)
    Copy to Clipboard Toggle word wrap

    如果第一个值大于第二个值,则决策引擎会自动撤销它们。例如,以下两种模式由决策引擎解释,其方式相同:

    $eventA : EventA(this before[-3m30s, -2m] $eventB)
    $eventA : EventA(this before[-2m, -3m30s] $eventB)
    Copy to Clipboard Toggle word wrap
    coincides

    此 operator 指定两个事件是否同时发生,其启动和结束时间相同。

    例如,如果 $eventA$eventB 的开始和结束时间戳都相同,则以下模式匹配:

    $eventA : EventA(this coincides $eventB)
    Copy to Clipboard Toggle word wrap

    如果事件开始和结束时间之间的距离不相同,则 coincides 操作器支持最多两个参数值:

    • 如果只给出一个参数,则使用该参数为两个事件的开始和结束时间设置阈值。
    • 如果指定了两个参数,则第一个参数用作开始时间的阈值,第二个参数则用作结束时间的阈值。

    以下模式使用 start 和 end 时间阈值:

    $eventA : EventA(this coincides[15s, 10s] $eventB)
    Copy to Clipboard Toggle word wrap

    如果满足以下条件,则模式匹配:

    abs($eventA.startTimestamp - $eventB.startTimestamp) <= 15s
    &&
    abs($eventA.endTimestamp - $eventB.endTimestamp) <= 10s
    Copy to Clipboard Toggle word wrap
    警告

    决策引擎不支持 coincides operator 的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。

    during

    此 operator 指定当前事件是否在关联的事件启动和结束时发生。当前事件必须在关联的事件启动后启动,且必须在关联事件结束前结束。(使用 coincides 操作符,开始和结束时间是相同的或几乎相同。)

    例如,如果 $eventA$eventB 启动后启动,并在 $eventB 结束前结束,则以下模式匹配:

    $eventA : EventA(this during $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    $eventB.startTimestamp < $eventA.startTimestamp <= $eventA.endTimestamp < $eventB.endTimestamp
    Copy to Clipboard Toggle word wrap

    Operator 期间 支持其中一个、两个或四个可选参数:

    • 如果定义了一个值,则这个值是两个事件的开始时间和两个事件结束时间之间的最大距离。
    • 如果定义了两个值,则这些值是一个阈值,当前事件开始时间和结束时间必须与相关的事件开始和结束时间相关。

      例如,如果值为 5s10s,则当前事件必须在关联事件启动后 5 到 10 秒之间启动,且必须在关联事件结束 5 秒和 10 秒之间结束。

    • 如果定义了四个值,则第一个值和第二个值是事件开始时间之间的最小和最大距离,第三个值和第四个值是两个事件结束时间之间的最小和最大距离。
    includes

    此 operator 指定在当前事件发生时相关的事件是否发生。关联的事件必须在当前事件启动后启动,且必须在当前事件结束前结束。(此操作器的行为是运算符行为的相反。)

    例如,如果 $eventB$eventA start 后启动,并在 $eventA 结束前结束,则以下模式匹配:

    $eventA : EventA(this includes $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    $eventA.startTimestamp < $eventB.startTimestamp <= $eventB.endTimestamp < $eventA.endTimestamp
    Copy to Clipboard Toggle word wrap

    includes 运算符支持 one、2 或四个可选参数:

    • 如果定义了一个值,则这个值是两个事件的开始时间和两个事件结束时间之间的最大距离。
    • 如果定义了两个值,则这些值是一个阈值,相关的事件开始时间和结束时间必须与当前事件启动和结束时间相关。

      例如,如果值为 5s10s,相关的事件必须在当前事件启动后 5 到 10 秒之间启动,且必须在当前事件结束 5 秒和 10 秒之间结束。

    • 如果定义了四个值,则第一个值和第二个值是事件开始时间之间的最小和最大距离,第三个值和第四个值是两个事件结束时间之间的最小和最大距离。
    完成

    此 operator 指定当前事件是否在关联的事件后启动,但两个事件同时终止。

    例如,如果 $eventA$eventB 启动后启动,并在 $eventB 结束时同时结束,则以下模式匹配:

    $eventA : EventA(this finishes $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    $eventB.startTimestamp < $eventA.startTimestamp
    &&
    $eventA.endTimestamp == $eventB.endTimestamp
    Copy to Clipboard Toggle word wrap

    完成 运算符支持一个可选参数,用于设置两个事件结束时间之间允许的最大时间:

    $eventA : EventA(this finishes[5s] $eventB)
    Copy to Clipboard Toggle word wrap

    如果满足以下条件,则此模式匹配:

    $eventB.startTimestamp < $eventA.startTimestamp
    &&
    abs($eventA.endTimestamp - $eventB.endTimestamp) <= 5s
    Copy to Clipboard Toggle word wrap
    警告

    决策引擎不支持 完成 Operator 的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。

    完成完成

    此 operator 指定关联的事件是否在当前事件后启动,但两个事件同时终止。(此操作器的行为与 完成 运算符行为相反。)

    例如,如果 $eventB$eventA 启动后启动,并在 $eventA 结束时同时结束,则以下模式匹配:

    $eventA : EventA(this finishedby $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    $eventA.startTimestamp < $eventB.startTimestamp
    &&
    $eventA.endTimestamp == $eventB.endTimestamp
    Copy to Clipboard Toggle word wrap

    Operator 完成的 一个可选参数,它设定两个事件结束时间之间允许的最大时间:

    $eventA : EventA(this finishedby[5s] $eventB)
    Copy to Clipboard Toggle word wrap

    如果满足以下条件,则此模式匹配:

    $eventA.startTimestamp < $eventB.startTimestamp
    &&
    abs($eventA.endTimestamp - $eventB.endTimestamp) <= 5s
    Copy to Clipboard Toggle word wrap
    警告

    决策引擎不支持 Operator 完成 的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。

    先决条件

    此 operator 指定当前事件在关联事件启动时是否同时结束。

    例如,如果 $eventA$eventB 启动时同时终止,则以下模式匹配:

    $eventA : EventA(this meets $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    abs($eventB.startTimestamp - $eventA.endTimestamp) == 0
    Copy to Clipboard Toggle word wrap

    meets 操作符支持一个可选参数,该参数设定当前事件结束时间和关联事件的开始时间之间允许的最大时间:

    $eventA : EventA(this meets[5s] $eventB)
    Copy to Clipboard Toggle word wrap

    如果满足以下条件,则此模式匹配:

    abs($eventB.startTimestamp - $eventA.endTimestamp) <= 5s
    Copy to Clipboard Toggle word wrap
    警告

    决策引擎不支持 满足 Operator 的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。

    满足

    此 operator 指定在当前事件启动时相关的事件是否同时结束。(此操作器的行为与 满足 运算符的行为相反。)

    例如,如果 $eventB$eventA 启动时同时终止,则以下模式匹配:

    $eventA : EventA(this metby $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    abs($eventA.startTimestamp - $eventB.endTimestamp) == 0
    Copy to Clipboard Toggle word wrap

    Operator 满足 的一个可选参数,该参数在关联事件结束时间和当前事件的开始时间之间设置最大距离:

    $eventA : EventA(this metby[5s] $eventB)
    Copy to Clipboard Toggle word wrap

    如果满足以下条件,则此模式匹配:

    abs($eventA.startTimestamp - $eventB.endTimestamp) <= 5s
    Copy to Clipboard Toggle word wrap
    警告

    决策引擎不支持 Operator 满足 的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。

    重叠

    此 operator 指定当前事件是否在关联事件启动前启动,并在相关的事件的时间范围内结束。当前事件必须在关联事件的开始和结束时间之间结束。

    例如,如果 $eventA $eventB 启动之前启动,然后在 $eventB 结束前结束,则以下模式匹配:

    $eventA : EventA(this overlaps $eventB)
    Copy to Clipboard Toggle word wrap

    overlaps operator 支持最多两个参数:

    • 如果定义了一个参数,则该值是关联事件的开始时间和当前事件结束时间之间的最大距离。
    • 如果定义了两个参数,则值为关联事件开始时间和当前事件的结束时间之间的最小距离(第一个值)和当前事件的结束时间。
    重叠:

    此 operator 指定关联的事件是否在当前事件启动前启动,并在当前事件发生的时间范围内结束。关联的事件必须在当前事件的开始和结束时间之间结束。(此操作器的行为与重叠的运算符行为相反。)

    例如,如果 $eventB $eventA 启动之前启动,然后在 $eventA 结束前结束,则以下模式匹配:

    $eventA : EventA(this overlappedby $eventB)
    Copy to Clipboard Toggle word wrap

    Operator 的重叠 支持最多两个参数:

    • 如果定义了一个参数,则该值是当前事件开始时间和关联事件结束时间之间的最大距离。
    • 如果定义了两个参数,则值是当前事件开始时间和关联事件结束时间之间的最小距离(第一个值)和最大距离(秒值)。
    启动

    此操作器指定两个事件是否同时启动,但当前事件在关联事件结束前结束。

    例如,如果 $eventA$eventB 同时启动,并且 $eventA 结束于 $eventB 结束,则以下模式匹配:

    $eventA : EventA(this starts $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    $eventA.startTimestamp == $eventB.startTimestamp
    &&
    $eventA.endTimestamp < $eventB.endTimestamp
    Copy to Clipboard Toggle word wrap

    start 运算符支持一个可选参数,该参数在两个事件的开始时间之间设置最大距离:

    $eventA : EventA(this starts[5s] $eventB)
    Copy to Clipboard Toggle word wrap

    如果满足以下条件,则此模式匹配:

    abs($eventA.startTimestamp - $eventB.startTimestamp) <= 5s
    &&
    $eventA.endTimestamp < $eventB.endTimestamp
    Copy to Clipboard Toggle word wrap
    警告

    决策引擎不支持 start 运算符的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。

    启动者

    此 operator 指定两个事件是否同时启动,但关联的事件在当前事件结束前结束。(此操作器的行为与 启动 操作器行为相反。)

    例如,如果 $eventA $eventB 同时启动,并且 $eventB 在 $eventA 结束之前,以下模式匹配:

    $eventA : EventA(this startedby $eventB)
    Copy to Clipboard Toggle word wrap

    您还可以使用以下方法表达此 Operator:

    $eventA.startTimestamp == $eventB.startTimestamp
    &&
    $eventA.endTimestamp > $eventB.endTimestamp
    Copy to Clipboard Toggle word wrap

    Operator 启动的 一个可选参数支持两个事件的开始时间之间设置最大距离:

    $eventA : EventA( this starts[5s] $eventB)
    Copy to Clipboard Toggle word wrap

    如果满足以下条件,则此模式匹配:

    abs( $eventA.startTimestamp - $eventB.startTimestamp ) <= 5s
    &&
    $eventA.endTimestamp > $eventB.endTimestamp
    Copy to Clipboard Toggle word wrap
    警告

    决策引擎不支持 Operator 启动 的负间隔。如果您使用负间隔,则决策引擎会生成一个错误。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat