|
<< Click to Display Table of Contents >> Navigation: Проект в MasterSCADA 4D > Работа с сообщениями > Формирование JSON-строки для фильтрации сообщений |
Программные имена тревог используются для фильтрации сообщений с помощью JSON в журналах или в ФБ для работы с сообщениями.
Фильтр задается в виде JSON-массива строк, где каждая строка содержит выражение с условиями, в следующем формате:
["Выражение с условиями 1","Выражение с условиями 2",...,"Выражение с условиями N"]
Каждое выражение фильтра объединяется по И (т. е. все условия внутри массива выполняются одновременно).
Внутри одного выражения допускается использование логических операторов.
Для записи условий поддерживаются два режима синтаксиса:
•упрощенный синтаксис, основанный на SQL-запросах;
•расширенный синтаксис - специализированный DSL MasterSCADA.
Особенности синтаксиса:
•Логические операторы: and, or
•Оператор вложенности :>работает только со строками. Он проверяет, является ли значение левого операнда (например, полное имя объекта) подстрокой правого операнда.
•Строки: в одинарных '...' или двойных кавычках с экранированием \"...\"
•Поиск подстроки: Contains
Ограничения синтаксиса:
•не поддерживаются имена полей на кириллице и других UTF-8 символах;
•нельзя проверить принадлежность сообщения к подобъекту экземпляра объекта.
Пример фильтра:
[ "Active=TRUE", "Severity <= 100 or Severity >= 900"], где Severity - приоритет, Active - активность. В этом случае будут выбраны только активные сообщения, у которых приоритет меньше или равен 100 или больше или равен 900.
Если параметр сообщения имеет строковый тип, то значение параметра указывается либо в одинарных кавычках ('...'), либо в двойных кавычках с экранированием (\"...\").
Примеры фильтров со строковыми параметрами:
•["EventFullObjectName = 'Объекты.Объект 1'"], где EventFullObjectName - полное имя объекта;
•["EventSourceName = \"Тревога 1\""], где EventSourceName - источник сообщений.
Для выполнения запроса поиска подстроки в строке используется оператор Contains.
Пример фильтра с оператором Contains:
["Message Contains 'Вкл'"], где Message - сообщение. При таких настройках фильтра будут отображаться все сообщения, в которых содержится подстрока "Вкл".
Специализированный DSL MasterSCADA 4D разработан для устранения ограничений упрощенного синтаксиса. Поддерживает строгую типизацию, UTF-8 и иерархические операции.
Тип |
Описание |
Формат записи |
Примеры |
BOOL |
Логическое |
true | false |
true |
LINT |
Целое число |
[1-9][0-9]* | "0"+ |
1234567890 ; 0 |
LREAL |
Дробное число |
обычный | экспоненциальный |
0.0 ; 0. ; 1.5 |
STRING |
Строка |
"str abc \" 1234" |
"string literal" |
DATE_TIME |
Дата и время |
#2012-01-06T01:23:45.678910 |
|
TIME_SPAN |
Интервал времени |
T#tsDay? tsHour? tsMin? tsSec? tsMs? |
T#1d2h30m45s500ms ; T#1.5d2.5h |
ITEM_ID |
ID элемента, путь в проекте |
${id:LINT (. s1mple_id )*} |
${id:14.param} |
ObjectID |
ID объекта, путь в проекте |
${oid:LINT (. utf8 path )*}) |
${oid:14.русскиебуквы} |
Variable |
Переменная |
${u8:any utf8} | s1mple_id |
variable_name |
Легенда:
Обозначение |
Формат |
simple_id |
[a-zA-Z_][a-zA-Z_0-9]* |
Оператор |
Синтаксис |
умножение |
"*" |
деление |
"/" |
сложение |
"+" |
вычитание |
"-" |
деление по модулю |
"%" |
не |
"!" или 'NOT' |
побитовое или |
"|" |
побитовое и |
"&" |
XOR |
"^" |
приведение к ObjectId |
"::ObjectId" |
приведение к ItemId |
"::ItemId" |
И |
"&&" или 'AND' |
или |
"||" или 'OR' |
равно |
"==" или "=" или 'Equal' |
не равно |
"!=" или "<>" или 'NotEqual' |
не равно |
"!=" или "<>" или 'NotEqual' |
больше либо равно |
">=" или 'MoreEqual' |
меньше либо равно |
"<=" или 'LessEqual' |
больше |
">" или 'More' |
меньше |
"<" или 'Less' |
входит ли |
'IN' или ":>" |
содержит ли |
'CONTAINS' |
В данном синтаксисе оператор :> (IN) работает в двух режимах:
•Для строк - как в упрощённом синтаксисе: проверяют, является ли левая строка подстрокой правой;
•Для ObjectID и ItemID - проверяет, является ли левый элемент дочерним по отношению к правому в иерархии проекта.
•Проверка принадлежности тревоги объекту (ObjectID):
["'Объекты.Объект 1.Ресурсы.Сообщения.Тревога 1'::ObjectId in 'Объекты.Объект 1'::ObjectId"]
["${oid:39151.Ресурсы.Сообщения.Тревога 1} in 'Объекты.Объект 1'::ObjectId"]
["'Объекты.Объект 1.Ресурсы.Сообщения.Тревога 1'::ObjectId in ${oid:39151}"]
["${oid:39151.Ресурсы.Сообщения.Тревога 1} in ${oid:39151}"]
•Проверка принадлежности тревоги объекту (ItemID):
["'Объекты.Объект 1.Ресурсы.Сообщения.Тревога 1'::ItemId in 'Объекты.Объект 1'::ItemId"]
["${id:39210} in 'Объекты.Объект 1'::ItemId"]
["'Объекты.Объект 1.Ресурсы.Сообщения.Тревога 1'::ItemId in ${oid:39151}"]
["${id:39210} in ${id:39151}"]
•Фильтрация по объекту "Экз_Библ_объекта" (не содержит квадратных скобок):
"ItemID in 'Объекты.Экз_Библ_объекта'::ObjectId"
•Фильтрация по приоритету и активности:
["Severity More 450 && Active NotEqual True"]
["Severity <= 414 OR Severity > 510"] -
["Severity = 200 || Severity = 201 || Severity = 202"]
•Фильтрация с поиском подстроки в полном имени объекта:
["Message CONTAINS \"Тревога\" AND EventFullObjectName CONTAINS 'фон 2'"]
•Фильтрация по типу события, названия источника и приоритету:
["UpdateType == 1 AND EventSourceName Equal \"Тревога 1\" && Severity > 300"]
Смотрите также: