Перейти к основному содержимому

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.

Правила

  1. Правила категории value rules сравнивают значение указанного свойства сообщения
  2. Правила категории sequence rules могут применяться для последовательностей сообщений, таких как сгенерированные узлом Разделить
  3. Выражение JSONata исполняется для сообщения и считается подходящим, если оно возвращает истинное значение
  4. Правило иначе используется для сообщений, не подходящих ни под одно из предыдущих правил.
к сведению

Правила равно 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 число, строка – идентификатор существующего процесса узла Выполнить для уничтожения.

Выводит:

  1. Стандартный вывод:
  • payload строка – стандартный вывод команды.
  • rc объект – только в exec режиме, копия объекта кода возврата (также доступна по 3-му порту).
  1. Стандартный вывод ошибок:
  • payload строка – стандартная ошибка команды.
  • rc объект – только в exec режиме, копия объекта кода возврата (также доступна по 3-му порту).
  1. Код возврата
  • 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 в Палитре
Узел 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 (вход) в Палитре
Узел mqtt (вход) на Холсте

Подключается к MQTT брокеру и подписывается на сообщения указанной темы.

Выводит:

  • payload строка | буфер – строка, если не обнаружено как двоичный буфер.
  • topic строка – тема MQTT, использует / в качестве разделителя иерархии.
  • qos число – 0: приходит не более одного раза, 1: приходит не менее одного раза, 2: приходит только один раз.
  • retain логич.тип – значение true указывает, что сообщение было сохранено и может быть устаревшим.

Тема подписки может включать подстановочные знаки MQTT, + для одного уровня, # для нескольких уровней.

Для этого узла требуется соединение с брокером MQTT. Это настраивается нажатием на значок карандаша.

Несколько 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 вход в Палитре
Узел http вход на Холсте

Создает конечную точку HTTP для веб-службы.

Выводит:

  • payload – для GET-запроса содержит объект с любыми параметрами строки запроса. В противном случае содержит тело HTTP-запроса.
  • req объект – объект HTTP-запроса. Этот объект содержит несколько свойств, которые предоставляют информацию о запросе:
  1. body - тело входящего запроса. Формат будет зависеть от запроса.
  2. headers - объект, содержащий заголовки HTTP-запроса.
  3. query - объект, содержащий любые параметры строки запроса.
  4. params - объект, содержащий любые параметры маршрута.
  5. cookies - объект, содержащий куки запроса.
  6. files - если включено в узле, объект, содержащий любые файлы, загруженные как часть POST-запроса.
  • res объект – объект ответа HTTP. Это свойство не должно использоваться напрямую. Для ответа на входящий HTTP запрос используется узел ответа HTTP Response. Это свойство должно оставаться в сообщении вплоть до передачи узлу ответа.

По настроенному пути узел будет принимать запросы определенного типа. Путь может быть указан конкретно, например /user, или включать именованные параметры, которые принимают любое значение, например /user/:name. Когда используются именованные параметры, их фактическое значение в запросе будет доступно в msg.req.params.

Для запросов, которые содержат тело, такие как POST или PUT, содержимое запроса доступно в msg.payload.

Если тип содержимого запроса может быть определен, тело будет преобразовано в любой подходящий тип. Например, application/json будет преобразован в объект JavaScript.

к сведению

Этот узел не отправляет никакого ответа на запрос. Поток должен включать узел ответа HTTP Response для завершения запроса.

Узел http ответ

Узел http ответ в Палитре
Узел 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 запрос в Палитре
Узел 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 (вход) на Холсте

Предоставляет выбор из нескольких входящих TCP-узлов. Можно либо подключаться к удаленному TCP-порту, либо принимать входящие подключения.

к сведению

В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024.

Узел tcp (выход)

Узел tcp (выход) в Палитре
Узел tcp (выход) на Холсте

