Процесс разработки Node-RED

Node-RED позволяет быстро приступить к разработке приложений, перетаскивая узлы и соединяя их между собой для создания потока. Это может быть отличным способом начать работу, но по мере роста трафика со временем это может усложнить обслуживание приложения.

В данном руководстве приведены рекомендации и передовые практики по созданию потоков Node-RED, которые можно повторно использовать, которые проще в обслуживании и более надежны.

В данном руководстве предполагается, что вы уже знакомы с основами работы с Node-RED. Если вам нужна дополнительная информация об использовании Node-RED, «Руководство пользователя» и «Сборник примеров» станут отличными ресурсами для начала работы.

структура процесса

В этом разделе описывается, как организовывать процессы, стратегии разбиения процессов на более мелкие компоненты, пригодные для повторного использования, а также как адаптировать процессы для различных платформ.

дизайн сообщений

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

Процесс документирования

Любой качественный код должен сопровождаться качественной документацией. В этом разделе описаны инструменты и методы, предоставляемые Node-RED для облегчения документирования кода.

Когда вы только начинаете работать с Node-RED, вы можете сначала добавить все свои узлы на одну вкладку редактора. Вы можете импортировать примеры потоков, которыми поделились другие пользователи, или создавать прототипы потоков для тестирования различных вариантов.

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

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

Основной способ организации потоков в Node-RED заключается в их разделении по вкладкам в редакторе. Для этого можно использовать несколько различных стратегий.

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

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

Если вы разрабатываете бэкэнд HTTP-API, каждая вкладка может представлять отдельный тип ресурса, к которому обращается API.

Цель должна заключаться в том, чтобы можно было легко “проследить” ход одного процесса от начала до конца. Размещение всего процесса на одной вкладке может этому способствовать.

Еще один момент, который следует учесть, — это то, работаете ли вы с другими разработчиками над одним и тем же приложением Node-RED. Управлять слиянием изменений гораздо проще, если они находятся на отдельных вкладках. Если в вашей команде есть разработчики с разными ролями или специализациями, подумайте, как это может повлиять на организацию вашего рабочего процесса.

Создавайте многоразовые процессы

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

Node-RED предлагает два различных способа создания многократно используемых потоков — связанные узлы и подпотоки.
Узлы-ссылки Узлы-ссылки позволяют создавать поток, который переключается между вкладками в редакторе — они добавляют виртуальное соединение от конца одного потока к началу другого.

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

Между этими двумя методами существуют некоторые важные различия. Узлы-ссылки нельзя использовать в середине процесса, где сообщения проходят через ссылку, а затем возвращаются после завершения других процессов. Их можно использовать только для запуска или завершения процесса. Кроме того, они могут быть подключены к нескольким другим узлам-ссылкам. Это позволяет передавать сообщения в несколько других потоков или обеспечивать передачу сообщений из нескольких потоков в один. Их можно использовать на одной вкладке, чтобы организовать поток данных в рабочей области без большого количества пересекающихся «проводов» справа налево.

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

Пользовательский подпоток

При создании подпотоков может возникнуть необходимость каким-либо образом настроить их поведение. Например, изменить тему MQTT, в которую они публикуют данные.

Один из способов сделать это — задавать параметр `msg.topic` для каждого сообщения, передаваемого в подпоток. Однако для этого необходимо добавить узел «Change» перед каждым экземпляром подпотока, чтобы установить нужное значение.

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

↑