过滤规则参数说明
事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。过滤规则必须和匹配的事件具有相同的结构。
本章节介绍过滤规则和事件匹配时的规则,以及构成过滤规则的参数:运算操作符、条件表达式和匹配字段。
匹配规则
过滤规则和事件匹配时,需要遵循以下规则:
- 顶级匹配字段只支持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”]}] |