Предоставляет выбор из нескольких исходящих TCP-узлов. Может подключаться к удаленному TCP-порту, принимать входящие подключения или отвечать на сообщения, полученные от узла tcp (вход).

Отправляются только данные msg.payload.

Если msg.payload является строкой, содержащей Base64-кодировку двоичных данных, опция Base64-декодирования приведет к ее преобразованию обратно в двоичный файл перед отправкой.

Если msg._session отсутствует, данные отправляется всем подключенным клиентам.

к сведению

В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024.

Узел tcp (запрос)

Узел tcp (запрос) в Палитре
Узел tcp (запрос) на Холсте

Узел TCP-запроса - отправляет msg.payload на tcp-порт сервера и ожидает ответа.

Подключается, отправляет запрос и читает ответ. Он может либо подсчитать количество возвращенных символов в фиксированный буфер, сопоставить указанный символ перед возвратом, дождаться фиксированного времени ожидания от первого ответа и затем вернуться, сидеть и дожидаться данных, или отправить, а затем немедленно закрыть соединение, не дожидаясь ответа.

Ответ будет возвращен в msg.payload в виде буфера, поэтому вам может понадобиться применить к нему .toString(), если нужно преобразование в строку.

Если вы оставите tcp-хост или порт пустыми, они должны быть установлены с помощью свойств msg.host и msg.port в каждом сообщении, отправляемом узлу.

Узел udp (вход)

Узел udp (вход) в Палитре
Узел udp (вход) на Холсте

Входящий UDP-узел, который создает msg.payload, содержащий буфер, строку или base64-строку. Поддерживает многоадресную рассылку.

Он также предоставляет msg.ip и msg.port для IP-адреса и порта, с которого было получено сообщение.

к сведению

В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024 и/или широковещательной рассылки.

Узел udp (выход)

Узел udp (выход) в Палитре
Узел 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 объект

Чтобы автоматически соединить последовательность сообщений, у них всех должно быть установлено это свойство. Узел Разделить генерирует это свойство, но его можно создать вручную. Оно имеет следующие свойства:

  1. id - идентификатор группы сообщений
  2. index - позиция в группе
  3. count - общее количество сообщений в группе
  4. type - тип сообщения: строка = string; массив = array; объект = object; буфер = buffer
  5. ch - для строки или буфера данные, использованные для разделения сообщения, в виде строки или массива байтов
  6. key - для объекта - ключ свойства, из которого было создано это сообщение
  7. len - длина каждого сообщения при разделении с использованием значения фиксированной длины
  • complete

Если установлено, узел добавит payload, а затем отправит выходное сообщение в своем текущем состоянии. Если вы не хотите добавлять payload, удалите его из msg.

Автоматический режим

В автоматическом режиме используется свойство parts входящих сообщений, чтобы определить способ объединения последовательности. Это позволяет автоматически выполнять обратное действие для узла Разделить.

Ручной режим

Когда узел настроен на соединение в ручном режиме, он может объединять последовательности сообщений в различные результаты:

  • строка или буфер - создается путем объединения выбранного свойства каждого сообщения с указанными символами соединения или буфером.
  • массив - создается путем добавления каждого выбранного свойства или всего сообщения в выходной массив.
  • объект ключей/значений - создается с использованием свойства каждого сообщения для определения ключа, под которым хранится требуемое значение.
  • слитый объект - создается путем объединения свойства каждого сообщения в один объект.

Другие свойства исходящего сообщения берутся из последнего сообщения, полученного перед отправкой результата.

Свойство кол-во может быть установлено для количества сообщений, которое должно быть получено перед генерацией выходного сообщения. Для выходных данных объекта, когда это число достигнуто, узел может быть настроен на отправку сообщения для каждого последующего полученного сообщения.

Свойство время (сек) может быть установлено, чтобы инициировать отправку нового сообщения с использованием всего, что было получено до сих пор.

