文档首页/ 事件网格 EG/ 用户指南/ 事件规则/ 过滤规则参数说明
更新时间:2024-10-23 GMT+08:00
分享

过滤规则参数说明

事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。过滤规则必须和匹配的事件具有相同的结构。

本章节介绍过滤规则和事件匹配时的规则,以及构成过滤规则的参数:运算操作符、条件表达式和匹配字段。

匹配规则

过滤规则和事件匹配时,需要遵循以下规则:

  • 顶级匹配字段只支持source、type、subject、data。
  • 顶级匹配必须包括source字段,且source只支持StringIn操作符。
  • data字段最多支持5个任意匹配字段,每个匹配字段最多嵌套5级。
  • 每个匹配字段的匹配条件最多支持5个,多个匹配条件间是“或”的关系。
  • 多个匹配字段间是“并且”的关系。
  • 同一层级相同的匹配字段定义多次,则以最后一次为准。

运算操作符

过滤规则和事件匹配时,使用的运算操作符如表1所示。

表1 运算操作符列表

操作符

输入值

条件值

说明

StringIn

String/String[]

String[] values

检查输入值是否与任一条件值完全匹配

StringNotIn

String/String[]

String[] values

检查输入值是否与所有条件值都不匹配

StringStartsWith

String/String[]

String[] values

检查输入值是否与任一条件值前缀匹配

StringNotStartsWith

String/String[]

String[] values

检查输入值是否与所有条件值前缀都不匹配

StringEndsWith

String/String[]

String[] values

检查输入值是否与任一条件值后缀匹配

StringNotEndsWith

String/String[]

String[] values

检查输入值是否与所有条件值后缀都不匹配

NumberIn

Number/Number[]

Number[] values

检查输入值是否与任一条件值完全匹配

NumberNotIn

Number/Number[]

Number[] values

检查输入值是否与所有条件值都不匹配

NumberLessThan

Number/Number[]

Number value

检查输入值是否与小于条件值

NumberNotLessThan

Number/Number[]

Number value

检查输入值是否与不小于(大于或等于)条件值

NumberGreaterThan

Number/Number[]

Number value

检查输入值是否与大于条件值

NumberNotGreaterThan

Number/Number[]

Number value

检查输入值是否与不大于(小于或等于)条件值

NumberInRange

Number/Number[]

Number[][] values

检查输入值是否在任一条件范围内

NumberNotInRange

Number/Number[]

Number[][] values

检查输入值是否不在任一条件范围内

IsNull

-

无

检查输入值是否为null或未定义

IsNotNull

-

无

检查输入值是否不为null或未定义

IsTrue

Boolean

无

检查输入值是否为true

IsNotTrue

Boolean

无

检查输入值是否不为true,即false

条件表达式

过滤规则和事件匹配时,使用的条件表达式如表2所示。

表2 条件表达式列表

字段名

类型

必选

说明

op

String

是

运算操作符

value

JSON Type

否

运算符为单值比较时,操作条件值

values

JSON Array

否

运算符为范围比较时,操作条件范围

匹配字段

过滤规则和事件匹配时,使用的匹配字段如表3所示。

表3 匹配字段列表

字段名

条件值类型

示例说明

source

JSON对象数组

事件源,条件值位于JSON数组中,source字段只支持“StringIn”

示例: [{“op”: “StringIn”, “values”: [“HC.OBS”]}]

type

JSON对象数组

事件类型,条件值位于JSON数组中

示例: [{“op”: “StringIn”, “values”: [“object:put”]}]

subject

JSON对象数组

事件主体,条件值位于JSON数组中

示例: [{“op”: “StringEndsWith”, “values”: [“.jpg”]}]

data

JSON对象

事件数据,条件值位于JSON对象中,条件值为子匹配字段,支持最多5层嵌套结构

示例: {“state”: [{“op”: “StringIn”, “values”: [“running”]}]

相关文档