node-red
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="function">
|
||||
<p>
|
||||
Исполняет JavaScript функцию (введенную в настройках, во вкладке <b>Функция</b>) для всех получаемых узлом сообщений.
|
||||
</p>
|
||||
<p>
|
||||
Сообщения передаются в виде объекта JavaScript с именем <code>msg</code>.
|
||||
</p>
|
||||
<p>
|
||||
Обычно у объекта есть свойство <code>msg.payload</code>, содержащее тело сообщения.
|
||||
</p>
|
||||
<p>
|
||||
Ожидается, что функция вернет объект сообщения (или несколько объектов сообщения), которые будут отправлены следующим узлам в потоке, но может также ничего не возвращать, чтобы остановить поток.
|
||||
</p>
|
||||
<p>
|
||||
Код настройки, выполняемый один раз при запуске сервера или при развертывании новой конфигурации потока, можно ввести во вкладке <b>Настройка</b>. Также во вкладке <b>Закрытие</b> можно ввести код очистки, выполняемый при остановке или повторном развертывании узла.
|
||||
</p>
|
||||
<p>
|
||||
Если код настройки возвращает Promise объект, тогда обработка входящих сообщений узлом начнется после его завершения.
|
||||
</p>
|
||||
|
||||
<h3>Подробности</h3>
|
||||
<p>
|
||||
Смотрите <a target="_blank" href="https://nodered.org/docs/writing-functions.html">онлайн-документацию</a> для получения дополнительной информации по написанию функций.
|
||||
</p>
|
||||
|
||||
<h4>Отправка сообщений</h4>
|
||||
<p>
|
||||
Функция может либо вернуть сообщения, которые она хочет передать следующим узлам в потоке, либо вызвать <code>node.send(сообщения)</code>.
|
||||
</p>
|
||||
<p>
|
||||
Она может вернуть/отправить:
|
||||
</p>
|
||||
<ul>
|
||||
<li>один объект сообщения - передается узлам, подключенным к первому порту выхода</li>
|
||||
<li>массив объектов сообщений - передается на узлы, подключенные к соответствующим портам выхода</li>
|
||||
</ul>
|
||||
<p>
|
||||
Примечание: код настройки выполняется во время инициализации узлов. Таким образом, если на вкладке настройки кода вызывается <code>node.send</code>, последующие узлы могут не получить это сообщение.
|
||||
</p>
|
||||
<p>
|
||||
Если какой-либо элемент массива сам является массивом сообщений, тогда на соответствующий выход отправляется несколько сообщений.
|
||||
</p>
|
||||
<p>
|
||||
Если возвращен null, либо сам по себе, либо как элемент массива, тогда сообщение не передается.
|
||||
</p>
|
||||
|
||||
<h4>Ведение журнала и обработка ошибок</h4>
|
||||
<p>
|
||||
Для добавления информации в журнал или сообщения об ошибке доступны следующие функции:
|
||||
</p>
|
||||
<ul>
|
||||
<li><code>node.log("Сообщение для журнала")</code></li>
|
||||
<li><code>node.warn("Предупреждение")</code></li>
|
||||
<li><code>node.error("Ошибка")</code></li>
|
||||
</ul>
|
||||
<p>
|
||||
Также узел Catch может использоваться для обработки ошибок. Чтобы можно было ловить оповещения об ошибке, при вызове <code>node.error</code> передайте <code>msg</code> в качестве второго аргумента:
|
||||
</p>
|
||||
<pre>node.error("Ошибка", msg);</pre>
|
||||
|
||||
<h4>Доступ к информации об узле</h4>
|
||||
<p>
|
||||
В функции можно обращаться к идентификатору и имени узла, используя следующие свойства:
|
||||
</p>
|
||||
<ul>
|
||||
<li><code>node.id</code> - идентификатор узла</li>
|
||||
<li><code>node.name</code> - имя узла</li>
|
||||
</ul>
|
||||
|
||||
<h4>Использование переменных среды</h4>
|
||||
<p>
|
||||
Доступ к переменным среды можно получить с помощью <code>env.get("MY_ENV_VAR")</code>.
|
||||
</p>
|
||||
</script>
|
||||
@@ -0,0 +1,59 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="switch">
|
||||
<p>
|
||||
Направляет сообщения по разным ветвям потока, в завсимости от значений свойств сообщения или его позиции в последовательности.
|
||||
</p>
|
||||
|
||||
<h3>Подробности</h3>
|
||||
<p>
|
||||
Когда приходит сообщение, узел выполняет проверку соответствия сообщения каждому из установленных правил и перенаправляет сообщение на соответствующие выходы.
|
||||
</p>
|
||||
<p>
|
||||
При желании узел может быть настроен на прекращение проверки правил после того как найдено первое подходящее.
|
||||
</p>
|
||||
<p>
|
||||
Правила могут применяться к свойству сообщения, свойству потокового или глобального контекста, переменной среды или результату выражения JSONata.
|
||||
</p>
|
||||
|
||||
<h4>Правила</h4>
|
||||
<p>
|
||||
Существует четыре типа правил:
|
||||
</p>
|
||||
<ol>
|
||||
<li>Правила категории <b>value rules</b> сравнивают значение указанного свойства сообщения</li>
|
||||
<li>Правила категории <b>sequence rules</b> могут применяться для последовательностей сообщений, таких как сгенерированные узлом Split</li>
|
||||
<li><b>Выражение JSONata</b> исполняется для сообщения и считается подходящим, если оно возвращает истинное значение</li>
|
||||
<li>Правило <b>иначе</b> используется для сообщений, не подходящих ни под одно из предыдущих правил.</li>
|
||||
</ol>
|
||||
|
||||
<h4>Примечание</h4>
|
||||
<p>
|
||||
Правила <code>равно true/false</code> и <code>равно null</code> проводят строгое сравнение с этими типами. Они не конвертируются между типами.
|
||||
</p>
|
||||
<p>
|
||||
Правила <code>пустое</code> и <code>не пустое</code> могут быть использованы для проверки длины строк, массивов и буферов, или количества свойств, которые содержит объект. Эти правила не подходят, если тестируемое свойство содержит значение <code>логического типа</code>, <code>null</code> или <code>undefined</code>.
|
||||
</p>
|
||||
|
||||
<h4>Обработка последовательностей сообщений</h4>
|
||||
<p>
|
||||
По умолчанию узел не изменяет свойство <code>msg.parts</code> у сообщений, являющихся частью последовательности.
|
||||
</p>
|
||||
<p>
|
||||
Можно включить параметр <b>пересоздавать последовательности сообщений</b> для создания новых последовательностей сообщений для каждого соответствующего правила. В этом режиме узел будет помещать в буфер всю входящую последовательность перед отправкой новых последовательностей. Настройка <code>nodeMessageBufferMaxLength</code> может быть использована для ограничения количества сообщений в буфере.
|
||||
</p>
|
||||
</script>
|
||||
@@ -0,0 +1,42 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="change">
|
||||
<p>
|
||||
Устанавливает, изменяет, удаляет или перемещает свойства сообщения, контекста потока или глобального контекста.
|
||||
</p>
|
||||
<p>
|
||||
В узле можно указать несколько операций, которые будут применяться в том порядке, в котором они заданы.
|
||||
</p>
|
||||
|
||||
<h3>Подробности</h3>
|
||||
<p>
|
||||
Доступные операции:
|
||||
</p>
|
||||
<dl class="message-properties">
|
||||
<dt>Установить</dt>
|
||||
<dd>устанавливает свойство. Значение может быть различных типов или может быть взято из существующего свойства сообщения или контекста.</dd>
|
||||
<dt>Изменить</dt>
|
||||
<dd>ищет и заменяет части текста в свойстве сообщения. Если используется регулярное выражение, настройка "заменить на" может включать группы захвата, например <code>$1</code>. При полном совпадении заменяет только тип.</dd>
|
||||
<dt>Удалить</dt>
|
||||
<dd>удаляет свойство.</dd>
|
||||
<dt>Переместить</dt>
|
||||
<dd>перемещает или переименовывает свойство.</dd>
|
||||
</dl>
|
||||
<p>
|
||||
Тип свойства "выражение" использует язык запросов и выражений <a href="http://jsonata.org/" target="_new">JSONata</a>.
|
||||
</p>
|
||||
</script>
|
||||
@@ -0,0 +1,59 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="range">
|
||||
<p>
|
||||
Соотносит значение одного числового диапазона с другим числовым диапазоном.
|
||||
</p>
|
||||
|
||||
<h3>Принимает</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">число</span></dt>
|
||||
<dd>Данные <i>должны</i> быть числом. Данные другого типа будут преобразованы в число и отклонены, если это не удастся.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Выводит</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">число</span></dt>
|
||||
<dd>Значение, соотнесенное с новым диапазоном.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Подробности</h3>
|
||||
<p>
|
||||
Этот узел будет линейно масштабировать полученное значение. По умолчанию результат не ограничен диапазоном, определенным в узле.
|
||||
</p>
|
||||
<p>
|
||||
<i>Масштабировать и ограничить целевым диапазоном</i> означает, что результат никогда не будет выходить за пределы диапазона, указанного в целевом диапазоне.
|
||||
</p>
|
||||
<p>
|
||||
<i>Масштабировать и обернуть в целевой диапазон</i> означает, что результат будет обернут вокруг целевого диапазона:
|
||||
</p>
|
||||
<p>
|
||||
Например, если входные 0 - 10 сопоставляются с 0 - 100:
|
||||
</p>
|
||||
<table style="outline-width:#888 solid thin">
|
||||
<tr><th width="80px">режим</th><th width="80px">вход</th><th width="80px">выход</th></tr>
|
||||
<tr><td><center>масштабировать</center></td><td><center>2</center></td><td><center>20</center></td></tr>
|
||||
<tr><td><center>ограничить</center></td><td><center>2</center></td><td><center>20</center></td></tr>
|
||||
<tr><td><center>обернуть</center></td><td><center>2</center></td><td><center>20</center></td></tr>
|
||||
<tr><td><center>масштабировать</center></td><td><center>12</center></td><td><center>120</center></td></tr>
|
||||
<tr><td><center>ограничить</center></td><td><center>12</center></td><td><center>100</center></td></tr>
|
||||
<tr><td><center>обернуть</center></td><td><center>12</center></td><td><center>20</center></td></tr>
|
||||
<tr><td><center>масштабировать</center></td><td><center>18</center></td><td><center>180</center></td></tr>
|
||||
<tr><td><center>ограничить</center></td><td><center>18</center></td><td><center>100</center></td></tr>
|
||||
<tr><td><center>обернуть</center></td><td><center>18</center></td><td><center>80</center></td></tr>
|
||||
</table>
|
||||
</script>
|
||||
@@ -0,0 +1,63 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="template">
|
||||
<p>
|
||||
Генерирует текст по установленному шаблону и присваивает его выбранному свойству сообщения.
|
||||
</p>
|
||||
|
||||
<h3>Принимает</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>msg <span class="property-type">объект</span></dt>
|
||||
<dd>Объект сообщения msg, содержащий информацию для заполнения шаблона.</dd>
|
||||
<dt class="optional">шаблон <span class="property-type">строка</span></dt>
|
||||
<dd>Шаблон текста для заполнения данными из сообщения msg. Если шаблон не введен на панели редактирования, тогда он может быть установлен через свойство msg.template.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Выводит</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>msg <span class="property-type">объект</span></dt>
|
||||
<dd>Сообщение msg, у которого выбранному свойству присвоено тексктовое значение, полученное после заполнения шаблона данными входящего сообщения.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Подробности</h3>
|
||||
<p>
|
||||
По умолчанию используется формат <i><a href="http://mustache.github.io/mustache.5.html" target="_blank">mustache</a></i>. При необходимости это можно отключить.
|
||||
</p>
|
||||
<p>
|
||||
Например, когда шаблон:
|
||||
</p>
|
||||
<pre>Привет, {{payload.name}}. Сегодня {{date}}.</pre>
|
||||
<p>
|
||||
получает сообщение msg, содержащее:
|
||||
</p>
|
||||
<pre>{
|
||||
date: "понедельник",
|
||||
payload: {
|
||||
name: "Иван"
|
||||
}
|
||||
}</pre>
|
||||
<p>
|
||||
Выбранному свойству будет присвоен текст:
|
||||
</p>
|
||||
<pre>Привет, Иван. Сегодня понедельник.</pre>
|
||||
<p>
|
||||
Можно использовать свойство из контекста потока или глобального контекста. Просто используйте <code>{{flow.name}}</code> или <code>{{global.name}}</code>, или для постоянного хранилища <code>store</code> используйте <code>{{flow[store].name}}</code> или <code>{{global[store].name}}</code>.
|
||||
</p>
|
||||
<p>
|
||||
<b>Примечание:</b> по умолчанию <i>mustache</i> заменяет определенные символы их escape-кодами для безопасного использования в HTML. Чтобы это не происходило, вы можете использовать тройные фигурные скобки <code>{{{triple}}}</code>.
|
||||
</p>
|
||||
</script>
|
||||
@@ -0,0 +1,40 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="delay">
|
||||
<p>
|
||||
Задерживает каждое сообщение, проходящее через узел, или ограничивает скорость, с которой они могут проходить.
|
||||
</p>
|
||||
<h3>Принимает</h3>
|
||||
<dl class="message-properties">
|
||||
<dt class="optional">delay <span class="property-type">число</span></dt>
|
||||
<dd>Устанавливает задержку в миллисекундах, которая будет применена к сообщению. Этот параметр применяется только в том случае, если узел настроен так, чтобы разрешать сообщению переопределять установленный интервал задержки по умолчанию.</dd>
|
||||
<dt class="optional">reset</dt>
|
||||
<dd>Если в полученном сообщении этому свойству присвоено какое-либо значение, все ожидающие сообщения, удерживаемые узлом, сбрасываются без дальнейшей отправки.</dd>
|
||||
<dt class="optional">flush</dt>
|
||||
<dd>Если в полученном сообщении этому свойству присвоено какое-либо значение, все ожидающие сообщения, удерживаемые узлом, немедленно отправляются далее.</dd>
|
||||
</dl>
|
||||
<h3>Подробности</h3>
|
||||
<p>
|
||||
Когда узел настроен на задержку сообщений, интервал задержки может быть фиксированным значением, случайным значением в пределах диапазона или динамически установленным для каждого сообщения. Каждое сообщение задерживается независимо от любых других сообщений, основываясь на времени его прибытия в узел.
|
||||
</p>
|
||||
<p>
|
||||
Когда узел настроен на ограничение скорости сообщений, их доставка распределяется по установленному периоду времени. Статус показывает количество сообщений, находящихся в данный момент в очереди. При необходимости узел может быть настроен на отбрасывание промежуточных сообщений по мере их поступления.
|
||||
</p>
|
||||
<p>
|
||||
Ограничение скорости может применяться ко всем сообщениям или группам сообщений в соответствии с их значением темы (<code>msg.topic</code>). При группировании промежуточные сообщения автоматически отбрасываются. В каждом интервале времени узел может либо выпустить самое последнее сообщение для всех тем, либо выпустить самое последнее сообщение для следующей темы.
|
||||
</p>
|
||||
</script>
|
||||
@@ -0,0 +1,55 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="trigger">
|
||||
<p>
|
||||
При срабатывании может отправить сообщение, а затем дополнительно второе сообщение, если не было сделано продление или сброс.
|
||||
</p>
|
||||
|
||||
<h3>Принимает</h3>
|
||||
<dl class="message-properties">
|
||||
<dt class="optional">delay <span class="property-type">число</span></dt>
|
||||
<dd>Устанавливает задержку в миллисекундах, которая будет применяться к сообщению. Этот параметр применяется только в том случае, если узел настроен так, чтобы сообщение могло отменять настроенный интервал задержки по умолчанию.</dd>
|
||||
<dt class="optional">reset</dt>
|
||||
<dd>При получении сообщения с этим свойством, любой тайм-аут или повтор, находящиеся в обработке в текущий момент, будут сброшены, а сообщение не сработает.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Подробности</h3>
|
||||
<p>
|
||||
Этот узел можно использовать для создания тайм-аута внутри потока. По умолчанию, когда узел получает сообщение, он отправляет сообщение с <code>payload</code> равным <code>1</code>. Затем он ждет 250 мс, прежде чем отправить второе сообщение с <code>payload</code> равным <code>0</code>. Это можно использовать, например, для мигания светодиодом, подключеным к выходу GPIO у Raspberry Pi.
|
||||
</p>
|
||||
<p>
|
||||
Данные каждого отправленного сообщения могут быть настроены на различные значения, включая возможность ничего не отправлять. Например, если установить первоначальное сообщение на <i>ничего</i> и выбрать опцию продления таймера с каждым новым сообщением, узел будет действовать как сторожевой таймер, отправляя сообщение только в том случае, если ничего не получено в течение установленного интервала.
|
||||
</p>
|
||||
<p>
|
||||
Если установлен тип <i>строка</i>, узел поддерживает синтаксис шаблона mustache.
|
||||
</p>
|
||||
<p>
|
||||
Задержка между отправкой сообщений может быть изменена с помощью <code>msg.delay</code>, если эта опция включена в узле. Значение должно быть указано в миллисекундах.
|
||||
</p>
|
||||
<p>
|
||||
Если узел получает сообщение со свойством <code>reset</code> или <code>payload</code>, который совпадает с настроенным в узле, любой тайм-аут или повтор, находящийся в обработке в текущий момент, будет сброшен, и сообщение не сработает.
|
||||
</p>
|
||||
<p>
|
||||
Узел может быть настроен на повторную отправку сообщения с регулярным интервалом, пока не будет произведен сброс отправкой на него сообщения.
|
||||
</p>
|
||||
<p>
|
||||
При желании узел может быть настроен на обработку сообщений, как если бы они были отдельными потоками, используя свойство msg для идентификации каждого потока. По умолчанию <code>msg.topic</code>.
|
||||
</p>
|
||||
<p>
|
||||
Статус показывает - активен ли узел в данный момент. Если работает в многопоточном режиме, статус показывает количество удерживаемых потоков.
|
||||
</p>
|
||||
</script>
|
||||
@@ -0,0 +1,106 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="exec">
|
||||
<p>
|
||||
Запускает системную команду и возвращает ее вывод.
|
||||
</p>
|
||||
<p>
|
||||
Узел может быть настроен либо на ожидание завершения выполнения команды, либо на отправку выходных данных по мере их генерации в ходе выполнения.
|
||||
</p>
|
||||
<p>
|
||||
Выполняемая команда может быть установлена в настройках узла или полученным сообщением.
|
||||
</p>
|
||||
|
||||
<h3>Принимает</h3>
|
||||
<dl class="message-properties">
|
||||
<dt class="optional">payload <span class="property-type">строка</span></dt>
|
||||
<dd>будет добавлено к выполняемой команде, если узел настроен так делать.</dd>
|
||||
<dt class="optional">kill <span class="property-type">строка</span></dt>
|
||||
<dd>тип сигнала уничтожения для отправки существующему процессу узла exec.</dd>
|
||||
<dt class="optional">pid <span class="property-type">число|строка</span></dt>
|
||||
<dd>идентификатор существующего процесса узла exec для уничтожения.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Выводит</h3>
|
||||
<ol class="node-ports">
|
||||
<li>Стандартный вывод
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">строка</span></dt>
|
||||
<dd>стандартный вывод команды.</dd>
|
||||
</dl>
|
||||
<dl class="message-properties">
|
||||
<dt>rc <span class="property-type">объект</span></dt>
|
||||
<dd>только в exec режиме, копия объекта кода возврата (также доступна по 3-му порту)</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li>Стандартный вывод ошибок
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">строка</span></dt>
|
||||
<dd>стандартная ошибка команды.</dd>
|
||||
</dl>
|
||||
<dl class="message-properties">
|
||||
<dt>rc <span class="property-type">объект</span></dt>
|
||||
<dd>только в exec режиме, копия объекта кода возврата (также доступна по 3-му порту)</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li>Код возврата
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">объект</span></dt>
|
||||
<dd>объект, содержащий код возврата и, возможно, свойства <code>message</code>, <code>signal</code>.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<h3>Подробности</h3>
|
||||
<p>
|
||||
По умолчанию используется системный вызов <code>exec</code>, который вызывает команду, ожидает ее завершения и возвращает результат. Например, успешная команда должна иметь код возврата <code>{code: 0}</code>.
|
||||
</p>
|
||||
<p>
|
||||
При желании вместо этого можно использовать <code>spawn</code>, который возвращает выходные данные из stdout и stderr по ходу выполнения команды, обычно по одной строке за раз. После завершения он возвращает объект на 3-й порт. Например, успешная команда должна вернуть <code>{code: 0}</code>.
|
||||
</p>
|
||||
<p>
|
||||
Ошибки могут возвращать на 3-й порт дополнительную информацию в <code>msg.payload</code>, такую как строка <code>message</code>, строка <code>signal</code>.
|
||||
</p>
|
||||
<p>
|
||||
Выполняемая команда настраивается в узле, с возможностью добавления к ней <code>msg.payload</code> и дополнительного набора параметров.
|
||||
</p>
|
||||
<p>
|
||||
Команды или параметры с пробелами должны быть заключены в кавычки - <code>"Это один параметр"</code>
|
||||
</p>
|
||||
<p>
|
||||
Возвращаемый <code>payload</code> обычно представляет собой <i>строку</i>, пока не обнаружены символы, отличные от UTF8, в этом случае возвращаемое значение будет иметь тип <i>буфер</i>.
|
||||
</p>
|
||||
<p>
|
||||
Значок статуса узла и PID будут видны, когда узел активен. Изменения в статусе можно отслеживать узлом <code>Status</code>.
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
Уничтожения процессов
|
||||
</h4>
|
||||
<p>
|
||||
Отправка <code>msg.kill</code> уничтожит один активный процесс. <code>msg.kill</code> должен быть строкой, содержащей тип передаваемого сигнала, например, <code>SIGINT</code>, <code>SIGQUIT</code> или <code>SIGHUP</code>. По умолчанию будет передан <code>SIGTERM</code>, если задана пустая строка.
|
||||
</p>
|
||||
<p>
|
||||
Если узлом запущено более одного процесса, тогда в <code>msg.pid</code> также должно быть установлено значение PID процесса для уничтожения.
|
||||
</p>
|
||||
<p>
|
||||
Если в поле <code>Тайм-аут</code> введено значение, тогда, если процесс не завершится по истечении указанного количества секунд, он будет автоматически уничтожен.
|
||||
</p>
|
||||
<p>
|
||||
Совет: если вы запускаете Python приложение, вам может потребоваться использование параметра <code>-u</code>, чтобы остановить буферизацию вывода.
|
||||
</p>
|
||||
</script>
|
||||
Reference in New Issue
Block a user