Если сообщение получено с установленным свойством msg.complete, выходное сообщение завершается и отправляется. Это сбрасывает любой подсчет частей.

Если сообщение получено с установленным свойством msg.reset, частично завершенное сообщение удаляется и не отправляется. Это сбрасывает любой подсчет частей.

Режим агрегации последовательности

Когда настроено объединение в режиме агрегирования, выражение применяется к каждому сообщению в последовательности, и результат накапливается для создания одного сообщения.

  1. Начальное значение

Начальное значение накопленного значения $A.

  1. Агрегирующее выражение

Выражение JSONata, которое вызывается для каждого сообщения в последовательности. Результат передается следующему вызову выражения как накопленное значение. В выражении могут использоваться следующие специальные переменные:

  • $A: накопленное значение,
  • $I: индекс сообщения в последовательности,
  • $N: количество сообщений в последовательности.
  1. Исправляющее выражение

Необязательное выражение JSONata, которое применяется после того, как агрегирующее выражение было применено ко всем сообщениям в последовательности. В выражении могут использоваться следующие специальные переменные:

  • $A: накопленное значение,
  • $N: количество сообщений в последовательности.

По умолчанию агрегирующее выражение применяется по порядку, от первого до последнего сообщения последовательности. При желании его можно применять в обратном порядке.

Пример: следующие параметры, при получении последовательности числовых значений, рассчитывают среднее значение:

  • Агрегирующее выражение: $A+payload
  • Начальное значение: 0
  • Исправляющее выражение: $A / $N

Хранение сообщений

Этот узел будет буферизировать сообщения внутри, чтобы работать между последовательностями. Параметр nodeMessageBufferMaxLength можно использовать для ограничения количества сообщений, которые узел будут буферизовать.

Узел Сортировать

Узел Сортировать в Палитре
Узел Сортировать на Холсте

Функция, которая сортирует свойство сообщения или последовательность сообщений.

Когда узел настроен сортировать свойство сообщения, он сортирует данные массива в указанном свойстве сообщения.

Когда узел настроен сортировать последовательность сообщений, он будет переупорядочивать сообщения.

Порядок сортировки может быть:

  • Восходящий.
  • Нисходящий.

Для чисел, числовое упорядочивание можно указать с помощью флажка.

Когда выбрана сортировка свойства, ключом сортировки может быть значение элемента или выражение JSONata. Когда выбрана сортировка последовательности сообщений, ключом сортировка может быть свойство сообщения или выражение JSONata.

При сортировке последовательности сообщений узел сортировки полагается на полученные сообщения, чтобы установить msg.parts. Узел Разделить генерирует это свойство, но его можно создать вручную. Оно имеет следующие свойства:

  • id - идентификатор группы сообщений.
  • index - позиция в группе.
  • count - общее количество сообщений в группе.
к сведению

Этот узел буферизирует сообщения внутри для своей работы. Чтобы предотвратить непредвиденное использование памяти, можно указать максимальное количество хранимых сообщений. По умолчанию количество сообщений не ограничено.

Свойство nodeMessageBufferMaxLength устанавливается в settings.js.

Узел Группировать

Узел Группировать в Палитре
Узел Группировать на Холсте

Создает последовательности сообщений на основе различных правил.

Существует три режима создания последовательностей сообщений:

  1. Количество сообщений - группирует сообщения в последовательности заданной длины. Параметр совпадения указывает, сколько сообщений в конце одной последовательности следует повторить в начале следующей последовательности.
  2. Интервал времени - группирует сообщения, поступающие в указанный интервал. Если в течение интервала сообщения не поступают, узел может при желании отправлять пустое сообщение.
  3. Объединение последовательностей - создает последовательность сообщений путем объединения входящих последовательностей. Каждое сообщение должно иметь свойство msg.topic и свойство msg.parts, определяющие его последовательность. Узел настраивается со списком значений topic для идентификации порядка объединения последовательностей.

Хранение сообщений

