Структура правил
Структура записи правил
Каждое правило состоит из условий (conditions), при выполнении которых к данным применяются действия (actions).
Поле actions является обязательным и должно содержать хотя бы одно действие.
При отсутствии поля conditions указанные действия будут выполняться при каждом получении данных сервером.
Структура записи одного правила:
[
{
"conditions": [...],
"actions": [...]
}
]
Структура записи нескольких правил:
[
{
"conditions": [...],
"actions": [...]
},
{
"conditions": [...],
"actions": [...]
},
...
]
Структура записи условий
Формат записи условия имеет следующую обязательную конструкцию:
"conditions": [{
"_field": {
"name": "...",
"value": {...}
}
}],
где
-
_field - заголовок отдельного условия,
-
name - имя метрики из таблицы данных, значение которой необходимо протестировать.
Обязательно использовать с именем указатель, позволяющий определить какое значение должно быть протестировано:
-
current (присвоенное метрике ранее),
-
new (только что полученное).
-
-
value - значение метрики, с которым сравнивается текущее значение, и оператор сравнения.
Формат записи поля value:
"Оператор": "Значение"
Возможные операторы:
Оператор |
Расшифровка |
_eq |
Равно |
_neq |
Не равно |
_lt |
Меньше |
_lte |
Меньше или равно |
_gt |
Больше |
_gte |
Больше или равно |
_ct |
Содержит |
_nct |
Не содержит |
_m |
Совпадает |
Пример условия (если текущее значение метрики packetLossPercentile меньше десяти):
"conditions": [
{
"_field": {
"name": "current.packetLossPercentile",
"value": {
"_lt": "10"
}
}
}
],
Вместо одного условия можно записать блок из нескольких условий. В таком случае действия выполнятся только при всех сработавших условиях в блоке.
"conditions": [
{
"_field": {
"name": "...",
"value": {...}
}
},
{
"_field": {
"name": "...",
"value": {...}
}
}
],
"actions": [...
]
Структура записи действий
В поле actions перечисляются типы действий (type) и дополнительные поля, которые характерны для того или иного типа.
Структура записи правила с одним действием:
[
{
"conditions": [...],
"actions": [
{
"type": "extend"
}
]
}
]
Действия можно комбинировать. В таком случае они выполняются в порядке следования:
[
{
"conditions": [...],
"actions": [
{
"type": "extend"
},
{
"type": "drop"
}
]
}
]
При отсутствии условий действия можно комбинировать двумя равнозначными способами:
[
{
"actions": [
{
"type": "extend"
},
{
"type": "drop"
}
]
}
]
[
{
"actions": [
{
"type": "extend"
}
]
},
{
"actions": [
{
"type": "drop"
}
]
}
]
Типы действий
Выполняются все действия, у которых сработали условия или без условий, в порядке записи в редакторе. Если несколько действий затрагивают одну и ту же метрику, приоритет будет у последнего. |
При использовании правил SET и DROP рекомендуется расширять таблицу всеми метриками первым действием, иначе метрики, не указанные в правилах, не будут обновляться в таблице данных:
|
SET - создание новой или переопределение существующей метрики
Данное действие имеет два обязательных поля:
-
Field - имя метрики, куда необходимо записать значение (при отсутствии метрики с таким именем она будет добавлена в таблицу данных);
-
Value - значение, которое необходимо записать в метрику.
В качестве значения (value) можно использовать:
-
числовые значения, например, 10;
-
текстовые данные, например, "text";* значения других метрик из таблицы данных с указателями current и new, например, "{{new.temperature}}";
-
формулы с применением метрик из таблицы данных с указателями current и new, например, "{{current.temperature}}-{{new.temperature}}".
Структура записи правила SET:
[
{
"actions": [
{
"type": "extend"
},
{
"type": "set",
"field": "metric_name",
"value": "metric_value"
}
]
}
]
EXTEND - расширение таблицы новыми метриками
Это действие дополняет таблицу данных новыми метриками. Метрики, которые уже присутствуют в таблице, удалены не будут.
Действие EXTEND имеет два необязательных взаимоисключающих поля:
-
Include - имена метрик, которые необходимо добавить к существующим;
-
Exclude - имена метрик, которые необходимо игнорировать при добавлении.
Пример 1. Расширение таблицы данных всеми новыми метриками.
[
{
"actions": [
{
"type": "extend"
}
]
}
]
Пример 2. Расширение таблицы данных только указанными новыми метриками.
[
{
"actions": [
{
"type": "extend",
"include": ["metric_name_1", "metric_name_2", ...]
}
]
}
]
Пример 3. Расширение таблицы данных всеми новыми метриками, кроме указанных.
[
{
"actions": [
{
"type": "extend",
"exclude": ["metric_name_3", "metric_name_4", ...]
}
]
}
]
DROP - удаление метрик
Это действие удаляет метрики из таблицы данных.
Действие DROP имеет два необязательных взаимоисключающих поля:
-
Include - имена метрик, которые необходимо удалить;
-
Exclude - имена метрик, которые необходимо оставить.
Пример 1. Удаление всех метрик.
[
{
"actions": [
{
"type": "drop"
}
]
}
]
Пример 2. Удаление указанных метрик.
[
{
"actions": [
{
"type": "extend"
},
{
"type": "drop",
"include": ["metric_name_1", "metric_name_2", ...]
}
]
}
]
Пример 3. Удаление всех метрик, кроме указанных.
[
{
"actions": [
{
"type": "extend"
},
{
"type": "drop",
"exclude": ["metric_name_3", "metric_name_4", ...]
}
]
}
]