Процедуры#
Описание#
Процедура выполняет блок кода, указанный в теле процедуры при ее объявлении, в момент ее вызова.
В теле процедуры доступны только переменные, переданные в качестве аргументов.
Результатом выполнения процедуры является значение, переданное в выражении return.
Синтаксис#
Объявление процедуры имеет формат:
procedure <имя_процедуры> (<список_используемых_в_процедуре_переменых>) { <тело_процедуры> }
Вызов процедуры имеет формат:
procedure(<список_аргументов>)
Примеры использования процедур#
Пример 1#
Входящее сообщение:
{
"root":{
"a":[56.25, 13, 9.3, 103],
"b":["test1","test2","test3"],
"c": -150,
"testDate":"2024-05-29T11:51:40"
}
}
Правило трансформации:
procedure test1 (n) {
info("Математические операции")
return(abs($n.root.c)+sqrt(round($n.root.a[2])))
}
procedure test2 (n) {
info("Преобразование даты и времени")
return(convertDateTime("yyyy-MM-dd'T'HH:mm:ss", "dd MM yyyy", IN.root.testDate))
}
procedure test3 (n) {
info("Генерация идентификаторов")
return(generateId16())
}
define res = test3(in)
out.test1 = test1(in)
out.test2 = test2(in)
out.test3 = $res
Выходящее сообщение:
{
"test1":153.0,
"test2":"29 05 2024",
"test3":"b928c7bbd2386152"
}
Пример 2#
Входящее сообщение:
{
"root":{
"test1":{
"test11":"test11",
"test12":"test12",
"test13":"test13"
},
"test2":["test21","test22","test23"],
"testDate":"16.03.2020T16:51:40.350",
"field with spaces":"spaces",
"index":"2"
}
}
Правило трансформации:
procedure test (a, b, c) {
info("test in procedure test")
info($a)
return($a.root.test1)
}
procedure testVar (a) {
info("test in procedure test2")
info($a)
return("var")
}
out.test = "test"
define res = test(in, in, in)
define var = "var"
define resVar = testVar($var)
info($resVar)
out.test1 = $res
out.test2 = $resVar
Выходящее сообщение:
{
"test":"test",
"test1":{
"test11":"test11",
"test12":"test12",
"test13":"test13"
},
"test2":"var"
}