Этот узел будет буферизировать сообщения внутри, чтобы работать с последовательностями. Параметр nodeMessageBufferMaxLength можно использовать для ограничения количества сообщений, которые узел будут буферизовать.

Если сообщение получено с установленным свойством msg.reset, буферизованные сообщения удаляются и не отправляются.

Группа узлов “анализатор”

Узел csv

Узел csv в Палитре
Узел csv на Холсте

Выполняет преобразования между строкой в CSV формате и ее представлением в JavaScript-объекте, в любом направлении.

Принимает:

  • payload объект | массив | строка – JavaScript объект, массив или CSV-строка.

Выводит:

  • payload объект | массив | строка
  1. Если на входе значение строкового типа, узел попытается проанализировать его как CSV и создает объект JavaScript из пар ключ/значение для каждой строки. Затем узел либо отправит сообщение для каждой строки или одно сообщение, содержащее массив объектов.
  2. Если на входе JavaScript объект, узел попробует построить CSV-строку.
  3. Если на входе массив простых значений, узел построит однострочную CSV-строку.
  4. Если на входе массив массивов или массив объектов, создается многострочная CSV-строка.

Шаблон столбцов может содержать упорядоченный список имен столбцов. При преобразовании CSV в объект имена столбцов будут использоваться в качестве имен свойств. Кроме того, имена столбцов могут быть взяты из первой строки CSV.

При преобразовании в CSV шаблон столбцов используется для определения того, какие свойства извлекать из объекта и в каком порядке.

Если шаблон пуст, то узел может использовать простой список свойств, разделенных запятыми, предоставленных в msg.columns, чтобы определить, что извлечь. Если его нет, то все свойства объекта выводятся в том порядке, в котором они были найдены в первой строке.

Если входные данные являются массивом, то шаблон столбцов используется только для необязательного генерирования строки с заголовками столбцов.

Если выбрана опция 'разбирать числовые значения, строковые числовые значения будут возвращаться в виде чисел. К примеру, среднее значение в CSV-строке 1,"1,5",2.

Если выбрана опция включать пустые строковые значения, пустые строки будут возвращениы в результате. К примеру, среднее значение в CSV-строке "1","",3.

Если выбрана опция включить null-значения, null-значения будут возвращениы в результате. К примеру, среднее значение в CSV-строке "1",,3.

Узел может принимать входные данные, состоящие из нескольких частей, при условии, что свойство parts установлено правильно, например, из узла Запись в файл или узла Разделить.

При выводе нескольких сообщений они будут иметь свойство parts и формировать полную последовательность сообщений.

к сведению

В шаблоне столбцов должна использоваться запятая для разделения - даже если для данных выбран другой разделитель.

Узел html

Узел html в Палитре
Узел html на Холсте

Извлекает элементы из HTML-документа, хранящегося в msg.payload, с помощью CSS-селектора.

Принимает:

  • payload строка – HTML-строка, из которой извлекать элементы.
  • select строка – если селектор не настроен на панели редактирования узла, то он может быть установлен как свойство msg.

Выход:

  • payload массив | строка – результатом может быть либо одно сообщение, в котором payload содержит массив найденных элементов, либо несколько сообщений, каждое из которых содержит найденный элемент. Если отправлено несколько сообщений, у них также будет установлен parts.

Этот узел поддерживает комбинацию селекторов CSS и jQuery.

Узел json

Узел json на Холсте
Узел 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 в Палитре
Узел 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 в Палитре
Узел 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:

DescriptionEquivalent 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 содержит тип измененной единицы.

При конфигурации данного узла необходимо указать следующие поля:

watchfile поля узла
  • Папка кнопка с выбором расположения файла: File System - наблюдает за файлами на сервере. Distributed Document Storage - наблюдает за файлами в хранилище NATS.
  • Путь к файлу (необходимо указать как минимум корневую директорию /)
  • Файлы - перечисление файлов через запятую. В случае, если файлы не указаны - следит за всеми файлами в директории

