02 Описание узлов Data Boring
Группа узлов “общие”
Узел Запуск
Вбрасывает сообщение в поток вручную или через равные промежутки времени. Данные в сообщении могут быть различных типов, включая строку, объект JavaScript или метку текущего времени.
Выводит:
payload
разные – настроенные данные сообщения.topic
строка – необязательное свойство темы сообщения, которое можно настроить в узле.
Узел Запуск
может инициировать выполнение потока с определенными данными (значение payload
). Данные по умолчанию – это метка текущего времени в миллисекундах, прошедших с 1 января 1970 года.
Узел также поддерживает вывод строк, чисел, логических значений, объектов JavaScript или значений потоковых/глобальных контекстов.
По умолчанию узел запускается вручную при нажатии его кнопки в редакторе. Его также можно настроить на автоматический запуск через равные промежутки времени или по расписанию.
Он также может быть настроен однократный вброс сообщения при каждом (пере)запуске потоков.
Максимальный интервал, который можно указать, составляет около 596 часов / 24 дней. Однако если Вам нужны интервалы, превышающие один день, Вам следует рассмотреть возможность использования функций планировщика в узле, которые смогут корректно работать с перебоями электроэнергии и перезапусками.
В параметрах “с интервалом в промежутке” и “в определенное время” используется стандартная система “cron”. Это означает, что “20 минут” будут в следующем часу, 20 минут спустя и 40 минут спустя - а не через 20 минут. Если нужен вброс сообщений каждые 20 минут - используйте параметр “с интервалом”.
Чтобы включить многострочный текст в строковое значение, необходимо использовать узел Функция
для формирования данных.
Узел Отладка
Отображает выбранные свойства получаемых узлом сообщений на боковой панели во вкладке отладки и, при необходимости, журнале среды выполнения. По умолчанию отображается содержимое msg.payload
, но узел можно настроить на отображение любого свойства, всех свойств сообщения или результата выражения JSONata.
Вкладка отладки на боковой панели обеспечивает структурированное представление полученных узлом сообщений, что упрощает исследование их структуры.
Объекты и массивы JavaScript могут быть свернуты и развернуты по мере необходимости. Буферы могут отображаться в виде данных как есть или в виде строки, когда это возможно.
Рядом с каждым сообщением отладочная панель показывает информацию о времени получения сообщения, узле, который его отправил, и типе данных. Нажатие на идентификатор узла-источника покажет этот узел в рабочей области.
Кнопка на узле может использоваться для включения или отключения вывода информации о получаемых сообщениях. Рекомендуется отключать или удалять любые отладочные узлы, которые не используются.
Узел также может быть настроен на отправку всех сообщений в журнал выполнения или отправку короткого (32 символа) текста в статус под узлом.
Узел Завершение
Инициирует запуск потока, когда другой узел завершает обработку сообщения.
Если узел сообщает среде выполнения о завершении обработки сообщения, этот узел можно использовать для запуска второго потока.
Например, его можно использовать вместе с узлом, у которого нет выходного порта, таким как узел Email, для продолжения потока.
Этот узел должен быть настроен на отслеживание событий выбранных узлов в потоке. В отличие от узла Отлов ошибок
, у него нет режима Обрабатывать все
для автоматического применения ко всем узлам в потоке.
Не все узлы могут инициировать запуск потока по завершению обработки сообщения. все зависит от того, была ли в них реализована поддержка этой функции, добавленной в Luxms Data Boring, или нет.
Узел Отлов ошибок
Ловит ошибки, выбрасываемые узлами на той же вкладке.
Выводит:
error.message
строка – сообщение об ошибке.error.source.id
строка – идентификатор узла, выдавшего ошибку.error.source.type
строка – тип узла, выдавшего ошибку.error.source.name
строка – имя узла, выдавшего ошибку, если было настроено.
Если узел выбрасывает ошибку во время обработки сообщения, поток обычно останавливается. Этот узел можно использовать для отлова и обработки таких ошибок с помощью отдельного потока.
По умолчанию узел будет отлавливать ошибки, генерируемые любым узлом на той же вкладке. По желанию он может быть нацелен на определенные узлы или настроен на перехват только тех ошибок, которые не были перехвачены ‘нацеленным’ Отлов ошибок
узлом.
Когда выдается ошибка, все соответствующие Отлов ошибок
узлы получат сообщение.
Если ошибка выбрасывается в подпотоке, она будет обработана любыми Отлов ошибок
узлами внутри подпотока. Если таковых нет, ошибка будет распространена до вкладки, на которой находится экземпляр подпотока.
Если сообщение уже имеет свойство error
, оно копируется в _error
.
Узел Статус
Инициирует запуск потока при изменении статуса других узлов на той же вкладке.
Выводит:
status.text
строка – текст статуса.status.source.type
строка – тип узла, сообщившего о статусе.status.source.id
строка – идентификатор узла, сообщившего о статусе.status.source.name
строка – имя узла, сообщившего о статусе, если настроено.
Этот узел не создает payload
данные.
По умолчанию узел сообщает о статусах всех узлов на той же вкладке в рабочей области. Его можно настроить на выборочное отслеживание статуса только отдельных узлов.
Узел Связь (вход)
Создает виртуальный провод между потоками.
Этот узел может быть подключен к любому Связь (выход)
узлу на любой вкладке. После подключения они ведут себя так, как если бы они были соединены вместе обычным проводом.
Связи между Связь
-узлами отображаются, только когда выбран один из соединенных Связь
-узлов. Если есть какие-либо провода, ведущие на другие вкладки, они отображаются в виде виртуального узла, по которому можно кликнуть, чтобы перейти на соответствующую вкладку.
Провод не может вести внутрь подпотока или изнутри подпотока наружу.
Узел Задать связь
Вызывает поток, который начинается с узла Связь (вход)
и передает ответ.
Этот узел может быть подключен к узлу Связь (вход)
, который существует в любом потоке. Поток, подключенный к этому узлу, должен заканчиваться узлом Связь (выход)
, настроенным в режиме Вернуть к вызывающему узлу
.
Когда этот узел получает сообщение, оно передается к подключенному узлу Связь (вход)
. Затем он ждет ответа, который затем отправляет.
Если в течение настроенного тайм-аута (по умолчанию 30 секунд) ответ не получен, узел регистрирует ошибку, которую можно перехватить с помощью узла Отлов ошибок
.
Узел Связь (выход)
Создает виртуальный провод между потоками.
Узел может быть подключен к любому Связь (вход)
узлу на любой вкладке. После подключения они ведут себя так, как если бы они были соединены вместе обычным проводом.
Связи между Связь
-узлами отображаются, только когда выбран один из соединенных Связь
-узлов. Если есть какие-либо провода, ведущие на другие вкладки, они отображаются в виде виртуального узла, по которому можно кликнуть, чтобы перейти на соответствующую вкладку.
Провод не может вести внутрь подпотока или изнутри подпотока наружу.
Узел Комментарий
Узел, который можно использовать для добавления комментариев к вашим потокам.
Окно редактирования поддерживает синтаксис Markdown. Текст будет отображен на информационной вкладке боковой панели в секции Описание
.
Группа узлов “функция”
Узел Функция
Исполняет JavaScript функцию (введенную в настройках, во вкладке Функция
) для всех получаемых узлом сообщений.
Сообщения передаются в виде объекта JavaScript с именем msg.
Обычно у объекта есть свойство msg.payload
, содержащее тело сообщения.
Ожидается, что функция вернет объект сообщения (или несколько объектов сообщения), которые будут отправлены следующим узлам в потоке, но может также ничего не возвращать, чтобы остановить поток.
Код настройки, выполняемый один раз при запуске сервера или при развертывании новой конфигурации потока, можно ввести во вкладке Настройка
. Также во вкладке Закрытие
можно ввести код очистки, выполняемый при остановке или повторном развертывании узла.
Если код настройки возвращает Promise
объект, тогда обработка входящих сообщений узлом начнется после его завершения.
Отправка сообщений
Функция может либо вернуть сообщения, которые она хочет передать следующим узлам в потоке, либо вызвать node.send
(сообщения).
Она может вернуть/отправить:
- Один объект сообщения - передается узлам, подключенным к первому порту выхода.
- Массив объектов сообщений - передается на узлы, подключенные к соответствующим портам выхода
Код настройки выполняется во время инициализации узлов. Таким образом, если на вкладке настройки кода вызывается node.send
, последующие узлы могут не получить это сообщение.
Если какой-либо элемент массива сам является массивом сообщений, тогда на соответствующий выход отправляется несколько сообщений.
Если возвращен null
, либо сам по себе, либо как элемент массива, тогда сообщение не передается.
Ведение журнала и обработка ошибок
Для добавления информации в журнал или сообщения об ошибке доступны следующие функции:
node.log
(“Сообщение для журнала”)node.warn
(“Предупреждение”)node.error
(“Ошибка”)
Также узел Отлов ошибок
может использоваться для обработки ошибок. Чтобы можно было ловить оповещения об ошибке, при вызове node.error
передайте msg в качестве второго аргумента:
node.error
(“Ошибка”,msg
);
Доступ к информации об узле
В функции можно обращаться к идентификатору и имени узла, используя следующие свойства:
node.id
- идентификатор узлаnode.name
- имя узла
Использование переменных среды
Доступ к переменным среды можно получить с помощью:
env.get("MY_ENV_VAR")
.
Узел Переключатель
Направляет сообщения по разным ветвям потока, в завсимости от значений свойств сообщения или его позиции в последовательности.
Когда приходит сообщение, узел выполняет проверку соответствия сообщения каждому из установленных правил и перенаправляет сообщение на соответствующие выходы.
При желании узел может быть настроен на прекращение проверки правил после того как найдено первое подходящее.
Правила могут применяться к свойству сообщения, свойству потокового или глобального контекста, переменной среды или результату выражения JSONata.
Правила
- Правила категории
value rules
сравнивают значение указанного свойства сообщения - Правила категории
sequence rules
могут применяться для последовательностей сообщений, таких как сгенерированные узломРазделить
- Выражение JSONata исполняется для сообщения и считается подходящим, если оно возвращает истинное значение
- Правило иначе используется для сообщений, не подходящих ни под одно из предыдущих правил.
Правила равно true/false и равно null проводят строгое сравнение с этими типами. Они не конвертируются между типами.
Правила пустое и не пустое могут быть использованы для проверки длины строк, массивов и буферов, или количества свойств, которые содержит объект. Эти правила не подходят, если тестируемое свойство содержит значение логического типа, null
или undefined
.
Обработка последовательностей сообщений
По умолчанию узел не изменяет свойство msg.parts
у сообщений, являющихся частью последовательности.
Можно включить параметр пересоздавать последовательности сообщений для создания новых последовательностей сообщений для каждого соответствующего правила. В этом режиме узел будет помещать в буфер всю входящую последовательность перед отправкой новых последовательностей. Настройка nodeMessageBufferMaxLength
может быть использована для ограничения количества сообщений в буфере.
Узел Замена
Устанавливает, изменяет, удаляет или перемещает свойства сообщения, контекста потока или глобального контекста.
В узле можно указать несколько операций, которые будут применяться в том порядке, в котором они заданы.
Доступные операции:
Установить
– устанавливает свойство. Значение может быть различных типов или может быть взято из существующего свойства сообщения или контекста.Изменить
– ищет и заменяет части текста в свойстве сообщения. Если используется регулярное выражение, настройка"заменить на"
может включать группы захвата, например$1
. При полном совпадении заменяет только тип.Удалить
– удаляет свойство.Переместить
– перемещает или переименовывает свойство.
Тип свойства "выражение"
использует язык запросов и выражений JSONata.
Узел Диапазон
Соотносит значение одного числового диапазона с другим числовым диапазоном.
Принимает:
payload
число – данные должны быть числом. Данные другого типа будут преобразованы в число и отклонены, если это не удастся.
Выводит:
payload
число – значение, соотнесенное с новым диапазоном.
Этот узел будет линейно масштабировать полученное значение. По умолчанию результат не ограничен диапазоном, определенным в узле.
Масштабировать и ограничить целевым диапазоном означает, что результат никогда не будет выходить за пределы диапазона, указанного в целевом диапазоне.
Масштабировать и обернуть в целевой диапазон означает, что результат будет обернут вокруг целевого диапазона:
Например, если входные 0 - 10 сопоставляются с 0 - 100:
Узел Шаблон
Генерирует текст по установленному шаблону и присваивает его выбранному свойству сообщения.
Принимает:
msg
, объект – объект сообщенияmsg
, содержащий информацию для заполнения шаблона.шаблон
, строка – шаблон текста для заполнения данными из сообщенияmsg
. Если шаблон не введен на панели редактирования, тогда он может быть установлен через свойствоmsg.template
.
Выводит:
msg
, объект – сообщение msg, у которого выбранному свойству присвоено тексктовое значение, полученное после заполнения шаблона данными входящего сообщения.
По умолчанию используется формат mustache
. При необходимости это можно отключить.
Например, когда шаблон:
Привет, {{`payload`.name}}. Сегодня {{date}}.
получает сообщение msg, содержащее:
{
date: "понедельник",
`payload`: {
name: "Иван"
}
}
Выбранному свойству будет присвоен текст:
Привет, Иван. Сегодня понедельник.
Можно использовать свойство из контекста потока или глобального контекста. Просто используйте {{flow.name}}
или {{global.name}}
, или для постоянного хранилища store
используйте {{flow[store].name}}
или {{global[store].name}}
.
По умолчанию mustache
заменяет определенные символы их escape-кодами для безопасного использования в HTML. Чтобы это не происходило, вы можете использовать тройные фигурные скобки {{{triple}}}
.
Узел Задержка
Задерживает каждое сообщение, проходящее через узел, или ограничивает скорость, с которой они могут проходить.
Принимает:
delay
, число – устанавливает задержку в миллисекундах, которая будет применена к сообщению. Этот параметр применяется только в том случае, если узел настроен так, чтобы разрешать сообщению переопределять установленный интервал задержки по умолчанию.reset
– если в полученном сообщении этому свойству присвоено какое-либо значение, все ожидающие сообщения, удерживаемые узлом, сбрасываются без дальнейшей отправки.flush
– если в полученном сообщении этому свойству присвоено какое-либо значение, все ожидающие сообщения, удерживаемые узлом, немедленно отправляются далее.
Когда узел настроен на задержку сообщений, интервал задержки может быть фиксированным значением, случайным значением в пределах диапазона или динамически установленным для каждого сообщения. Каждое сообщение задерживается независимо от любых других сообщений, основываясь на времени его прибытия в узел.
Когда узел настроен на ограничение скорости сообщений, их доставка распределяется по установленному периоду времени. Статус показывает количество сообщений, находящихся в данный момент в очереди. При необходимости узел может быть настроен на отбрасывание промежуточных сообщений по мере их поступления.
Ограничение скорости может применяться ко всем сообщениям или группам сообщений в соответствии с их значением темы msg.topic
. При группировании промежуточные сообщения автоматически отбрасываются. В каждом интервале времени узел может либо выпустить самое последнее сообщение для всех тем, либо выпустить самое последнее сообщение для следующей темы.
Узел Триггер
При срабатывании может отправить сообщение, а затем дополнительно второе сообщение, если не было сделано продление или сброс.
Принимает:
delay
, число – устанавливает задержку в миллисекундах, которая будет применяться к сообщению. Этот параметр применяется только в том случае, если узел настроен так, чтобы сообщение могло отменять настроенный интервал задержки по умолчанию.reset
– при получении сообщения с этим свойством, любой тайм-аут или повтор, находящиеся в обработке в текущий момент, будут сброшены, а сообщение не сработает.
Этот узел можно использовать для создания тайм-аута внутри потока. По умолчанию, когда узел получает сообщение, он отправляет сообщение с payload
, равным 1
. Затем он ждет 250 мс, прежде чем отправить второе сообщение с payload
равным 0
. Это можно использовать, например, для мигания светодиодом, подключеным к выходу GPIO у Raspberry Pi.
Данные каждого отправленного сообщения могут быть настроены на различные значения, включая возможность ничего не отправлять. Например, если установить первоначальное сообщение на ничего и выбрать опцию продления таймера с каждым новым сообщением, узел будет действовать как сторожевой таймер, отправляя сообщение только в том случае, если ничего не получено в течение установленного интервала.
Если установлен тип строка, узел поддерживает синтаксис шаблона mustache
.
Задержка между отправкой сообщений может быть изменена с помощью msg.delay
, если эта опция включена в узле. Значение должно быть указано в миллисекундах.
Если узел получает сообщение со свойством reset
или payload
, который совпадает с настроенным в узле, любой тайм-аут или повтор, находящийся в обработке в текущий момент, будет сброшен, и сообщение не сработает.
Узел может быть настроен на повторную отправку сообщения с регулярным интервалом, пока не будет произведен сброс отправкой на него сообщения.
При желании узел может быть настроен на обработку сообщений, как если бы они были отдельными потоками, используя свойство msg
для идентификации каждого потока. По умолчанию msg.topic
.
Статус показывает - активен ли узел в данный момент. Если работает в многопоточном режиме, статус показывает количество удерживаемых потоков.
Узел Выполнить
Запускает системную команду и возвращает ее вывод.
Узел может быть настроен либо на ожидание завершения выполнения команды, либо на отправку выходных данных по мере их генерации в ходе выполнения.
Выполняемая команда может быть установлена в настройках узла или полученным сообщением.
Принимает:
payload
строка – будет добавлено к выполняемой команде, если узел настроен так делать.kill
строка – тип сигнала уничтожения для отправки существующему процессу узлаВыполнить
.pid
число, строка – идентификатор существующего процесса узлаВыполнить
для уничтожения.
Выводит:
- Стандартный вывод:
payload
строка – стандартный вывод команды.rc
объект – только вexec
режиме, копия объекта кода возврата (также доступна по 3-му порту).
- Стандартный вывод ошибок:
payload
строка – стандартная ошибка команды.rc
объект – только вexec
режиме, копия объекта кода возврата (также доступна по 3-му порту).
- Код возврата
payload
объект – объект, содержащий код возврата и, возможно, свойстваmessage
,signal
.
По умолчанию используется системный вызов exec
, который вызывает команду, ожидает ее завершения и возвращает результат. Например, успешная команда должна иметь код возврата {code: 0}
.
При желании вместо этого можно использовать spawn
, который возвращает выходные данные из stdout
и stderr
по ходу выполнения команды, обычно по одной строке за раз. После завершения он возвращает объект на 3-й порт. Например, успешная команда должна вернуть {code: 0}
.
Ошибки могут возвращать на 3-й порт дополнительную информацию в msg.payload
, такую как строка message
, строка signal
.
Выполняемая команда настраивается в узле, с возможностью добавления к ней msg.payload
и дополнительного набора параметров.
Команды или параметры с пробелами должны быть заключены в кавычки - "Это один параметр"
.
Возвращаемый payload
обычно представляет собой строку, пока не обнаружены символы, отличные от UTF8
, в этом случае возвращаемое значение будет иметь тип буфер.
Значок статуса узла и PID
будут видны, когда узел активен. Изменения в статусе можно отслеживать узлом Статус
.
Уничтожения процессов
Отправка msg.kill
уничтожит один активный процесс. msg.kill
должен быть строкой, содержащей тип передаваемого сигнала, например, SIGINT
, SIGQUIT
или SIGHUP
. По умолчанию будет передан SIGTERM
, если задана пустая строка.
Если узлом запущено более одного процесса, тогда в msg.pid
также должно быть установлено значение PID
процесса для уничтожения.
Если в поле Тайм-аут
введено значение, тогда, если процесс не завершится по истечении указанного количества секунд, он будет автоматически уничтожен.
Если вы запускаете Python приложение, вам может потребоваться использование параметра -u
, чтобы остановить буферизацию вывода.
Узел Фильтр
Report by Exception (RBE) узел - передает данные только в том случае, если payload
изменился. Он также может блокировать или игнорировать при изменениях payload
на определённую величину (Dead- и Narrowband режимы).
Принимает:
payload
– числа, строки и простые объекты. Другие режимы должны предоставлять данные, приводимые к числу.topic
– если указано, функция будет работать для каждогоtopic
. Это свойство может быть установлено конфигурацией.- reset – если установлено, очищает сохраненное значение для указанного
msg.topic
или всехtopic
, еслиmsg.topic
не указан.
Выводит:
payload
– при срабатывании выход будет таким же, как и вход.
В режиме RBE этот узел будет блокироваться до тех пор, пока значение msg.payload
(или выбранное Свойство) не будет отличаться от предыдущего. При необходимости он может игнорировать начальное значение, чтобы ничего не отправлять при запуске.
Режим Deadband будет блокировать входящее значение, пока его изменение не будет больше или больше-равно, чем ± ширина запрещенной зоны от предыдущего значения.
Narrowband режим блокирует входящее значение, если его изменение больше или больше-равно, чем ± ширина запрещенной зоны от предыдущего значения. Это полезно для игнорирования выбросов, например.
Оба режима «Deadband» и «Narrowband» требуют, чтобы входящее значение содержало значение, приводимое к числу, и оба также поддерживают %
- условие срабатывает только в том случае, когда вход отличается более чем на x% от исходного значения.
И Deadband, и Narrowband позволяют сравнивать либо предыдущее допустимое выходное значение, таким образом игнорируя любые значения, выходящие за пределы диапазона, либо предыдущее входное значение, которое сбрасывает заданное значение, тем самым позволяя постепенное смещение (deadband) или поэтапное изменение (narrowband).
Это работает для каждого сообщения msg.topic
, хотя при желании его можно изменить на другое Свойство
. Это означает, что один rbe-узел может одновременно обрабатывать несколько разных topics
.
Узел loop
Создание циклов — распространенный метод программирования. Узел loop
обеспечивает их поддержку в Databoring
.
Можно выбрать один из трех видов создания циклов:
- Цикл с фиксированным количеством повторений;
- Цикл, основанный на условии;
- Цикл, повторяющийся на итерируемом перечислении.
Общее описание
Можно управлять циклом, отправив на вход msg.command
. Если он содержит строку break
, цикл будет завершен немедленно. Если он содержит строку перезапуска, цикл начнется снова с первого значения.
У узла есть два выхода: конец цикла и шаг цикла. Первый выход используется когда цикл заканчивается, то есть в конце. Второй выход следует подключить к входу потока, необходимого для повторения, для создания цикла.
Узлы в повторяемом потоке получают объект msg.loop со следующим параметром:
- index - счетчик увеличиваемый на 1 с 0.
Может содержаться и большее количество свойств, но они зависят от типа цикла, они будут описаны ниже. Также можно выбрать одно из свойств, которое будет помещено в msg.payload, для этого используйте параметр Loop Payload
в форме редактора.
В конце вывода цикла вы получите объект msg.loop
со следующими свойствами:
break
- истина, если цикл получил команду остановки;timeout
- true, если время ожидания истекло;pass.total
— общее количество проходов по циклу, включая все перезапуски;pass.last
— количество проходов по циклу с момента последнего рестарта или старта;restarts
- количество перезапусков цикла.
А также в конце вывода цикла будет выведен msg.payload
. Содержащееся значение внутри сообщения - опционально. Можно выбрать между выводом последнего payload из цикла и исходного payload
, который узел получил на входе в начале, для этого выбора используйте End Payload
в форме редактора.
Можно ограничить время циклов для всех трех типов. Для этого используйте Time Limit
в форме редактора или msg.limit
для передачи “на лету”. Время указывается в миллисекундах.
Тип цикла «Fixed Count» (Фиксированное значение)
Даннный тип цикла используюется, когда необходимо произвести фиксированное количество повторений.
- Поле
Count
указывает количество проходов через цикл (повторений), его так же можно оставить пустым, при этом используяmsg.count
на лету; - Поле
Initial Value
определяет значение, от которого счетчик должен вести отсчет, его так же можно оставить пустым, при этом используяmsg.initial
на лету; - В поле
Step Value
указывается шаг приращения или уменьшения для счетчика.
Узлы в повторяемом потоке, получат объект msg.loop со следующими дополнительными свойствами:
value
- значение счетчика;count
- запрошенное количество проходов через цикл;initial
- значение, с которого начался счетчик;step
- значение шага, используемое для увеличения или уменьшения счетчика.
Тип цикла «Condition» (Условие)
Используйте этот тип цикла, когда вам нужен цикл, основанный на каком-либо условии, для этого необходимо определить условие в поле Condition
. Можно выбрать один из трех языков:
JavaScript
— условие, написанное в виде кода на языкеJavaScript
. Оценка состояния будет использовать результат последней части. Цикл будет продолжаться, если это правда, иначе цикл завершится.
Например:
msg.payload !== "done"
roses = global.get("roses"); global.set("roses", ++roses); roses <= 100
Код JavaScript
выполняется в песочнице с ограниченной средой, аналогичной функциональному узлу.
JSONata
— условие в виде выраженияJSONata
. Цикл продолжится, если выражение оценивается как истинное, в противном случае цикл завершится.
Например:
msg.payload in [1,2,3,5,7,13,21]
$globalContext("status") or msg.size > 10
Regex
— регулярное выражение, используемое с функцией test(), применяемой кmsg.payload
. Цикл будет продолжаться, если он сообщение подходит по условию, в противном случае цикл завершится.
Например:
file[0-9].txt
^[a-zA-Z0-9]+: .*
Следующие три примера выполняют одну и ту же работу (проверяют, заканчивается ли строка символом «n») на разных языках с разной скоростью:
msg.payload.substr(-1) != "n"
$substring(msg.payload, -1) != "n"
.*[^n]
В данном случае JavaScript
является самым быстрым из вариантов, а Regex
— самым медленным, но с более сложными условиями все может измениться. При этом, не все условия можно легко или вообще возможно описать одним определенным языком.
Например, регулярное выражение применимо не только для сравнения строк, но также это лучший выбор для поиска сложных шаблонов.
msg.loop
не имеет дополнительных свойств для этого типа цикла.
Тип цикла «Enumeration» (Перечисление)
Используйте этот тип цикла, когда вы хотите выполнить итерацию по некоторому перечислению. Тип объекта должен быть итерируемым, например: массив, список, словарь, множество или строка.
Вам необходимо указать перечисление в поле Enumeration как свойство сообщения, потока или глобального контекста. Также можно указать его напрямую как JSON
или обычную строку.
Узлы в повторяемом потоке, получат объект msg.loop
со следующими дополнительными свойствами:
value
- повторяющееся значение элемента;key
- итерируемый ключ элемента данных (напр. для словаря);enumeration
- объект, по которому он повторяется.
Группа узлов “сеть”
Узел mqtt (вход)
Подключается к MQTT брокеру и подписывается на сообщения указанной темы.
Выводит:
payload
строка | буфер – строка, если не обнаружено как двоичный буфер.topic
строка – тема MQTT, использует / в качестве разделителя иерархии.qos
число –0
: приходит не более одного раза,1
: приходит не менее одного раза,2
: приходит только один раз.retain
логич.тип – значениеtrue
указывает, что сообщение было сохранено и может быть устаревшим.
Тема подписки может включать подстановочные знаки MQTT, +
для одного уровня, #
для нескольких уровней.
Для этого узла требуется соединение с брокером MQTT. Это настраивается нажатием на значок карандаша.
Несколько MQTT узлов (вход
или выход
) могут совместно использовать одно и то же соединение с брокером, если это необходимо.
Узел mqtt (выход)
Подключается к MQTT брокеру и публикует сообщения.
Принимает:
payload
строка | буфер – данные для публикации. Если это свойство не установлено, сообщение не будет отправлено. Чтобы отправить пустое сообщение, установите для этого свойства пустую строку.topic
строка –тема MQTT для публикации.qos
число –0
: приходит не более одного раза,1
: приходит не менее одного раза,2
: приходит только один раз. По умолчанию0
.retain
логич.тип – установите значениеtrue
, чтобы сохранить сообщение в брокере. По умолчаниюfalse
.
Свойство msg.payload
используется в качестве данных опубликованного сообщения. Если оно содержит объект, то он будет преобразован в строку JSON перед отправкой. Если оно содержит двоичный буфер, сообщение будет опубликовано как есть.
Используемая тема может быть настроена в узле или, если оставить ее пустой, может быть установлена с помощью msg.topic
.
Аналогично, значения QoS
и сохранения могут быть сконфигурированы в узле или, если они оставлены пустыми, установлены с помощью msg.qos
и msg.retain
соответственно. Чтобы удалить ранее сохраненную тему из брокера, отправьте пустое сообщение в эту тему с установленным флагом сохранения.
Для этого узла требуется соединение с брокером MQTT. Это настраивается нажатием на значок карандаша.
Несколько узлов MQTT (вход
или выход
) могут совместно использовать одно и то же соединение с брокером, если это необходимо.
Узел http вход
Создает конечную точку HTTP для веб-службы.
Выводит:
payload
– дляGET
-запроса содержит объект с любыми параметрами строки запроса. В противном случае содержит тело HTTP-запроса.req
объект – объект HTTP-запроса. Этот объект содержит несколько свойств, которые предоставляют информацию о запросе:
body
- тело входящего запроса. Формат будет зависеть от запроса.headers
- объект, содержащий заголовки HTTP-запроса.query
- объект, содержащий любые параметры строки запроса.params
- объект, содержащий любые параметры маршрута.cookies
- объект, содержащий куки запроса.files
- если включено в узле, объект, содержащий любые файлы, загруженные как частьPOST
-запроса.
res
объект – объект ответа HTTP. Это свойство не должно использоваться напрямую. Для ответа на входящий HTTP запрос используется узел ответа HTTP Response. Это свойство должно оставаться в сообщении вплоть до передачи узлу ответа.
По настроенному пути узел будет принимать запросы определенного типа. Путь может быть указан конкретно, например /user
, или включать именованные параметры, которые принимают любое значение, например /user/:name
. Когда используются именованные параметры, их фактическое значение в запросе будет доступно в msg.req.params
.
Для запросов, которые содержат тело, такие как POST
или PUT
, содержимое запроса доступно в msg.payload
.
Если тип содержимого запроса может быть определен, тело будет преобразовано в любой подходящий тип. Например, application/json будет преобразован в объект JavaScript.
Этот узел не отправляет никакого ответа на запрос. Поток должен включать узел ответа HTTP Response для завершения запроса.
Узел http ответ
Отправляет ответ на запрос, полученный от узла HTTP Ввод
.
Принимает:
payload
строка – тело ответа.statusCode
число – если установлено, то используется как код состояния ответа. По умолчанию:200
.headers
объект – если установлено, предоставляет заголовки HTTP для включения в ответ.cookies
объект – если установлено, может использоваться для записи или удаления куков.
Свойства statusCode
и headers
также могут быть установлены внутри самого узла, настройками код состояния
и заголовки
соответственно. Если свойство установлено в узле, оно не может быть переопределено соответствующим свойством сообщения.
Обработка куков
Свойство cookies
должно быть объектом пар имя/значение. Значением может быть либо строка для установки значения куки с параметрами по умолчанию, либо это может быть объект параметров.
В следующем примере устанавливаются два куки - один с именем name
и значением nick
, другой с именем session
и значением 1234
и сроком действия в 15 минут.
msg.cookies = {
name: 'nick',
session: {
value: '1234',
maxAge: 900000
}
}
Допустимые параметры включают в себя:
domain
- (Строка) доменное имя для кукиexpires
- (Дата) срок годности по Гринвичу. Если не указан или установлен в0
, создает сессионный кукиmaxAge
- (Строка) дата истечения срока действия относительно текущего времени в миллисекундахpath
- (Строка) путь для куки. По умолчанию/
value
- (Строка) значение, используемое для куки
Чтобы удалить куки, установите для его value
значение null
.
Узел http запрос
Отправляет HTTP-запрос и возвращает ответ.
Принимает:
url
строка – если ‘URL’ не установлен в узле, это необязательное свойство устанавливает URL запроса.method
строка – если ‘метод’ не установлен в узле, это необязательное свойство устанавливает HTTP-метод запроса. Должно бытьGET
,PUT
,POST
,PATCH
илиDELETE
.headers
объект – устанавливает заголовки HTTP запроса.cookies
объект – если установлено, может использоваться для отправки куки с запросом.payload
– отправляется как тело запроса.rejectUnauthorized
– если установлено значениеfalse
, разрешает отправлять запросы на сайты https, которые используют самозаверенные сертификаты.followRedirects
– если установлено значениеfalse
, запрещает переадресацию (HTTP 301). По умолчаниюtrue
.requestTimeout
– если задано положительное число миллисекунд, будет переопределен глобально заданный параметрhttpRequestTimeout
.
Выводит:
payload
строка | объект | буфер – тело ответа. Узел можно настроить так, чтобы он возвращал тело в виде строки, пытался проанализировать его как строку JSON или оставлял его в виде двоичного буфера.statusCode
число – код статуса ответа или код ошибки, если запрос не может быть выполнен.headers
объект – объект, содержащий заголовки ответа.responseUrl
строка – если при обработке запроса произошли перенаправления, это свойство является окончательным перенаправленным URL-адресом. В противном случае, URL исходного запроса.responseCookies
объект – если ответ содержит куки, это свойство является объектом пар имя/значение для каждого из них.redirectList
массив – если запрос был перенаправлен один или несколько раз, накопленная информация будет добавлена в это свойство.location
- это следующий пункт назначения перенаправления.cookies
- это куки, возвращаемые из источника перенаправления.
При настройке внутри узла свойство URL может содержать mustache
-теги. Это позволяет построить URL-адрес, используя значения входящего сообщения. Например, если для URL-адреса задано значение example.com/{{{topic}}}
, то автоматически будет вставлено значение msg.topic
. Использование {{{...}}}
предотвращает HTML-кодирование таких символов, как /
&
и т.д.
Узел может также автоматически кодировать msg.payload
как параметры для GET
-запроса. В этом случае sg.payload
должен быть объектом.
При работе через прокси-сервер следует либо установить стандартную переменную среды http_proxy=...
и перезапустить Luxms Databoring, либо использовать конфигурацию прокси-сервера. Если была установлена конфигурация прокси, то она имеет приоритет над переменной среды.
Использование нескольких узлов HTTP-запросов
Чтобы использовать несколько таких узлов в одном потоке, нужно позаботиться о свойстве msg.headers
. Первый узел установит это свойство с заголовками ответа. Затем следующий узел будет использовать эти заголовки для своего запроса - обычно это неправильный подход. Если свойство msg.headers
остается неизменным между узлами, оно будет проигнорировано вторым узлом. Чтобы установить свои заголовки, сначала необходимо удалить msg.headers
или сбросить это свойство до пустого объекта: {}
.
Обработка куки
Свойство cookies
, передаваемое узлу, должно быть объектом из пар имя/значение. Значением может быть либо строка для установки значения куки, либо это может быть объект с единственным свойством value
.
Все куки, возвращаемые запросом, передаются обратно в свойстве responseCookies
.
Обработка типов контента
Если msg.payload
является объектом, узел автоматически установит тип содержимого запроса в application/json и закодирует тело соответствующим образом.
Чтобы закодировать запрос как данные формы, для msg.headers
["content-type"]
должно быть установлено application/x-www-form-urlencoded
.
Загрузка файла
Чтобы выполнить загрузку файла, для msg.headers
["content-type"]
должно быть установлено значение multipart/form-data
, а msg.payload
переданный на узел должен быть объектом со следующей структурой:
{
"КЛЮЧ": {
"value": СОДЕРЖИМОЕ_ФАЙЛА,
"options": {
"filename": "ИМЯ_ФАЙЛА"
}
}
}
На местах КЛЮЧ
, СОДЕРЖИМОЕ_ФАЙЛА
и ИМЯ_ФАЙЛА
должны быть установлены соответствующие значения.
Узел Веб-сокет (вход)
Входящий узел WebSocket.
По умолчанию данные, полученные из WebSocket, будут в msg.payload
. Сокет можно настроить так, чтобы он ожидал правильно сформированную строку JSON. В этом случае он будет анализировать JSON и отправлять полученный объект как полное сообщение.
Узел Веб-сокет (выход)
Исходящий узел WebSocket.
По умолчанию msg.payload
будет отправлено через WebSocket. Сокет может быть сконфигурирован для кодирования всего объекта msg в виде строки JSON и отправки его через WebSocket.
Если сообщение, поступающее на этот узел, было начато в потоке узлом Веб-сокет (вход)
, сообщение будет отправлено обратно клиенту, который запустил поток. В противном случае сообщение будет передано всем подключенным клиентам.
Если Вы хотите передать сообщение, которое началось с узла Веб-сокет (вход)
, всем подключенным клиентам, тогда вам нужно удалить свойство msg._session
перед тем как передавать его этому узлу.
Узел tcp (вход)
Предоставляет выбор из нескольких входящих TCP-узлов. Можно либо подключаться к удаленному TCP-порту, либо принимать входящие подключения.
В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024.
Узел tcp (выход)
Предоставляет выбор из нескольких исходящих TCP-узлов. Может подключаться к удаленному TCP-порту, принимать входящие подключения или отвечать на сообщения, полученные от узла tcp (вход)
.
Отправляются только данные msg.payload
.
Если msg.payload
является строкой, содержащей Base64-кодировку двоичных данных, опция Base64-декодирования приведет к ее преобразованию обратно в двоичный файл перед отправкой.
Если msg._session
отсутствует, данные отправляется всем подключенным клиентам.
В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024.
Узел tcp (запрос)
Узел TCP-запроса - отправляет msg.payload
на tcp-порт сервера и ожидает ответа.
Подключается, отправляет запрос
и читает ответ
. Он может либо подсчитать количество возвращенных символов в фиксированный буфер, сопоставить указанный символ перед возвратом, дождаться фиксированного времени ожидания от первого ответа и затем вернуться, сидеть и дожидаться данных, или отправить, а затем немедленно закрыть соединение, не дожидаясь ответа.
Ответ будет возвращен в msg.payload
в виде буфера, поэтому вам может понадобиться применить к нему .toString()
, если нужно преобразование в строку.
Если вы оставите tcp-хост или порт пустыми, они должны быть установлены с помощью свойств msg.host
и msg.port
в каждом сообщении, отправляемом узлу.
Узел udp (вход)
Входящий UDP-узел, который создает msg.payload
, содержащий буфер, строку или base64-строку. Поддерживает многоадресную рассылку.
Он также предоставляет msg.ip
и msg.port
для IP-адреса и порта, с которого было получено сообщение.
В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024 и/или широковещательной рассылки.
Узел udp (выход)
Этот узел отправляет msg.payload
на назначенный UDP-хост и порт. Поддерживает многоадресную рассылку.
Вы также можете использовать msg.ip
и msg.port
для установки значений пункта назначения, но статически настроенные значения имеют приоритет.
Если Вы выберете широковещательную рассылку, то либо задайте в качестве адреса локальный широковещательный IP-адрес, либо попробуйте 255.255.255.255
, который является глобальным широковещательным адресом.
В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024
и/или широковещательной рассылки.
Группа узлов “последовательность”
Узел Разделить
Разбивает сообщение на последовательность сообщений.
Принимает:
payload
объект | строка | массив | буфер
Поведение узла определяется типом msg.payload
:
- строка/буфер – сообщение разделяется с помощью указанного символа (по умолчанию:
\n
), последовательности буфера или по фиксированной длине. - массив – сообщение разбивается на отдельные элементы массива или массивы фиксированной длины.
- объект – сообщение отправляется для каждой пары ключ/значение объекта.
Выводит:
parts
объект
Это свойство содержит информацию о том, как сообщение было отделено от исходного сообщения. При передаче на узел join последовательность может быть собрана обратно в одно сообщение.
Объект содержит следующие свойства:
id
– идентификатор группы сообщенийindex
– позиция в группеcount
– если известно, общее количество сообщений в группе. Смотритепотоковый режим
ниже.type
– тип сообщения: строка =string
; массив =array
; объект =object
; буфер =buffer
ch
– для строки или буфера данные, использованные для разделения сообщения, в виде строки или массива байтовkey
– для объекта - ключ свойства, из которого было создано это сообщение. Узел также может быть сконфигурирован для копирования этого значения в другие свойства сообщения, такие какmsg.topic
.len
– длина каждого сообщения при разделении с использованием значения фиксированной длины.
Этот узел облегчает создание потока, который выполняет общие действия над последовательностью сообщений, перед тем как с помощью узла join объединить последовательность обратно в одно сообщение.
Он использует свойство msg.parts
для отслеживания отдельных частей последовательности.
Потоковый режим
Узел также может использоваться для переформатирования потока сообщений. Например, последовательное устройство, которое отправляет завершенные новой строкой команды, может доставлять одно сообщение с частичной командой в конце. В потоковом режиме
этот узел будет разбивать сообщение и отправлять каждый завершенный сегмент. Если в конце есть частичный сегмент, узел удержит его и добавит к следующему полученному сообщению.
При работе в этом режиме узел не будет устанавливать свойство msg.parts.count
, так как он не знает, сколько сообщений ожидать в потоке. Это означает, что его нельзя использовать вместе с узлом join в его автоматическом режиме.
Узел Соединить
Объединяет последовательности сообщений в одно сообщение.
Доступны три режима:
- автоматический – при использовании с узлом
Разделить
он автоматически объединит сообщения, чтобы восстановить структуру сообщения, которая была до разделения. - ручной – объединяет последовательности сообщений различными способами.
- агрегация последовательности – применяет JSONata-выражение ко всем сообщениям в последовательности, чтобы свести его к одному сообщению.
Принимает:
parts
объект
Чтобы автоматически соединить последовательность сообщений, у них всех должно быть установлено это свойство. Узел Разделить
генерирует это свойство, но его можно создать вручную. Оно имеет следующие свойства:
id
- идентификатор группы сообщенийindex
- позиция в группеcount
- общее количество сообщений в группеtype
- тип сообщения: строка =string
; массив =array
; объект =object
; буфер =buffer
ch
- для строки или буфера данные, использованные для разделения сообщения, в виде строки или массива байтовkey
- для объекта - ключ свойства, из которого было создано это сообщениеlen
- длина каждого сообщения при разделении с использованием значения фиксированной длины
- complete
Если установлено, узел добавит payload
, а затем отправит выходное сообщение в своем текущем состоянии. Если вы не хотите добавлять payload
, удалите его из msg
.
Автоматический режим
В автоматическом режиме используется свойство parts
входящих сообщений, чтобы определить способ объединения последовательности. Это позволяет автоматически выполнять обратное действие для узла Разделить
.
Ручной режим
Когда узел настроен на соединение в ручном режиме, он может объединять последовательности сообщений в различные результаты:
- строка или буфер - создается путем объединения выбранного свойства каждого сообщения с указанными символами соединения или буфером.
- массив - создается путем добавления каждого выбранного свойства или всего сообщения в выходной массив.
- объект ключей/значений - создается с использованием свойства каждого сообщения для определения ключа, под которым хранится требуемое значение.
- слитый объект - создается путем объединения свойства каждого сообщения в один объект.
Другие свойства исходящего сообщения берутся из последнего сообщения, полученного перед отправкой результата.
Свойство кол-во может быть установлено для количества сообщений, которое должно быть получено перед генерацией выходного сообщения. Для выходных данных объекта, когда это число достигнуто, узел может быть настроен на отправку сообщения для каждого последующего полученного сообщения.
Свойство время (сек) может быть установлено, чтобы инициировать отправку нового сообщения с использованием всего, что было получено до сих пор.
Если сообщение получено с установленным свойством msg.complete
, выходное сообщение завершается и отправляется. Это сбрасывает любой подсчет частей.
Если сообщение получено с установленным свойством msg.reset
, частично завершенное сообщение удаляется и не отправляется. Это сбрасывает любой подсчет частей.
Режим агрегации последовательности
Когда настроено объединение в режиме агрегирования, выражение применяется к каждому сообщению в последовательности, и результат накапливается для создания одного сообщения.
- Начальное значение
Начальное значение накопленного значения $A
.
- Агрегирующее выражение
Выражение JSONata, которое вызывается для каждого сообщения в последовательности. Результат передается следующему вызову выражения как накопленное значение. В выражении могут использоваться следующие специальные переменные:
$A
: накопленное значение,$I
: индекс сообщения в последовательности,$N
: количество сообщений в последовательности.
- Исправляющее выражение
Необязательное выражение JSONata, которое применяется после того, как агрегирующее выражение было применено ко всем сообщениям в последовательности. В выражении могут использоваться следующие специальные переменные:
$A
: накопленное значение,$N
: количество сообщений в последовательности.
По умолчанию агрегирующее выражение применяется по порядку, от первого до последнего сообщения последовательности. При желании его можно применять в обратном порядке.
Пример: следующие параметры, при получении последовательности числовых значений, рассчитывают среднее значение:
- Агрегирующее выражение:
$A+payload
- Начальное значение:
0
- Исправляющее выражение:
$A / $N
Хранение сообщений
Этот узел будет буферизировать сообщения внутри, чтобы работать между последовательностями. Параметр nodeMessageBufferMaxLength
можно использовать для ограничения количества сообщений, которые узел будут буферизовать.
Узел Сортировать
Функция, которая сортирует свойство сообщения или последовательность сообщений.
Когда узел настроен сортировать свойство сообщения, он сортирует данные массива в указанном свойстве сообщения.
Когда узел настроен сортировать последовательность сообщений, он будет переупорядочивать сообщения.
Порядок сортировки может быть:
- Восходящий.
- Нисходящий.
Для чисел, числовое упорядочивание можно указать с помощью флажка.
Когда выбрана сортировка свойства, ключом сортировки может быть значение элемента или выражение JSONata. Когда выбрана сортировка последовательности сообщений, ключом сортировка может быть свойство сообщения или выражение JSONata.
При сортировке последовательности сообщений узел сортировки полагается на полученные сообщения, чтобы установить msg.parts
. Узел Разделить
генерирует это свойство, но его можно создать вручную. Оно имеет следующие свойства:
id
- идентификатор группы сообщений.index
- позиция в группе.count
- общее количество сообщений в группе.
Этот узел буферизирует сообщения внутри для своей работы. Чтобы предотвратить непредвиденное использование памяти, можно указать максимальное количество хранимых сообщений. По умолчанию количество сообщений не ограничено.
Свойство nodeMessageBufferMaxLength
устанавливается в settings.js.
Узел Группировать
Создает последовательности сообщений на основе различных правил.
Существует три режима создания последовательностей сообщений:
- Количество сообщений - группирует сообщения в последовательности заданной длины. Параметр совпадения указывает, сколько сообщений в конце одной последовательности следует повторить в начале следующей последовательности.
- Интервал времени - группирует сообщения, поступающие в указанный интервал. Если в течение интервала сообщения не поступают, узел может при желании отправлять пустое сообщение.
- Объединение последовательностей - создает последовательность сообщений путем объединения входящих последовательностей. Каждое сообщение должно иметь свойство msg.
topic
и свойствоmsg.parts
, определяющие его последовательность. Узел настраивается со списком значенийtopic
для идентификации порядка объединения последовательностей.
Хранение сообщений
Этот узел будет буферизировать сообщения внутри, чтобы работать с последовательностями. Параметр nodeMessageBufferMaxLength
можно использовать для ограничения количества сообщений, которые узел будут буферизовать.
Если сообщение получено с установленным свойством msg.reset, буферизованные сообщения удаляются и не отправляются.
Группа узлов “анализатор”
Узел csv
Выполняет преобразования между строкой в CSV формате и ее представлением в JavaScript-объекте, в любом направлении.
Принимает:
payload
объект | массив | строка – JavaScript объект, массив или CSV-строка.
Выводит:
payload
объект | массив | строка
- Если на входе значение строкового типа, узел попытается проанализировать его как CSV и создает объект JavaScript из пар ключ/значение для каждой строки. Затем узел либо отправит сообщение для каждой строки или одно сообщение, содержащее массив объектов.
- Если на входе JavaScript объект, узел попробует построить CSV-строку.
- Если на входе массив простых значений, узел построит однострочную CSV-строку.
- Если на входе массив массивов или массив объектов, создается многострочная CSV-строка.
Шаблон столбцов может содержать упорядоченный список имен столбцов. При преобразовании CSV в объект имена столбцов будут использоваться в качестве имен свойств. Кроме того, имена столбцов могут быть взяты из первой строки CSV.
При преобразовании в CSV шаблон столбцов используется для определения того, какие свойства извлекать из объекта и в каком порядке.
Если шаблон пуст, то узел может использовать простой список свойств, разделенных запятыми, предоставленных в msg.columns
, чтобы определить, что извлечь. Если его нет, то все свойства объекта выводятся в том порядке, в котором они были найдены в первой строке.
Если входные данные являются массивом, то шаблон столбцов используется только для необязательного генерирования строки с заголовками столбцов.
Если выбрана опция 'разбирать числовые значения
, строковые числовые значения будут возвращаться в виде чисел. К примеру, среднее значение в CSV-строке 1,"1,5",2
.
Если выбрана опция включать пустые строковые значения
, пустые строки будут возвращениы в результате. К примеру, среднее значение в CSV-строке "1","",3
.
Если выбрана опция включить null-значения
, null
-значения будут возвращениы в результате. К примеру, среднее значение в CSV-строке "1",,3
.
Узел может принимать входные данные, состоящие из нескольких частей, при условии, что свойство parts
установлено правильно, например, из узла Запись в файл
или узла Разделить
.
При выводе нескольких сообщений они будут иметь свойство parts и формировать полную последовательность сообщений.
В шаблоне столбцов должна использоваться запятая для разделения - даже если для данных выбран другой разделитель.
Узел html
Извлекает элементы из HTML-документа, хранящегося в msg.payload
, с помощью CSS-селектора.
Принимает:
payload
строка – HTML-строка, из которой извлекать элементы.select
строка – если селектор не настроен на панели редактирования узла, то он может быть установлен как свойствоmsg
.
Выход:
payload
массив | строка – результатом может быть либо одно сообщение, в которомpayload
содержит массив найденных элементов, либо несколько сообщений, каждое из которых содержит найденный элемент. Если отправлено несколько сообщений, у них также будет установленparts
.
Этот узел поддерживает комбинацию селекторов CSS и jQuery.
Узел json
Выполняет преобразования между строкой в JSON формате и ее представлением в JavaScript-объекте, в любом направлении.
Принимает:
payload
объект | строка – JavaScript объект или JSON-строка.schema
объект – необязательный объект JSON-схемы для проверки данных. Свойство будет удалено перед отправкой msg следующему узлу.
Выводит:
payload
объект | строка- Если вход является JSON-строкой, узел пытается проанализировать ее как JavaScript объект.
- Если вход является JavaScript объектом, узел создает JSON-строку. Строка может быть при желании отформатирована.
schemaError
массив – если проверка JSON-схемы завершится неудачно, узломОтлов ошибок
можно получить свойствоschemaError
, содержащее массив ошибок.
По умолчанию узел работает с msg.payload
, но его можно настроить для преобразования любого свойства сообщения.
Узел также может быть сконфигурирован для обеспечения конкретной кодировки вместо переключения между ними. Это можно использовать, например, при работе с узлом HTTP Вход
, чтобы гарантировать, что данные payload
всегда будут являться объектом, даже если входящий запрос неправильно установил свой тип содержимого для узла HTTP Вход
, чтобы выполнить преобразование.
Если узел настроен так, чтобы свойство кодировалось как строка, и он получает строку, дальнейшие проверки этого свойства выполняться не будут. Он не будет проверять, является ли строка допустимым JSON, и не будет переформатировать ее, если выбрана опция форматирования.
Подробнее о JSON-схеме Вы можете узнать в спецификации здесь.
Узел xml
Выполняет преобразования между строкой в XML формате и ее представлением в JavaScript-объекте, в любом направлении.
Принимает:
payload
объект | строка – JavaScript объект или XML-строка.options
объект – это необязательное свойство может использоваться для передачи любых параметров, поддерживаемых библиотекой, которая используется для преобразования в/из XML. См. документацию xml2js для получения дополнительной информации.
Выводит:
payload
объект | строка- Если на входе значение строкового типа, узел пытается проанализировать его как XML и создает объект JavaScript.
- Если на входе JavaScript объект, узел пытается построить XML-строку.
При преобразовании между XML и объектом любые XML-атрибуты по умолчанию добавляются как свойство с именем $
. Любое текстовое содержимое добавляется как свойство с именем _
. Эти имена свойств могут быть указаны в конфигурации узла.
Например, следующий XML:
<p class="tag">Hello World</p>
будет преобразован в:
{
"p": {
"$": {
"class": "tag"
},
"_": "Hello World"
}
}
Узел yaml
Выполняет преобразования между строкой в YAML формате и ее представлением в JavaScript-объекте, в любом направлении.
Принимает:
payload
объект | строка – JavaScript объект или YAML-строка.
Выводит:
payload
объект | строка- Если на входе YAML-строка, узел пытается проанализировать ее как JavaScript объект.
- Если на входе JavaScript объект, узел создает YAML-строку.
Группа узлов “хранилище”
Узел Запись в файл
Записывает msg.payload
в файл, либо добавлением в конец, либо заменой существующего контента. Кроме того, им можно удалять файл.
Принимает:
filename
строка – eсли не настроено в узле, это необязательное свойство устанавливает имя файла, который будет обновлен.
Выход: по завершении записи входное сообщение отправляется на выходной порт.
Данные каждого сообщения будут добавлены в конец файла, при желании добавляя символ новой строки \n
между каждым.
Если используется msg.filename
, файл будет закрыт после каждой записи. Для лучшей производительности используйте фиксированное имя файла.
Он может быть настроен на перезапись всего файла, а не на добавление. Например, при записи двоичных данных (типа изображения) в файл, следует использовать эту опцию и отключить опцию добавления новой строки.
Кодировка данных, записанных в файл, может быть выбрана в списке кодировок.
Кроме того, этот узел может быть настроен на удаление файла.
Узел Чтение из файла
Читает содержимое файла как строку или двоичный буфер.
Принимает:
filename
строка – это свойство устанавливает имя файла для чтения, если оно не задано в настройках узла.
Выводит:
payload
строка | буфер – cодержимое файла в виде строки или двоичного буфера.filename
строка – eсли не настроено в узле, это необязательное свойство устанавливает имя файла для чтения.
Имя файла должно быть абсолютным путем к файлу, иначе оно будет путем относительно рабочего каталога процесса Luxms Databoring.
В Windows может быть необходимо кодировать разделители пути двойной косой чертой, например: \\Users\\myUser
.
При желании текстовый файл можно разбить на строки, выводя по одному сообщению для каждой строки, или двоичный файл разбить на более мелкие фрагменты буфера - размер блока зависит от операционной системы, но обычно составляет 64 КБ (Linux/Mac) или 41 КБ (Windows).
При разбиении на несколько сообщений каждое сообщение будет иметь свойство parts, формирующее полную последовательность сообщений.
Кодировка входных данных может быть выбрана из списка кодировок, если выходной формат - строка.
Узел Наблюдение
Наблюдает за изменениями директории или файла.
Вы можете ввести список разделенных запятыми директорий и/или файлов. Вам нужно взять в кавычки "..."
те из них, в которых есть пробелы.
В Windows вы должны использовать двойную обратную косую черту \\
вместо одной в именах директорий.
Полное имя фактически измененного файла помещается в msg.payload
и msg.filename, а строковая версия списка наблюдения возвращается в msg.topic
.
.file
содержит только краткое имя файла, который изменился. msg.type
содержит тип измененной единицы, обычно это file
для файла или directory
для директории, тогда как msg.size
содержит размер файла в байтах.
В Linux все является файлами, и может быть под наблюдением.
Наблюдаемые директория или файл должны существовать. Если файл или директория будут удалены, они могут перестать отслеживаться, даже если они затем будут созданы заново.
Группа узлов luxmsbi
Узел Планировщик задач
Данный узел позволяет планировать запуск выполнения задач, используя полный синтаксис crontab
. Не имеет входов. На выходе будет подан стартовый сигнал на следующий в указанный период времени и с заданным интервалом и промежутком.
Принимает:
Pattern
строка – период запуска задается согласно синтаксису CRON:
┌───────────── second (0–59) (optional)
│ ┌───────────── minute (0–59)
│ │ ┌───────────── hour (0–23)
│ │ │ ┌───────────── day of the month (1–31)
│ │ │ │ ┌───────────── month (1–12)
│ │ │ │ │ ┌───────────── day of the week (0–6) (Sunday to Saturday; 7 is also Sunday on some systems)
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
* * * * * *You may use multiples values separated by comma:
1,2,4,5 * * * *
- You may also define a range of values:
1-5 * * * *
- Step values can be used in conjunction with ranges, following a range with ‘/’ and a number. e.g: 1-10/2 that is the same as 2,4,6,8,10. Steps are also permitted after an asterisk, so if you want to say “every two minutes”, just use */2:
*/2 * * * *
Examples:
Description | Equivalent to |
---|---|
Run once a year at midnight of 1 January | * 0 0 1 1 * |
Run once a month at midnight of the first day of the month | * 0 0 1 * * |
Run once a week at midnight on Sunday | * 0 0 * * 0 |
Run once a day at midnight | * 0 0 * * * |
Run once an hour at the beginning of the hour | * 0 * * * * |
Узел Следить за изменениями файлов (watch files)
Наблюдает за изменениями файла в директории.
Вы можете ввести список разделенных запятыми файлов.
Полное имя фактически измененного файла помещается в msg.payload.file, msg.payload.status содержит тип измененной единицы.
При конфигурации данного узла необходимо указать следующие поля:
- Папка кнопка с выбором расположения файла: File System - наблюдает за файлами на сервере. Distributed Document Storage - наблюдает за файлами в хранилище NATS.
- Путь к файлу (необходимо указать как минимум корневую директорию
/
) - Файлы - перечисление файлов через запятую. В случае, если файлы не указаны - следит за всеми файлами в директории
Снизу под узлом отображается его статус. Ниже представлены варианты статусов узла:
- желтый индикатор, надпись “connecting” - узел подключается к серверному приложению Appserver;
- зеленый индикатор, надпись “listening” - узел подключен к серверному приложению Appserver;
- красный индикатор, надпись “error” - ошибка Appserver;
- синий индикатор, надпись “received {имя файла}” - файл создан или изменен;
Узел SQL источник
Узел запроса данных с произвольным sql-запросом. Данный узел выполняет запрос в заданном Datasource
с помощью RSocket и с указанными параметрами, статус выполнения запроса будет отображен в статусе узла
Принимает:
msg.payload.query
– строку sql-запроса, если не установлен в самом узле.
Выводит:
- Результат выполнения sql-запроса сохраняется в объекте
msg
.
Параметры:
Имя
строка - наименование узла на холсте.Источник данных
дропдаун – заданный источник данных, для которого будет выполнен запрос.Размер чанка
число - результаты запроса к бд собираются в группы указанного размера.
Причечание. Результаты выдаются массивом в окно отладчика, иначе выдаются в payload
по одномую
Editor:
Строка
- тело запроса который должен быть выполнен при инициализации узла.
Пример запроса:
select 1 as num, 'one' as text_num
Результат запроса, выведенный в окно отладки:
{
"_msgid": "ad90d997b8ae0ac4",
"payload": {
"num": 1,
"text_num": "one"
},
"topic": "",
"end_of_stream": true
}
Узел HTTP IN Auth
Создает конечную точку HTTP для запуска потока с помощью HTTP запроса извне. В отличие от узла HTTP IN, узел HTTP IN Auth создает уникальную ссылку для всего инстанса Data Boring за счет использования в URL уникального ключа инстанса пользователя. Без специальных настроек не требует авторизации.
Поля:
- GUID - генерируется автоматически
- Метод - HTTP метод
- Адрес - последняя часть URL запроса, например /flow/etl_process1. Адрес должен быть уникальным в рамках текущего пользователя
- Группы пользователей - если указаны, то будет определяться пользователь по сессии Luxms BI (по Cookie) и прверяться принадлежность пользоватяля выбранным группам пользователей
- Логин и пароль - если заполнены, то при обращении по данной ссылке в браузере будет отображаться WEB форма для ввода Логина и Пароля
Выводит:
payload
– дляGET
-запроса содержит объект с любыми параметрами строки запроса. В противном случае содержит тело HTTP-запроса.req
объект – объект HTTP-запроса. Этот объект содержит несколько свойств, которые предоставляют информацию о запросе:body
- тело входящего запроса. Формат будет зависеть от запроса.headers
- объект, содержащий заголовки HTTP-запроса.query
- объект, содержащий любые параметры строки запроса.params
- объект, содержащий любые параметры маршрута.cookies
- объект, содержащий куки запроса.files
- если включено в узле, объект, содержащий любые файлы, загруженные как частьPOST
-запроса.
Для запросов, которые содержат тело, такие как POST
или PUT
, содержимое запроса доступно в msg.payload
.
Если тип содержимого запроса может быть определен, тело будет преобразовано в любой подходящий тип. Например, application/json будет преобразован в объект JavaScript.
Этот узел не отправляет никакого ответа на запрос. Поток должен включать узел ответа HTTP Response для завершения запроса.
Узел Kafka потребитель сообщений в Data Boring
Этот узел можно использовать для работы с сообщениями Kafka. Узел-потребитель сообщений.
Потребитель тематических сообщений kafka, которые генерируются в сообщениях Data Boring.
Предоставляет типы базового и высокого уровня.
Поля:
- Имя - имя узла
- ID источника - ID источника данных Kafka
- Тема - название topic в Kafka
- Параметры - параметры Kafka Consumer. Описание можно посмотреть по ссылке
Узел Kafka производитель сообщений в Data Boring
Этот узел можно использовать для работы с сообщениями Kafka. Узел-производитель сообщений.
Преобразует сообщение из Data Boring в тематические сообщения Kafka. Предоставляет типы базового и высокого уровня.
Поля:
- Имя - имя узла
- ID источника - ID источника данных Kafka
- Тема - название topic в Kafka
- Параметры - параметры Kafka Consumer. Описание можно посмотреть по ссылке
Узел Выполнить произвольный запрос на сервере
Выполнение произвольного sql-запроса в заданном источнике данных с указанными параметрами
Принимает:
msg.payload.query
– строку sql-запроса, если не установлен в самом узле.
Выводит:
- Результат выполнения запроса или выборки, заданной пользователем.
Параметры:
Имя
строка – наименование узла на холсте.Источник данных
строка – заданный источник данных, для которого будет выполнен запрос.Ошибку в результат
чекбокс - если задан, то код ошибки сохраняется в объектmsg
. Узел в таком случае отображает сообщениеwarn
желтой меткой под узлом и поток оброботки не прерывается.Editor
строка – тело запроса, который должен быть выполнен при инициализации узла.
Пример запроса:
INSERT INTO d_date
(dt, plan, fakt)
SELECT t.day::date as dt, random() * 100 + 44 AS plan, random() * 100 AS fakt
FROM generate_series(timestamp '2022-05-01'
, timestamp '2022-10-30'
, interval '1 day') AS t(day)
order by t.day::date;
Результат запроса, выведенный в окно отладки:
{
"_msgid": "b0312aba0ab8f088",
"payload": {
"result": 183,
"counts": [
183
],
"time": 9
},
"topic": ""
}
Узел SAP RFC
Использует RFC
протокол для соединения с системами SAP
и получения данных.
Принимает:
connectorID
(строка) – имя источника данныхfunctionName
(строка) - название удаленного метода, который будет вызван изSAP
.datagateUrl
(строка) - адрес datagate в форматеhttp://host:port/path
(например,http://localhost:8200/sap
). Необязательный параметр.parameters
(JSON) - параметры запроса, отправятся в полеbody
.
Пример запроса:
{
"BUSINESSPARTNER" : 8
}
Выводит:
Результат выполнения запроса в формате JSON
.
Узел SOAP
Узел SOAP позволяет пользователям выполнять SOAP-запрос.
Узел SOAP содержит следующие параметры для настройки:
- Имя - наименование узла
- WSDL - ссылка на WSDL определение SOAP сервиса
- Method - вызыыввемый SOAP метод
- msg.payload - тело SOAP запроса
- msg.headers - заголовки SOAP запроса
- Auth - способ аутентификации:
- None - без аутентификация
- Basic auth - Basic аутентификация с логином и паролем
- Client certificate - требует заполнения сертификата
- WS-Security - требует заполнения клиентского ключа
- Bearer Token - требует указания токена
Узел Перенос данных
Типы источников данных:
SQL
- результат выполнения SELECT-запроса к БДXLS
- содержимое Excel-файла. Поддерживаются форматыxls
иxlsx
CSV
- содержимое CSV-файлаDBF
- содержимое DBF-файлаQVD
- содержимое QVD-файлаAvro
- содержимое Avro-файлаParquet
- содержимое Parquet-файла
Типы получателей данных:
SQL
- данные сохраняются в БД (в одну или несколько таблиц)CSV
- данные сохраняются в файл в формате CSV
Общие входные параметры:
Имя (name)
Название узла в потокеПовторы (retryCount)
Общее количество попыток выполненияЗадержка \(мс\) (retryDelay)
Задержка между попытками в мсТип источника (sourceType)
Доступные типыSQL
,XLS
,CSV
,DBF
,QVD
,Avro
,Parquet
Тип получателя (destinationType)
Доступные типыSQL
,CSV
Входные параметры для SQL
-источника:
ИД соединения (sourceSqlConnIdent)
ИД настроенного источника данных. Например,luxmsbi
илиch
Запрос (sourceSqlQuery)
Текст SELECT-запроса для получения данных
Входные параметры для XLS
-источника:
Путь к файлу-источнику (sourceXlsFilePath)
Путь к Excel-файлу, из которого будут переноситься данныеНомер строки заголовка (sourceXlsHeaderRow)
Если указано, определяет номера строк на листах Excel-файла, в которых находятся заголовкиНомер первой строки с данными (sourceXlsFirstDataRow)
Если указано, определяет номера строк на листах Excel-файла, с которых начинаются данныеСписок номеров страниц \(1,3...\) (sourceXlsSheetNumbers)
Если указано, определяет номера загружаемых листов из Excel-файлаПотоковая обработка (sourceXlsStreamProcessing)
Если включено, файл-источник загружается потоковым обработчиком. Подходит для больших файлов, где есть только данные и не надо вычислять формулы и т.п. Доступна только для файлов в форматеxlsx
Удалить файл по завершении (sourceXlsDropFileOnComplete)
Если включено, файл-источник будет удалён после переноса данных
Входные параметры для CSV
-источника:
Кодировка файла (sourceCsvFileEncoding)
Доступные кодировки -utf-8
,cp866
,cp1251
Путь к файлу-источнику (sourceCsvFilePath)
Путь к CSV-файлу, из которого будут переноситься данныеCSV с заголовками (sourceCsvWithNames)
Если включено, первая строка должна содержать заголовкиCSV разделитель (sourceCsvDelimiter)
Доступные разделители -tab
,pipe
,comma
,semicolon
Сжатый (sourceCsvZipped)
Если включено, файл-источник должен быть сжат. Формат сжатия -gzip
Удалить файл по завершении (sourceCsvDropFileOnComplete)
Если включено, файл-источник будет удалён после переноса данных
Входные параметры для DBF
-источника:
Кодировка файла (sourceDbfFileEncoding)
Доступные кодировки -utf-8
,cp866
,cp1251
Путь к файлу-источнику (sourceDbfFilePath)
Путь к DBF-файлу, из которого будут переноситься данныеУдалить файл по завершении (sourceDbfDropFileOnComplete)
Если включено, файл-источник будет удалён после переноса данных
Входные параметры для QVD
-источника:
Путь к файлу-источнику (sourceQvdFilePath)
Путь к QVD-файлу, из которого будут переноситься данныеУдалить файл по завершении (sourceQvdDropFileOnComplete)
Если включено, файл-источник будет удалён после переноса данных
Входные параметры для Avro
-источника:
Путь к файлу-источнику (sourceAvroFilePath)
Путь к Avro-файлу, из которого будут переноситься данныеУдалить файл по завершении (sourceAvroDropFileOnComplete)
Если включено, файл-источник будет удалён после переноса данных
Входные параметры для Parquet
-источника:
Путь к файлу-источнику (sourceParquetFilePath)
Путь к Parquet-файлу, из которого будут переноситься данныеУдалить файл по завершении (sourceParquetDropFileOnComplete)
Если включено, файл-источник будет удалён после переноса данных
Входные параметры для SQL
-получателя:
ИД соединения (destinationSqlConnIdent)
ИД настроенного источника данных. Например,luxmsbi
илиch
Имя схемы (destinationSqlSchemaName)
Имя целевой схемы в БД. Если не указано, будет использоваться имяcustom
Имя таблицы (destinationSqlTableName)
Имя целевой таблицы в БДРежим переноса (destinationSqlMode)
Доступные режимы -truncate
,append
,drop
Преобразовывать типы (destinationSqlTryToCast)
Если включено, колонки строкового типа будут, при возможности, преобразованы в другие типыРазмер чанка (destinationSqlChunkSize)
Задаёт количество строк в чанке, которыми будут переноситься данные
Входные параметры для CSV
-получателя:
CSV с заголовками (destinationCsvWithNames)
Если включено, первой строкой будет добавлена строка с заголовкамиCSV разделитель (destinationCsvDelimiter)
Доступные разделители -tab
,pipe
,comma
,semicolon
Сжатый (destinationCsvZipped)
Если включено, файл-получатель будет сжат. Формат сжатия -gzip
Выходные параметры для SQL
-получателя:
Выходное сообщение в поле payload
содержит объект:
msg.payload.schema
- имя схемы в БД, в которой находятся таблицы с полученными даннымиmsg.payload.tables
- список имён таблиц в БД, в которые переносились данные
Выходные параметры для CSV
-получателя:
msg.payload.sink
- URI получателяmsg.payload.count
- Количество строк с данными
CSV-разделители:
Разделитель | Описание |
---|---|
tab | Символ табуляции |
pipe | Вертикальная черта |
comma | Запятая |
semicolon | Точка с запятой |
Режимы переноса данных:
Режим | Описание |
---|---|
truncate | Предварительно удалить содержимое целевой таблицы |
append | Добавить к содержимому целевой таблицы |
drop | Предварительно полностью удалить целевую таблицу |
В версии 9.0 Luxms Data Вoring появилось распределенное документное хранилище, работающее по протоколу NATS. Это позволяет удобно передавать сообщения между различными приложениями.
Если схема не указана при указании пути к файлу, то по умолчанию приложение будет работать с хранилищем NATS, что может привести к нежелательным последствиям для Luxms Data Вoring.
По умолчанию NATS использует схему dds://
перед путем к файлу. Если необходимо работать с локальными данными, всегда явно указывайте схему.
Например: file:///tmp/excel_one.xlsx
.
Узел Ждать всех
Узел ждёт входящих сообщений от всех присоединённых на вход узлов, собирает их в массив msg.payload
и затем передает этот массив для дальнейшей обработки или передачи.
Количество ожидаемых сообщений должно соответствовать количеству присоединенных связей
Узел Отправить письмо
Узел позволяет отправить электронное письмо со вложением.
Принимает:
from
- адрес отправителя.fromName
- имя отправителя.subject
- тема письма.to
- адрес получателя.cc
- адреса получателей, которым отправятся копии письма, указываются через запятую.body
- текстовое содержимое письма.attachment
- файлы, приложенные к письму.
Для работы узла Отправить письмо
необходимо настроить работу с почтовым сервером в конфигурационном файле application.properties
сервиса luxmsbi-appserver
на каждом сервере. Необходимые настройки описаны по данной ссылке.
Узел SSH EXEC
Узел для работы с SSH соединениями. Позволяет установить SSH соединение и выполнить команду на удаленном сервере.
Принимает:
Command
- команда, которая будет выполнена в терминале на удаленном сервере.Host
- Хост удаленного сервера.Port
- порт на удаленном сервере, который прослушивается для SSH подключения.MethodAuth
- Метод авторизация по паролю или по приватному ключу -password
илиprivate key
.Username
- имя пользователя на удаленном сервере.Password
- пароль пользователя на удаленном сервере.TimeOut
- максимально время ожидания ответа при попытке подключения или выполнения команды.Keys
- приватный ключ для авторизации на удаленном сервере с сохранением исходного форматирования, не передается вmsg
.Passphrase
- парольная фраза, которая была указана при генерации ключа.
Группа узлов jupyter
Узел jupyter-get
Узел позволяет получать файл с сервера Jupyter.
Входные параметры:
Имя (строка)
- наименование узла в потокеКонфигурация Jupyter (luxmsbi-jupyter-config)
- настройки для подключения к серверу JupyterПуть к файлу (строка)
- файл, который будет передан с сервера Jupyter. Путь задаётся от корня рабочей папки на сервере Jupyter
Выходные параметры:
msg.payload (объект)
- объект с информацией о полученном файле. Содержимое файла находится в полеcontent
Узел jupyter-put
Узел позволяет загружать файлы на сервер Jupyter.
Входные параметры:
Имя (строка)
- наименование узла в потокеКонфигурация Jupyter (luxmsbi-jupyter-config)
- настройки для подключения к серверу JupyterПуть к файлу (строка)
- файл, в который будет загружено содержимое поляmsg.payload
. Путь задаётся от корня рабочей папки на сервере JupyterТип файла (строка)
- возможные значения -notebook
иfile
. Если передаётсяnotebook
, тоФормат файла
должен бытьjson
Формат файла (json)
- возможные значения -json
,text
,base64
Выходные параметры:
msg.payload (объект)
- объект с информацией о загруженном на сервер файле
Узел jupyter-run
Узел позволяет запускать на выполнение код на сервере Jupyter.
Входные параметры:
Имя (строка)
- наименование узла в потокеКонфигурация Jupyter (luxmsbi-jupyter-config)
- настройки для подключения к серверу JupyterВыполнить ноутбук (чекбокс)
- выбор источника кода для выполненияПуть к ноутбуку (строка)
если выбраноВыполнить ноутбук
, в поле задаётся имя файла с ноутбуком. Путь задаётся от корня рабочей папки на сервере JupyterВернуть Stdout (чекбокс)
- если стоит галочка, вmsg.payload.content
возвращается вывод вStdout
Вернуть файл (строка)
- если не выбраноВернуть Stdout
, в поле можно указать файл, чьё содержимое вернётся вmsg.payload.content
. Путь задаётся от корня рабочей папки на сервере JupyterПитон-маджики (текст)
- если не выбраноВыполнить ноутбук
, в поле задаётся код питон-маджиков для выполненияПитон-скрипт (текст)
- если не выбраноВыполнить ноутбук
, в поле задаётся код питон-скрипта для выполнения
Выходные параметры:
msg.payload.content (строка)
- если выбраноВернуть Stdout
, в данном поле возвращается вывод вStdout
. Иначе, если указан путь в полеВернуть файл
, в данном поле возвращается содержимое файла по этому пути
Узел R
Узел позволяет запускать на выполнение код на сервере R.
Входные параметры:
Конфигурация сервера R (список)
- выбор одного из заранее настроенных подключений к серверу R.
Можно выбрать опцию “Добавить новый R сервер…”, тогда будет отображен диалог для настройки нового подключения:
В данном окне требуется заполнить: имя или IP адрес хоста, на котором функционирет R сервер и порт R сервера. Кроме этого можно указать Username и Password для подключения к серверу, если это требуется.
Установка R сервера
Установите R на компьютер, который вы хотите использовать в качестве сервера R. Его можно скачать на веб-сайте R Project. После установки R установите все библиотеки, необходимые для удаленного выполнения кода. Запустите R и выполните следующие команды:
install.packages('RJSONIO')
install.packages('Rserve')
Запуск R сервера
Запустите интерпретатор R и выполните следующие команды, чтобы запустить Rserve.
library(Rserve)
Rserve()
Code (текст)
- скрипт на языке R
Когда узел R получает сообщение c кодом, оно копируется на сервер R, и после этого выполняется указанный код. Вы можете манипулировать объектом msg с помощью кода R по умолчанию. После успешного выполнения кода объект msg копируется обратно в узел R и выдается на выходе узла.
Вот пример кода, в котором видно как получить доступ к объекту msg в R:
data <- msg$payload$data;
msg$payload$mean <- mean(data);
msg$payload$median <- median(data);
Тип переменной не преобразуется этим узлом. Важно убедиться, что типы данных элементов, к которым требуется получить доступ, представлены правильным типом данных (например, массивом чисел с плавающей запятой).
Name (строка)
- наименование узла в потоке
Выходные параметры:
msg.payload.content (строка)
- в данном поле возвращается вывод вStdout
MLP узлы
Данные узлы можно использовать совместно с Luxms BI при работе с MLP моделью данных. Для работы с ними необходима установка компонента luxmsbi-importer.
Узел Задать таблицу условий
Задает тип шага и условия фильтрации для формирования данных. Узел использует глобальный заданный контекст данных, на основе этого формирует доступные таблицы и тип узла.
Данный узел в графическом режиме позволяет пользователю создать таблицы условий и фильтрации которые будут подавать на выход заданные метки и результат фильтрации.
Принимает:
dataSourceId
строка – источник данных для преобразования и отображения.startDate
строка – задаёт фильтр для выборки данных.prevNodeId
число|строка – идентификатор существующего узла, с которого был передан сигнал.flowId
число|строка – идентификатор текущего потока, к которому применяется правило сравнения и фильтрации
Выводит:
- Текущий статус операции и результирующее свойство
result
со значениемred
илиgreen
, а также набором меток заданными через запятую.
Узел Группировать данные для импортера
Узел запроса данных за один период времени, а также трансформации/агрегации для импортера. Создает последовательности сообщений для Luxms Importer на основе различных правил.
Принимает:
Name
строка – задает свойство имени узла на холсте.Batch ID
строка – начальный ID пакета для импортера.Batch
строка – дополнительный параметр для Luxms Importer.
Хранение сообщений:
Этот узел будет буферизировать сообщения внутри, чтобы работать с
последовательностями. Глобальный параметр nodeMessageBufferMaxLength
можно
использовать для ограничения количества сообщений, которые узел будут буферизовать.
Данный узел отображется только в случае, если установлен компонент luxmsbi-importer.
Узел Загрузка в датасет
Узел загрузки данных в заданный датасет, подготовленных предыдущим узлом для Luxms BI Importer. Узел не имеет выхода, на вход принимает один параметр.
Параметры:
Name
строка – наименование узла на холсте.Dataset ID
строка – ID начального набора данных / операции для Luxms BI Importer.
Принимает:
payload
строка – сформированные параметры для загрузки данных в датасет через Luxms BI Importer.
Данный узел отображется только в случае, если установлен компонент luxmsbi-importer.
Узел Отладка
Отображает отладочные сообщения и свойства Luxms BI Importer получаемые, указанным узлом на боковой панели во вкладке отладки и, при необходимости, журнале среды выполнения.
Вкладка отладки на боковой панели обеспечивает структурированное представление полученных узлом сообщений, что упрощает исследование их структуры.
Объекты и массивы JavaScript могут быть свернуты и развернуты по мере необходимости. Буферы могут отображаться в виде данных как есть или в виде строки, когда это возможно.
Рядом с каждым сообщением отладочная панель показывает информацию о времени
получения сообщения, узле, который его отправил, и типе данных. Нажатие на
идентификатор узла-источника покажет этот узел в рабочей области.
Узел не имеет выходов.
Данный узел имеет только один вход, который инициализирует запрос отладочных сообщений в Luxms BI Importer, и параметр Name
, который задает имя узла на холсте.
Данный узел отображется только в случае, если установлен компонент luxmsbi-importer.
Узел Период
Создает поток “периодов” для импортера данных в датасеты LuxmsBI.
Узел имеет несколько выходов, каждый выход отвечает за свой тип периода – ГОД
, МЕСЯЦ
и так далее. Набор типов можно выбирать в конфигурации узла. В поток будут отправлены сообщения с полем periodId
, который затем используется в узлах типа Группировать данные для импортера
.
Параметры:
fromDate
– дата начала генерации периодов (включительно). Может быть переопределено во входящем сообщении в формате ISO8601.toDate
– дата окончания генерации периодов (исключительно). Может быть переопределено во входящем сообщении в формате ISO8601.duration
– длительность интервала генерации в формате ISO 8601 duration, если указано – параметрtoDate
игнорируется. Может принимать отрицательные значения, в таком случае генерация происходит отfromDate
в прошлое,fromDate
при этом исключается как последнее значение. Может быть переопределено во входящем сообщении.
Пример:
Входящее сообщение {fromDate:'2000-01-01', duration:'P10Y'}
генерирует десять периодов типа ГОД
с 2000 по 2019 год включительно.
Данный узел отображется только в случае, если установлен компонент luxmsbi-importer.