Функции модуля трансформации#
Функцией является выражение, состоящее из идентификатора и разделенных запятой списка аргументов в круглых скобках.
FUNCTION = *(ALPHA / DIGIT / "_" / "-") "(" [ *LWSP ] VALUE [ *LWSP ] [ *( "," [ *LWSP ] VALUE [ *LWSP ] ) ] ")"
<имя функции>(<список аргументов>)
Если функция не принимает ни одного аргумента, то необходимо указывать пустые круглые скобки.
Общие функции преобразования элементов сообщения#
Проверка существования элемента, exists#
ABNF#
EXISTS_FUNCTION = ( "exists" / "Exists" / "EXISTS" ) "(" [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
exists(IN.root.test)
Exists($variable)
EXISTS($variable.test)
Функция определяет, присутствует ли аргумент или нет, возвращает истину в случае существования аргумента, ложь — в противном случае. В случае отсутствия значения у элемента сообщения функция вернет истину.
Проверка пустого значения, empty#
ABNF#
EMPTY_FUNCTION = ( "empty" / "Empty" / "EMPTY" ) "(" [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
empty(IN.root.test)
Empty($variable)
EMPTY($variable.test)
Функция определяет, является ли элемент пустым или нет.
json - элемент будет считаться пустым, если он null или отсутствует
xml - элемент будет считаться пустым, если элемент отсутствует или значения элемента не определено (
<test></test>)
Coalesce#
ABNF#
COALESCE_FUNCTION = ( "coalesce" / "Coalesce" / "COALESCE" ) "(" [ *LWSP ] VALUE [ *LWSP ] [ *( "," [ *LWSP ] VALUE [ *LWSP ] ) ] ")"
Пример#
Coalesce(IN.root.test1, $variable, "DEFAULT_VALUE")
COALESCE(IN.root.test2, "DEFAULT_VALUE")
Функция, возвращающая первый элемент из последовательности, который не является null.
Пустой объект, emptyObject#
ABNF#
GET_EMPTY_OBJECT_FUNCTION = ( "emptyObject" / "EmptyObject" ) "()"
Пример#
emptyObject()
EmptyObject()
define a = emptyObject()
$a.targetRoot.targetTest.target = IN.root.test1.test12
out = $a
Функция возвращает пустой элемент ({}), который возможно заполнять.
Удаление элемента, remove#
ABNF#
REMOVE_FUNCTION = ( "remove" / "Remove" / "REMOVE" ) "(" [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
remove(IN.root.test)
Remove($variable)
REMOVE($variable.test)
Функция удаляет элемент исходящего сообщения. Удалению подвергается вся ветвь, включая дочерние элементы.
Получение длины элемента сообщения, length#
ABNF#
LENGTH_FUNCTION = ( "length" / "Length" / "LENGTH" ) "(" [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
length(IN.root.test)
Length($variable)
LENGTH($variable.test[])
Функция удаляет элемент исходящего сообщения. Удалению подвергается вся ветвь, включая дочерние элементы.
Прерывание трансформации, return#
ABNF#
RETURN_FUNCTION = ( "return" / "Return" / "RETURN" ) "(" [ *LWSP ] [ VALUE ] [ *LWSP ] ")"
Пример#
return(IN.root.test)
return()
Return($variable)
RETURN($variable.test)
Функция прерывает выполнение трансформации на текущем шаге. Все дальнейшие шаги трансформации будут проигнорированы.
Результатом трансформации станет выполнение шагов до вызова данной функции.
Получить значение переданного аргумента можно методом returnStatus класса ru.sbt.cep.mapper.grammar.Transformer, передав результат трансформации.
В случае вызова функции без аргументов будет возвращена пустая строка.
Получение имени поля, getFieldName#
ABNF#
GET_FIELD_NAME_FUNCTION = ( "getFieldName" / "GetFieldName" ) "(" [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
getFieldName(IN.root.test[<])
GetFieldName($variable)
Функция получения имени поля, содержащего указанное значение.
Получение массива значений полей объекта, getObjectFields#
ABNF#
GET_OBJECT_FIELDS_FUNCTION = ( "getObjectFields" / "GetObjectFields" ) "(" [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
getObjectFields(IN.root.test)
GetObjectFields($variable)
Функция получения значений полей объекта, если передан не объект, то возвращает пустой массив.
Преобразование элемента сообщения в xml-формат#
ABNF#
TRANSFORM_TO_XML_FUNCTION = ("TransformToXml" / "transformToXml" ) "(" [ *LWSP ] VALUE [ *LWSP ] [ "," [ *LWSP ] VALUE [ *LWSP ] ] ")"
Пример#
TransformToXml(IN.source)
transformToXml(IN.source, "sourceTest")
Аргументы#
Адрес элемента входящего сообщения, переменная.
Наименование корневого элемента сообщения в xml-формате(опциональный параметр).
Особенности: если в первый аргумент функции передать константное значение, то функция преобразует значение в строковое представление.
Функции преобразования строк#
Вхождение подстроки в строку, contains#
ABNF#
CONTAINS_FUNCTION = ( "contains" / "Contains" / "CONTAINS" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
contains(IN.root.test, "TEST")
Contains($variable, "TEST")
CONTAINS($variable.test, "Test")
Contains(IN.root.test, 15)
Contains(IN.root.test, 34.76)
Функция определяет, содержит ли первый аргумент значение второго аргумента, при этом оба аргумента преобразуются в строку.
Проверка префикса, startsWith#
ABNF#
STARTS_WITH_FUNCTION = ( "startsWith" / "StartsWith" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] [ "," [ *LWSP ] VALUE [ *LWSP ] ] ")"
Пример#
startsWith("Test", IN.root.test, 3)
StartsWith("Test", IN.root.test)
StartsWith("Test", $variable)
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
Строковое значение, искомый префикс.
Целочисленное значение, индекс начала поиска, необязательный параметр, по умолчанию 0.
Функция проверяет, начинается ли элемент во входящем сообщении с префикса, начиная с указанного индекса.
Проверка суффикса, endsWith#
ABNF#
ENDS_WITH_FUNCTION = ( "endsWith" / "EndsWith" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
endsWith("Test", IN.root.test)
EndsWith("Test", IN.root.test)
EndsWith("Test", $variable)
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
Строковое значение, искомый суффикс.
Функция проверяет, заканчивается ли элемент указанным значением суффикса.
Проверка регулярного выражения, regExp#
ABNF#
ENDS_WITH_FUNCTION = ( "regExp" / "RegExp" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
regExp("\\w*/\\d{4}", IN.root.test)
RegExp("\\w*/\\d{4}", $var)
Аргументы#
Регулярное выражение.
Значение для проверки, адрес элемента сообщения, переменная, переменная окружения.
Функция проверяет, соответствует ли элемент заданному регулярному выражению.
Получение подстроки, subString#
ABNF#
SUBSTRING_FUNCTION = ( "subString" / "SubString" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
subString(IN.root.test, 5, 7)
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
beginIndex — целочисленное значение, начальный индекс.
endIndex — целочисленное значение, индекс завершения подстроки.
Функция возвращает подстроку строкового значения элемента, начиная с символа, заданного индексом beginIndex, и заканчивая символом endIndex-1.
Получение индекса первого вхождения подстроки#
ABNF#
INDEX_OF_FUNCTION = ( "indexOf" / "IndexOf" ) "(" VALUE "," [ *LWSP ] VALUE ")"
INDEX_OF_WITH_OFFSET = ( "indexOf" / "IndexOf" ) "(" VALUE "," [ *LWSP ] VALUE "," [ *LWSP ] VALUE ")"
Пример#
IN.root.test1.test11 = "test11"
indexOf(IN.root.test1.test11, "t") // Результат 0
indexOf(IN.root.test1.test11, "es") // Результат 1
indexOf(IN.root.test1.test11, "t", 2) // Результат 3
indexOf(IN.root.test1.test11, "anything") // Результат -1
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
sequence — строка, подстрока для поиска.
offset — целочисленное значение, индекс смещения стартовой позиции поиска.
Функция возвращает целочисленное значение позиции найденной подстроки.
Получение индекса последнего вхождения подстроки#
ABNF#
LAST_INDEX_OF_FUNCTION = ( "lastIndexOf" / "LastIndexOf" ) "(" VALUE "," [ *LWSP ] VALUE ")"
LAST_INDEX_OF_WITH_OFFSET = ( "lastIndexOf" / "LastIndexOf" ) "(" VALUE "," [ *LWSP ] VALUE "," [ *LWSP ] VALUE ")"
Пример#
IN.root.test1.test11 = "test11"
lastIndexOf(IN.root.test1.test11, "t") // Результат 3
lastIndexOf(IN.root.test1.test11, "es") // Результат 1
lastIndexOf(IN.root.test1.test11, "t", 2) // Результат 0
lastIndexOf(IN.root.test1.test11, "anything") // Результат -1
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
sequence — строка, подстрока для поиска.
offset — целочисленное значение, индекс ограничения верхней границы позиции поиска.
Функция возвращает целочисленное значение позиции найденной подстроки.
Разделение строки на несколько строк, split#
ABNF#
SPLIT_FUNCTION = ( "split" / "Split" / "SPLIT" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
split(IN.root.test, "|")
Split($variable, ",")
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
Разделитель для подстрок.
Функция возвращает массив строковых значений, расположенных между разделителем.
Замена всех вхождений подстрок новой последовательностью символов#
ABNF#
REPLACE_FUNCTION = ( "replace" / "Replace" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ]")"
Пример#
replace(IN.root.test1.test, "ABC", "123")
replace($variable, IN.root.testString, $variable)
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
Подстрока(последовательность символов) подлежащая замене (нельзя использовать регулярные выражения).
Последовательность символов, которой будет заменена найденная подстрока.
Функция возвращает строковое значение с проведённой заменой всех вхождений найденной подстроки.
Замена первого вхождения подстроки новой последовательностью символов#
ABNF#
REPLACE_FIRST_FUNCTION = ( "replaceFirst" / "ReplaceFirst" / "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
replaceFirst(IN.root.test1.test, "abc", "qwe")
replaceFirst(IN.root.test1.test, "\\d{5}", "***")
replace($variable, "_!!_", $variable)
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
Регулярное выражение, которому должна соответствовать подстрока.
Последовательность символов, которой будет заменена найденная подстрока.
Функция возвращает строковое значение, с проведённой заменой первого вхождения найденной подстроки.
Замена всех вхождений подстроки новой последовательностью символов#
ABNF#
REPLACE_ALL_FUNCTION = ( "replaceAll" / "ReplaceAll" / "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
replaceAll(IN.root.test1.test, "abc", "qwe")
replaceAll(IN.root.test1.test, "\\d{5}", "***")
replaceAll($variable, "_!!_", $variable)
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
Регулярное выражение, которому должна соответствовать подстрока.
Последовательность символов, которой будет заменена найденная подстрока.
Функция возвращает строковое значение, с проведённой заменой всех вхождений найденной подстроки.
Форматирование строк#
ABNF#
FORMAT_FUNCTION = ( "format" / "Format" ) "(" [ *LWSP ] QSTRING [ *LWSP ] [ *( "," [ *LWSP ] VALUE [ *LWSP ] ) ] ")"
Пример#
OUT.targetRoot.targetTest.result = format("a = %s, b = %f, c = %.5f, d = %%, e = %b", "test", toDouble(567.4534 + 234.12), 234.45, true)
OUT.targetRoot.targetTest.result = format("a = %s, b = %.2f, c = %.3f, d = %%%d, e = %b", $variable_1, $variable_3, $variable_5, toInt(54+46), IN.root.test1.test17)
OUT.targetRoot.targetTest.result = Format("a = %s, b = %.2f, c = %.3f, d = %%, e = %b", "test", IN.root.test1.test16, 234.45, true)
Аргументы функции аналогичны методу String.format(pattern, args …)
pattern — шаблон сообщения, сформированный согласно определённым правилам.
args — аргументы различных типов, необходимые для формирования строки на основе шаблона. Дополнительная информация по формированию шаблона сообщения
Функция возвращает строковое значение.
Преобразование входящего элемента в строку#
Функция возвращает строковое представление элемента входящего сообщения.
ABNF#
NODE_TO_STRING_FUNCTION = ( "NodeToString" / "nodeToString" ) "(" [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
OUT.root.test = nodeToString(IN.root.test1)
Функции преобразования даты и времени#
Текущая дата и время в миллисекундах, getCurrentTimeMillis#
ABNF#
GET_CURRENT_TIME_MILLIS_FUNCTION = ( "getCurrentTimeMillis" / "GetCurrentTimeMillis" ) "()"
Пример#
getCurrentTimeMillis()
GetCurrentTimeMillis()
Функция возвращает текущее значение UnixTime в миллисекундах.
Текущая дата и время в заданном формате, getCurrentTimeFromFormat#
ABNF#
GET_CURRENT_TIME_FROM_FORMAT_FUNCTION = ( "getCurrentTimeFromFormat" / "GetCurrentTimeFromFormat" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
getCurrentTimeFromFormat("yyyy-MM-dd'T'HH:mm:ss")
Функция возвращает текущее значение UnixTime в заданном формате.
Преобразование даты и времени в миллисекунды, getTimeMillisFromDateTime#
ABNF#
GET_TIME_MILLIS_FROM_DATE_TIME_FUNCTION = ( "getTimeMillisFromDateTime" / "GetTimeMillisFromDateTime" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
getTimeMillisFromDateTime("yyyy-MM-dd'T'HH:mm:ss", IN.root.dateTime)
Аргументы#
Формат даты и времени.
Адрес элемента входящего сообщения, переменная окружения, переменная.
Функция конвертирует строки с датой и временем в заданном формате в значение UnixTime в миллисекундах.
Преобразование миллисекунд в дату и время, getDateTimeFromTimeMillis#
ABNF#
GET_DATE_TIME_FROM_TIME_MILLIS_FUNCTION = ( "getDateTimeFromTimeMillis" / "GetDateTimeFromTimeMillis" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
getTimeMillisFromDateTime("yyyy-MM-dd'T'HH:mm:ss", IN.root.timeMillis)
getTimeMillisFromDateTime("yyyy-MM-dd", IN.root.timeMillis)
Аргументы#
Формат даты и времени.
Адрес элемента входящего сообщения, переменная окружения, переменная.
Функция конвертирует значение UnixTime в миллисекундах в строковое значение с датой и временем в заданном формате.
Преобразование даты и времени, convertDateTime#
ABNF#
CONVERT_DATE_TIME_FUNCTION = ( "convert" / "Convert" ) ( "DateTime" / "Date" / "Time" ) "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
convertDateTime("yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd'T'HH", IN.root.dateTime)
convertDate("yyyy-MM-dd", "yyyy MM dd", IN.root.date)
convertTime("HH:mm:ss", "HH/mm/ss", IN.root.time)
Аргументы#
oldFormat — текущий формат даты и времени.
newFormat — новый формат даты и времени.
Адрес элемента входящего сообщения, переменная окружения, переменная.
Функция конвертации строки с датой и временем в формате oldFormat в строку с датой и временем в формате newFormat.
Сравнение даты и времени#
ABNF#
СOMPARE_DATE_TIME_FUNCTION = "compare" ( "DateTime" / "Date" / "Time" ) ( "Equal" / "Less" / "LessOrEqual" / "More" / "MoreOrEqual" )
[ "Round" ( "Year" / "Month" / "Day" / "Hour" / "Minute" / "Second" ) ] "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Равенство#
Пример#
CompareDateTimeEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
CompareDateEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
CompareTimeEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
Аргументы#
format — формат даты и времени.
dateTime1 — адрес элемента входящего сообщения, переменная окружения, переменная.
dateTime2 — адрес элемента входящего сообщения, переменная окружения, переменная.
Функция сравнения двух дат и времени dateTime1 и dateTime2 в формате format. Возвращает результат истина если дата первого операнда наступает раньше второго операнда, в противном случае ложь. Сравнение производится с точностью до:
миллисекунд, без суффикса
секунд RoundSecond
минут RoundMinute
часов RoundHour
дней RoundDay
месяца RoundMonth
года RoundYear
Меньше#
Пример#
СompareDateTimeLess("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLess("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLess("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
Аргументы#
format — формат даты и времени.
dateTime1 — адрес элемента входящего сообщения, переменная окружения, переменная.
dateTime2 — адрес элемента входящего сообщения, переменная окружения, переменная.
Функция сравнения двух дат и времени dateTime1 и dateTime2 в формате format. Возвращает результат истина если дата первого операнда наступает раньше второго операнда, в противном случае ложь.
Сравнение производится с точностью до:
миллисекунд, без суффикса
секунд RoundSecond
минут RoundMinute
часов RoundHour
дней RoundDay
месяца RoundMonth
года RoundYear
Меньше, либо равно#
Пример#
СompareDateTimeLessOrEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessOrEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessOrEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessOrEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessOrEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessOrEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeLessOrEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessOrEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessOrEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessOrEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessOrEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessOrEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessOrEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateLessOrEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessOrEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessOrEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessOrEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessOrEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessOrEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessOrEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeLessOrEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
Аргументы#
format — формат даты и времени.
dateTime1 — адрес элемента входящего сообщения, переменная окружения, переменная.
dateTime2 — адрес элемента входящего сообщения, переменная окружения, переменная.
Функция сравнения двух дат и времени dateTime1 и dateTime2 в формате format. Возвращает результат истина если дата первого операнда наступает раньше второго операнда или равна ему, в противном случае ложь.
Сравнение производится с точностью до:
миллисекунд, без суффикса
секунд RoundSecond
минут RoundMinute
часов RoundHour
дней RoundDay
месяца RoundMonth
года RoundYear
Больше#
Пример#
СompareDateTimeMore("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMore("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMore("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
Аргументы#
format — формат даты и времени.
dateTime1 — адрес элемента входящего сообщения, переменная окружения, переменная.
dateTime2 — адрес элемента входящего сообщения, переменная окружения, переменная.
Функция сравнения двух дат и времени dateTime1 и dateTime2 в формате format. Возвращает результат истина если дата первого операнда наступает позже второго операнда, в противном случае ложь.
Сравнение производится с точностью до:
миллисекунд, без суффикса
секунд RoundSecond
минут RoundMinute
часов RoundHour
дней RoundDay
месяца RoundMonth
года RoundYear
Больше, либо равно#
Пример#
СompareDateTimeMoreOrEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreOrEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreOrEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreOrEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreOrEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreOrEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateTimeMoreOrEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreOrEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreOrEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreOrEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreOrEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreOrEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreOrEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareDateMoreOrEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreOrEqual("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreOrEqualRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreOrEqualRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreOrEqualRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreOrEqualRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreOrEqualRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
СompareTimeMoreOrEqualRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
Аргументы#
format — формат даты и времени.
dateTime1 — адрес элемента входящего сообщения, переменная окружения, переменная.
dateTime2 — адрес элемента входящего сообщения, переменная окружения, переменная.
Функция сравнения двух дат и времени dateTime1 и dateTime2 в формате format. Возвращает результат истина если дата первого операнда наступает позже второго операнда или равна ему, в противном случае ложь.
Сравнение производится с точностью до:
миллисекунд, без суффикса
секунд RoundSecond
минут RoundMinute
часов RoundHour
дней RoundDay
месяца RoundMonth
года RoundYear
Подсчет интервала времени#
ABNF#
INTERVAL_DATE_TIME_FUNCTION = "intervalDateTime" [ "Round" ( "Year" / "Month" / "Day" / "Hour" / "Minute" / "Second" ) ]
"(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
IntervalDateTime("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
IntervalDateTimeRoundSecond("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
IntervalDateTimeRoundMinute("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
IntervalDateTimeRoundHour("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
IntervalDateTimeRoundDay("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
IntervalDateTimeRoundMonth("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
IntervalDateTimeRoundYear("dd.MM.yyyy'T'HH:mm:ss.SSS", in.root.testDate, "16.03.2020T16:51:40.350")
Аргументы#
format — формат даты и времени.
dateTime1 — начало интервала, адрес элемента входящего сообщения, переменная окружения, переменная.
dateTime2 — конец интервала, входящего сообщения, переменная окружения, переменная.
Функция вычисления интервала времени между двумя операндами dateTime1 и dateTime2 в формате format. Если второй операнд наступает раньше первого, то результат функции будет отрицательным.
Единицы измерения результата:
миллисекунды, без суффикса
секунды RoundSecond
минуты RoundMinute
часы RoundHour
дни RoundDay
месяцы RoundMonth
годы RoundYear
Функции логирования данных#
ABNF#
LOG_FUNCTION = ("info" / "Info" / "INFO" / "error" / "Error" / "ERROR" / "warn" / "Warn" / "WARN" /
"debug" / "Debug" / "DEBUG" / "trace" / "Trace" / "TRACE") "(" [[ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ]] ")"
Пример#
Trace("Trace data")
Trace("Trace data", "eventId")
Trace("Trace data", "eventId", "sourceTopic")
Trace("Trace data", "eventId", "sourceTopic", "targetTopic")
trace("Trace data", "eventId", "sourceTopic", "targetTopic")
TRACE("Trace data", "eventId", "sourceTopic", "targetTopic")
Debug("Debug data", "eventId", "sourceTopic", "targetTopic")
debug("Debug data", "eventId", "sourceTopic", "targetTopic")
DEBUG("Debug data", "eventId", "sourceTopic", "targetTopic")
Info("Info data", "eventId", "sourceTopic", "targetTopic")
info("Info data", "eventId", "sourceTopic", "targetTopic")
INFO("Info data", "eventId", "sourceTopic", "targetTopic")
Warn("Warn data", "eventId", "sourceTopic", "targetTopic")
warn("Warn data", "eventId", "sourceTopic", "targetTopic")
WARN("Warn data", "eventId", "sourceTopic", "targetTopic")
Error("Error data", "eventId", "sourceTopic", "targetTopic")
error("Error data", "eventId", "sourceTopic", "targetTopic")
ERROR("Error data", "eventId", "sourceTopic", "targetTopic")
Аргументы#
message — сообщение (обязательный параметр!).
eventId — ID события (необязательный параметр).
sourceTopic — имя топика, откуда пришло событие (необязательный параметр).
targetTopic — имя целевого топика, куда направляется событие (необязательный параметр).
Каждая из функций формирует лог с сообщением в json-формате на одноименный уровень логирования.
{"timeStamp":"2020-09-17T16:35:51.040+03:00","eventId":"5643","sourceTopic":"SOURCE_TOPIC","targetTopic":"TARGETTOPIC","message":"log message"}
В случае если какой-либо из параметров не определён, то значение этого параметра в логе будет отображаться значение Undefined Например: Info("log_message")
{"timeStamp":"2020-09-17T16:35:51.040+03:00","eventId":"Undefined","sourceTopic":"Undefined","targetTopic":"Undefined","message":"log_message"}
Info("log_message", 5i)
{"timeStamp":"2020-09-17T16:35:51.040+03:00","eventId":"5","sourceTopic":"Undefined","targetTopic":"Undefined","message":"log_message"}
Info("log_message", 5i, "Topic_1")
{"timeStamp":"2020-09-17T16:35:51.040+03:00","eventId":"5","sourceTopic":"Topic_1","targetTopic":"Undefined","message":"log_message"}
Info("log_message", 5i, "Topic_1", "Topic_2")
{"timeStamp":"2020-09-17T16:35:51.040+03:00","eventId":"5","sourceTopic":"Topic_1","targetTopic":"Topic_2","message":"log_message"}
Функции генерации идентификаторов#
UUID#
ABNF#
GENERATE_ID_FUNCTION = "generateId()"
Пример#
generateId()
Функция генерирует идентификатор согласно регулярному выражению "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[8-9a-bA-B][0-9a-fA-F]{3}-[0-9a-fA-F]{12}".
RqUID 16 символов#
ABNF#
GENERATE_ID16_FUNCTION = "generateId16()"
Пример#
generateId16()
Функция генерирует идентификатор согласно регулярному выражению "([0-9]|[a-f]|[A-F]){16}".
RqUID 32 символов#
ABNF#
GENERATE_ID32_FUNCTION = "generateId32()"
Пример#
generateId32()
Функция генерирует идентификатор согласно регулярному выражению "[0-9a-fA-F]{8}[0-9a-fA-F]{4}4[0-9a-fA-F]{3}[8-9a-bA-B][0-9a-fA-F]{3}[0-9a-fA-F]{12}".
Математические функции#
ABS#
Вычисляет абсолютное значение аргумента.
ABNF#
ABS_FUNCTION = "abs" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
abs(23i)
abs(IN.root.value)
abs($variable)
abs($variable - 56*5)
Round#
Вычисляет значение, округленное до ближайшего целого числа.
ABNF#
ROUND_FUNCTION = "round" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
round(123.4)
round(IN.root.value)
round($variable)
round(5*sqrt(54 - $variable + 4))
Floor#
Вычисляет наибольшее целое число, которое меньше или равно аргументу.
ABNF#
FLOOR_FUNCTION = "floor" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
floor(184.75)
floor(IN.root.value)
floor($variable)
floor(52 + IN.root.test)
EXP#
Возвращает основание натурального логарифма, возведенное в степень аргумента функции.
ABNF#
EXP_FUNCTION = "exp" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
exp(184.75)
exp(IN.root.value)
exp($variable)
exp(71 + 453)
Negate#
Вычисляет значение, противоположное аргументу по знаку.
ABNF#
NEGATE_FUNCTION = "negate" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
negate(184) = -184
negate(IN.root.value)
negate($variable)
negate($variable + IN.root.test)
NegateExact#
Вычисляет значение, противоположное аргументу по знаку и преобразует число в тип Long. В случае если вычисленное значение будет меньше чем Long.MIN_VALUE, то будет выброшено исключение java.lang.ArithmeticException.
ABNF#
NEGATE_EXACT_FUNCTION = "negateExact" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
negate(184) = -184
negate(IN.root.value)
negate($variable)
negate(sqrt(16))
SQRT#
Вычисляет квадратный корень аргумента функции.
ABNF#
SQRT_FUNCTION = "sqrt" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
sqrt(9) = 3
sqrt(IN.root.value)
sqrt($variable)
sqrt(sqrt($variable))
POW#
pow(arg_1, arg_2) — вычисляет значение, равное arg_1 возведенному в степень arg_2.
ABNF#
POW_FUNCTION = "pow" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
pow(2, 4) = 16
pow(IN.root.value_1, IN.root.value_2)
pow($variable_1, $variable_2)
Max#
max(arg_1, arg_2) — возвращает максимальное число из arg_1 и arg_2.
ABNF#
MAX_FUNCTION = "pow" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
max(16, 32) = 32
max(IN.root.value_1, IN.root.value_2)
max($variable_1, $variable_2)
Min#
min(arg_1, arg_2) — возвращает минимальное число из arg_1 и arg_2.
ABNF#
MIN_FUNCTION = "pow" "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
min(16, 32) = 32
min(IN.root.value_1, IN.root.value_2)
min($variable_1, $variable_2)
Функции преобразования числовых типов#
ABNF#
CONVERT_NUMERIC_TYPE_FUNCTION = ("toInt" / "toLong" / "toDouble" / "toDecimal") "( [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
toInt(10056746L)
toLong(12342d)
toDecimal(10345i)
toDouble(134L)
toLong(IN.root.value)
toLong($variable)
toLong(abs(-4.5))
toInt(false)
toDouble("456")
Функции преобразования числовых типов могут также работать с константными строковыми и булевыми (true, false) значениями.
Функции генерации хэш-суммы#
Hash#
Вычисляет значение хэш-суммы в соответствии с заданным алгоритмом.
ABNF#
HASH_FUNCTION = ( "hash" / "Hash") "(" [ *LWSP ] VALUE [ *LWSP ] [ "," [ *LWSP ] VALUE [ *LWSP ] ] ")"
Пример#
abs(IN.root.value, "SHA-512")
abs($variable, IN.root.hashAlgorithm)
Аргументы#
Адрес элемента входящего сообщения, переменная окружения, переменная.
Наименование алгоритма для расчёта хэш-суммы. В случае, если алгоритм не указан, то будет применяться алгоритм SHA-256.
Функция генерирует хэш-сумму элемента сообщения в соответствии с заданным алгоритмом
Функции модификации коллекций#
Put#
Добавление поля с заданным ключом и значением#
Функция позволяет добавить в переменные окружения значения с ключом из сообщения и добавить поля с заданным ключом и значением.
ABNF#
PUT_FUNCTION = ( "Put" / "put") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
put(out.targetRoot.test1, in.root.test1.test11, in.root.test2[<])
Put(Environment.testEnv1, in.root.test1.test12, "const")
put($outVar, in.root.test1.test13, in.root.test2[>])
Аргументы#
Адрес элемента результирующего сообщения, переменная окружения, переменная.
Ключ — адрес элемента входящего сообщения, переменная, переменная окружения.
Значение, которое будет соответствовать ключу — адрес элемента входящего сообщения, переменная, переменная окружения.
Get#
Получение значения по ключу#
Функция позволяет получить значения из переменных окружения по ключу, а также получить значение поля элемента по его имени.
ABNF#
GET_FUNCTION = ( "Get" / "get") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
get(in.root.test1, "test13")
Get(Environment.test12, in.root.test1.test12)
get($outVar, in.root.test1.test12)
Аргументы#
Адрес родительского элемента входящего сообщения, переменная окружения, переменная.
Ключ — адрес элемента входящего сообщения, переменная, переменная окружения, константное строковое значение.
GetByIndex#
Получение значения по индексу#
Функция позволяет получить значения по индексу.
ABNF#
GET_BY_INDEX_FUNCTION = ( "GetByIndex" / "getByIndex") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
getByIndex($variable, "1")
GetByIndex($variable, ">")
GetByIndex(in.root.test2, "<")
getByIndex(Environment.test11, "1")
getByIndex(Environment.test11, ">")
GetByIndex(Environment.test11, "<")
Аргументы#
Адрес элемента входящего сообщения, переменная окружения(список), переменная в котором(-ой) находится массив значений
Индекс — адрес элемента входящего сообщения, переменная, строковые константные значения(
"1","2") или знаки - (">","<"). Подробнее можно ознакомится в пункте Присваивание значения элементу дерева выходного сообщения
Add#
Добавление значения в массив или список#
Функция позволяет добавить элемент в список переменных окружения, а также в массив элемента результирующего сообщения.
ABNF#
ADD_FUNCTION = ( "Add" / "add") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
add(out.targetRoot.test, "const")
Add($test, in.root.test1.test12)
add(Environment.array, "test_element")
Аргументы#
Адрес элемента исходящего сообщения, переменная окружения(список), переменная в котором(-ой) находится массив значений.
Значение — адрес элемента входящего сообщения, переменная, строковые константные значения.
Особенности: в случае, если в переменной окружения отсутствует список, то при вызове функции add(...) будет создан новый список.
AddByIndex#
Добавление значения сообщения по индексу#
Функция позволяет добавлять элемент в список переменной окружения по индексу, а также в массив по индексу элемента исходящего сообщения.
ABNF#
ADD_BY_INDEX_FUNCTION = ( "AddByIndex" / "addByIndex") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
addByIndex(Environment.array, "<","second")
addByIndex(Environment.array, "+<","first")
addByIndex(Environment.array, in.root.index, "third")
addByIndex(Environment.array, ">", "last")
addByIndex(out.targetRoot.test, "<","second")
addByIndex(out.targetRoot.test, "+<", "first")
addByIndex($root.test, in.root.index, "third")
addByIndex($test, ">", "last")
Аргументы#
Адрес элемента исходящего сообщения, переменная окружения(список), переменная, ссылающаяся на элемент исходящего сообщения, в котором(-ой) находится коллекция.
Индекс элемента массива.
Значение нового элемента массива.
RemoveField#
Удаление элемента сообщения по его имени#
Функция позволяет удалять поля переменной окружения по его имени, а также удалять поле элемента по его имени.
ABNF#
REMOVE_FUNCTION = ( "RemoveField" / "removeField") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
removeField($test, in.root.test1.test12)
removeField(Environment.test, in.root.test1.test13)
Аргументы#
Адрес родительского элемента сообщения, переменная окружения, переменная.
Адрес элемента, который необходимо удалить.
RemoveFieldByIndex#
Удаление элемента коллекции по индексу#
Функция позволяет удалять значения по индексу из списка в переменной окружения, а также из массива элемента сообщения.
ABNF#
REMOVE_BY_INDEX_FUNCTION = ( "RemoveByIndex" / "removeByIndex") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
removeByIndex($root.test2, "1")
removeByIndex(Environment.array, "1")
removeByIndex(Environment.array, ">")
Аргументы#
Адрес элемента сообщения, переменная окружения или переменной, содержащий массив значений.
Индекс — адрес элемента входящего сообщения, переменная, строковые константные значения(
"1","2") или знаки (">","<"). Подробнее можно ознакомится в пункте Присваивание значения элементу дерева выходного сообщения
Функции генерации исключений#
Exception#
Генерация и бросание исключения#
ABNF#
EXCEPTION_FUNCTION = ( "Exception" / "exception") "(" [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
exception("Wrong element!!!")
define ex = IN.root.exception_message
exception($ex)
Аргументы#
Сообщение исключения — строковое константное значение, адрес до элемента входящего сообщения в котором находится сообщение, которое можно передать в исключение.
Функция сортировки элементов массива#
ABNF#
SORT_FUNCTION = ( "Sort" / "sort") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
define numbers = [5,4,3,2,1]
out.result = sort($numbers)
define o1 = emptyObject()
$o1.id = 1
$o1.key = "d"
$o1.value = "v1"
define o2 = emptyObject()
$o2.id = 2
$o2.key = "c"
$o2.value = "v2"
define o3 = emptyObject()
$o3.id = 3
$o3.key = "b"
$o3.value = "v3"
define o4 = emptyObject()
$o4.id = 4
$o4.key = "a"
$o4.value = "v4"
define objects = [$o1, $o2, $o3, $o4]
out.objectResult = sort($objects, "ascending", "key")
Аргументы#
array — исходный массив;
order — порядок сортировки (ascending/descending), по умолчанию ascending (по возрастанию);
fieldName — поле объекта, по которому происходит сортировка.
Функция сортировки по типу дата-время#
ABNF#
SORT_DATE_TIME_FUNCTION = ( "SortDateTime" / "sortDateTime") "(" [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] "," [ *LWSP ] VALUE [ *LWSP ] ")"
Пример#
define do1 = emptyObject()
$do1.id = 1
$do1.date = "2001-01-01T10:10:10"
$do1.value = "v1"
define do2 = emptyObject()
$do2.id = 2
$do2.date = "2001-02-01T11:11:11"
$do2.value = "v2"
define o3 = emptyObject()
$do3.id = 3
$do3.date = "2001-03-01T12:12:12"
$do3.value = "v3"
define dateObjects = [$do1, $do2, $do3]
out.dateObjectsResult = sortDateTime($dateObjects, "yyyy-MM-dd'T'HH:mm:ss", "descending", "date")
Аргументы#
array — исходный массив;
pattern — преобразования даты времени по паттерну;
order — порядок сортировки (ascending/descending), по умолчанию ascending (по возрастанию);
fieldName — поле объекта, по которому происходит сортировка.