Снизу под узлом отображается его статус. Ниже представлены варианты статусов узла:

  • желтый индикатор, надпись “connecting” - узел подключается к серверному приложению Appserver;
  • зеленый индикатор, надпись “listening” - узел подключен к серверному приложению Appserver;
  • красный индикатор, надпись “error” - ошибка Appserver;
  • синий индикатор, надпись “received {имя файла}” - файл создан или изменен;

Узел SQL источник

Узел SQL источник в Палитре
Узел 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 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-запроса. Этот объект содержит несколько свойств, которые предоставляют информацию о запросе:

    1. body - тело входящего запроса. Формат будет зависеть от запроса.
    2. headers - объект, содержащий заголовки HTTP-запроса.
    3. query - объект, содержащий любые параметры строки запроса.
    4. params - объект, содержащий любые параметры маршрута.
    5. cookies - объект, содержащий куки запроса.
    6. files - если включено в узле, объект, содержащий любые файлы, загруженные как часть POST-запроса.

Для запросов, которые содержат тело, такие как POST или PUT, содержимое запроса доступно в msg.payload.

Если тип содержимого запроса может быть определен, тело будет преобразовано в любой подходящий тип. Например, application/json будет преобразован в объект JavaScript.

к сведению

Этот узел не отправляет никакого ответа на запрос. Поток должен включать узел ответа HTTP Response для завершения запроса.

Узел Kafka потребитель сообщений в Data Boring

Узел Kafka потребитель сообщений в Data Boring в Палитре
Узел Kafka потребитель сообщений в Data Boring на Холсте

Этот узел можно использовать для работы с сообщениями Kafka. Узел-потребитель сообщений.

Потребитель тематических сообщений kafka, которые генерируются в сообщениях Data Boring.
Предоставляет типы базового и высокого уровня.

Поля:

  • Имя - имя узла
  • ID источника - ID источника данных Kafka
  • Тема - название topic в Kafka
  • Параметры - параметры Kafka Consumer. Описание можно посмотреть по ссылке

Узел Kafka производитель сообщений в Data Boring

Узел Kafka производитель сообщений в Data Boring в Палитре
Узел 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

Узел SAP RFC в Палитре
Узел 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 позволяет пользователям выполнять 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-get в Палитре
Узел Ждать всех на Холсте

Узел позволяет получать файл с сервера Jupyter.

Входные параметры:

  • Имя (строка) - наименование узла в потоке
  • Конфигурация Jupyter (luxmsbi-jupyter-config) - настройки для подключения к серверу Jupyter
  • Путь к файлу (строка) - файл, который будет передан с сервера Jupyter. Путь задаётся от корня рабочей папки на сервере Jupyter

Выходные параметры:

  • msg.payload (объект) - объект с информацией о полученном файле. Содержимое файла находится в поле content

Узел jupyter-put

Узел jupyter-get в Палитре
Узел Ждать всех на Холсте

Узел позволяет загружать файлы на сервер Jupyter.

Входные параметры:

  • Имя (строка) - наименование узла в потоке
  • Конфигурация Jupyter (luxmsbi-jupyter-config) - настройки для подключения к серверу Jupyter
  • Путь к файлу (строка) - файл, в который будет загружено содержимое поля msg.payload. Путь задаётся от корня рабочей папки на сервере Jupyter
  • Тип файла (строка) - возможные значения - notebook и file. Если передаётся notebook, то Формат файла должен быть json
  • Формат файла (json) - возможные значения - json, text, base64

Выходные параметры:

  • msg.payload (объект) - объект с информацией о загруженном на сервер файле

Узел jupyter-run

Узел jupyter-get в Палитре
Узел Ждать всех на Холсте

Узел позволяет запускать на выполнение код на сервере 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.

Можно выбрать опцию “Добавить новый 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.