过滤规则参数说明
事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。过滤规则必须和匹配的事件具有相同的结构。
本章节介绍过滤规则和事件匹配时的规则,以及构成过滤规则的参数:运算操作符、条件表达式和匹配字段。
匹配规则
过滤规则和事件匹配时,需要遵循以下规则:
- 顶级匹配字段只支持source、type、subject、data。
- 顶级匹配必须包括source字段,且source只支持StringIn操作符。
- data字段最多支持5个任意匹配字段,每个匹配字段最多嵌套5级。
- 每个匹配字段的匹配条件最多支持5个,多个匹配条件间是“或”的关系。
- 多个匹配字段间是“并且”的关系。
- 同一层级相同的匹配字段定义多次,则以最后一次为准。
运算操作符
过滤规则和事件匹配时,使用的运算操作符如表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所示。
匹配字段
过滤规则和事件匹配时,使用的匹配字段如表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”]}] |