文档首页/ 事件网格 EG/ 用户指南/ 事件规则/ 过滤规则参数说明
更新时间:2023-10-26 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”]}]