Функции преобразования элементов сообщения#

1. Проверка существования элемента (exists)#

Функция определяет наличие или отсутствие аргумента:

  • возвращает истину (true) — в случае существования аргумента;

  • возвращает ложь (false) — в случае отсутствия аргумента.

В случае отсутствия значения у элемента сообщения функция вернет истину.

Варианты написания функции:

  • exists;

  • Exists;

  • EXISTS.

Синтаксис#

exists(IN.test)
Exists($variable)
EXISTS($variable.test)

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
»a»: «text1»,
»b»: «text2»
}

OUT.task =exists(IN.m)

{«task»:false}

{
»a»: «text1»,
»b»: «text2»
}

OUT.task =exists(IN.a)

{«task»:true}

2. Проверка пустого значения (empty)#

Функция определяет, является ли элемент пустым или нет.

  • json — элемент будет считаться пустым, если он null или отсутствует;

  • xml — элемент будет считаться пустым, если элемент отсутствует или значения элемента не определено (<test></test>).

Варианты написания функции:

  • empty;

  • Empty;

  • EMPTY.

Синтаксис#

empty(IN.test)
Empty($variable)
EMPTY($variable.test)

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
»a»: «text1»,
»b»: «text2»
}

OUT.task =empty(IN.m)

{«task»:true}

{
»a»: «text1»,
»b»: «text2»
}

OUT.task =empty(IN.a)

{«task»:false}

3. Возврат первого элемента из последовательности, который не является null (coalesce)#

Функция возвращает первый элемент из последовательности, который не является null.

Варианты написания функции:

  • coalesce;

  • Coalesce;

  • COALESCE.

Синтаксис#

Coalesce(IN.root.test1, $variable, "DEFAULT_VALUE")
COALESCE(IN.root.test2, "DEFAULT_VALUE")

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
»a»: 100,
»b»: 500
}

define testVar = IN.b
OUT.task =Coalesce(IN.a, $testVar, «DEFAULT_VALUE»)

{«task»:100}

{
»a»: 100,
»b»: 500
}

define testVar = IN.b
OUT.task =Coalesce(IN.m, $testVar, «DEFAULT_VALUE»)

{«task»:500}

4. Возврат пустого элемента (emptyObject)#

Функция возвращает пустой элемент ({}), который возможно заполнить.

Варианты написания функции:

  • emptyObject;

  • EmptyObject.

Синтаксис#

emptyObject()
EmptyObject()

define a  = emptyObject()
$a.targetRoot.targetTest.target = IN.root.test1.test12
out = $a

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
»a»: 100,
»b»: 500
}

OUT.task =emptyObject()

{«task»:{}}

{
»a»: 700,
»b»: 500
}

define m = emptyObject()
$m.s = IN.a
OUT.task = $m.s

{«task»:700}

5. Удаление элемента (remove)#

Функция удаляет элемент исходящего сообщения. Удалению подвергается вся ветвь, включая дочерние элементы.

Варианты написания функции:

  • remove;

  • Remove;

  • REMOVE.

Синтаксис#

remove(IN.test)
Remove($variable)
REMOVE($variable.test)

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
»a»: 100,
»b»: 500
}

OUT.task =remove(IN.a)

{«task»:{«out»:{«task»:null},»output»:{}}}

6. Получение длины элемента сообщения (length)#

Функция получает длину элемента исходящего сообщения.

Варианты написания функции:

  • length;

  • Length;

  • LENGTH.

Синтаксис#

length(IN.test)
Length($variable)
LENGTH($variable.test[])

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
«z»:
{
«b»: 5,
«c»: «modul»,
«m»: «consumer»
},
«d»: true
}

OUT.task =length(IN.z)

{«task»:3}

{
«z»:
{
«b»: 5,
«c»: «modul»,
«m»: «consumer»
},
«d»: true
}

OUT.task =length(IN.z.m)

{«task»:8}

7. Прерывание трансформации (return)#

Функция прерывает выполнение трансформации на текущем шаге. Все дальнейшие шаги трансформации будут проигнорированы.

Результатом трансформации станет выполнение шагов до вызова данной функции.

Получить значение переданного аргумента можно методом returnStatus класса ru.sbt.cep.mapper.grammar.Transformer, передав результат трансформации. В случае вызова функции без аргументов будет возвращена пустая строка.

Варианты написания функции:

  • return;

  • Return;

  • RETURN.

Синтаксис#

return(IN.test)
return()
Return($variable)
RETURN($variable.test)

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
»a»: «text1»,
»b»: «text2»
}

OUT.task =return(IN.a)

{«task»:null}

{
»a»: 300,
»b»: «consumer»
}

OUT.task1 =IN.a
OUT.task2 =return(IN.b)
OUT.task3 =»stop»

{«task1»:300,»task2»:null,»task3»:»stop»}

8. Получение имени поля (getFieldName)#

Функция получает имя поля, содержащее указанное значение.

Варианты написания функции:

  • getFieldName;

  • GetFieldName.

Синтаксис#

getFieldName(IN.test[<])
GetFieldName($variable)

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
»a»: 300,
»b»: «consumer»
}

OUT.task =getFieldName(IN)

{«task»:»body»}

9. Получение массива значений полей объекта (getObjectFields)#

Функция получает значения полей объекта. Если передан не объект, то возвращает пустой массив.

Варианты написания функции:

  • getObjectFields;

  • GetObjectFields.

Синтаксис#

getObjectFields(IN.test)
GetObjectFields($variable)

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
»a»: 300,
»b»: «consumer»
}

OUT.task =getObjectFields(IN)

{«task»:[300,»consumer»]}

{
«z»:
{
«b»: 5,
«c»: «modul»,
«m»: «consumer»
},
«d»: true
}

OUT.task =getObjectFields(IN.z)

{«task»:[5,»modul»,»consumer»]}

10. Преобразование элемента сообщения в XML-формат (transformToXml)#

Функция преобразовывает элемент сообщения в XML-формат.

Варианты написания функции:

  • TransformToXml;

  • transformToXml.

Синтаксис#

TransformToXml(IN.source)
transformToXml(IN.source, "sourceTest")

Аргументы#

  1. Адрес элемента входящего сообщения, переменная.

  2. Наименование корневого элемента сообщения в XML-формате (опциональный параметр).

Особенности: если в первый аргумент функции передать константное значение, то функция преобразует значение в строковое представление.

Примеры использования функции#

Входящее сообщение

Правило трансформации

Выходящее сообщение

{
«z»:
{
«b»: 5,
«c»: «modul»,
«m»: «consumer»
},
«d»: true
}

OUT.task =TransformToXml(IN.z)

{«task»:»5modulconsumer»}