<li><b>строка</b>/<b>буфер</b> - сообщение разделяется с помощью указанного символа (по умолчанию: <code>\n</code>), последовательности буфера или по фиксированной длине.</li>
<dd>Это свойство содержит информацию о том, как сообщение было отделено от исходного сообщения. При передаче на узел <b>join</b> последовательность может быть собрана обратно в одно сообщение. Объект содержит следующие свойства:
<li><code>id</code> - идентификатор группы сообщений</li>
<li><code>index</code> - позиция в группе</li>
<li><code>count</code> - если известно, общее количество сообщений в группе. Смотрите 'потоковый режим' ниже.</li>
<li><code>type</code> - тип сообщения: строка = string; массив = array; объект = object; буфер = buffer</li>
<li><code>ch</code> - для строки или буфера данные, использованные для разделения сообщения, в виде строки или массива байтов</li>
<li><code>key</code> - для объекта - ключ свойства, из которого было создано это сообщение. Узел также может быть сконфигурирован для копирования этого значения в другие свойства сообщения, такие как <code>msg.topic</code>.</li>
<li><code>len</code> - длина каждого сообщения при разделении с использованием значения фиксированной длины</li>
Этот узел облегчает создание потока, который выполняет общие действия над последовательностью сообщений, перед тем как с помощью узла <b>join</b> объединить последовательность обратно в одно сообщение.
Он использует свойство <code>msg.parts</code> для отслеживания отдельных частей последовательности.
</p>
<h4>Потоковый режим</h4>
<p>
Узел также может использоваться для переформатирования потока сообщений. Например, последовательное устройство, которое отправляет завершенные новой строкой команды, может доставлять одно сообщение с частичной командой в конце. В 'потоковом режиме' этот узел будет разбивать сообщение и отправлять каждый завершенный сегмент. Если в конце есть частичный сегмент, узел удержит его и добавит к следующему полученному сообщению.
При работе в этом режиме узел не будет устанавливать свойство <code>msg.parts.count</code>, так как он не знает, сколько сообщений ожидать в потоке. Это означает, что его нельзя использовать вместе с узлом <b>join</b> в его автоматическом режиме.
<dd>При использовании с узлом <b>split</b> он автоматически объединит сообщения, чтобы восстановить структуру сообщения, которая была до разделения.</dd>
<dd>Чтобы автоматически соединить последовательность сообщений, у них всех должно быть установлено это свойство. Узел <b>split</b> генерирует это свойство, но его можно создать вручную. Оно имеет следующие свойства:
<ul>
<li><code>id</code> - идентификатор группы сообщений</li>
<li><code>index</code> - позиция в группе</li>
<li><code>count</code> - общее количество сообщений в группе</li>
<li><code>type</code> - тип сообщения: строка = string; массив = array; объект = object; буфер = buffer</li>
<li><code>ch</code> - для строки или буфера данные, использованные для разделения сообщения, в виде строки или массива байтов</li>
<li><code>key</code> - для объекта - ключ свойства, из которого было создано это сообщение</li>
<li><code>len</code> - длина каждого сообщения при разделении с использованием значения фиксированной длины</li>
</ul>
</dd>
<dtclass="optional">complete</dt>
<dd>
Если установлено, узел добавит payload, а затем отправит выходное сообщение в своем текущем состоянии. Если вы не хотите добавлять payload, удалите его из msg.
В автоматическом режиме используется свойство <code>parts</code> входящих сообщений, чтобы определить способ объединения последовательности. Это позволяет автоматически выполнять обратное действие для узла <b>split</b>.
Когда узел настроен на соединение в ручном режиме, он может объединять последовательности сообщений в различные результаты:
</p>
<ul>
<li><b>строка</b> или <b>буфер</b> - создается путем объединения выбранного свойства каждого сообщения с указанными символами соединения или буфером.</li>
<li><b>массив</b> - создается путем добавления каждого выбранного свойства или всего сообщения в выходной массив.</li>
<li><b>объект ключей/значений</b> - создается с использованием свойства каждого сообщения для определения ключа, под которым хранится требуемое значение.</li>
<li><b>слитый объект</b> - создается путем объединения свойства каждого сообщения в один объект.</li>
</ul>
<p>
Другие свойства исходящего сообщения берутся из последнего сообщения, полученного перед отправкой результата.
</p>
<p>
Свойство <i>кол-во</i> может быть установлено для количества сообщений, которое должно быть получено перед генерацией выходного сообщения. Для выходных данных объекта, когда это число достигнуто, узел может быть настроен на отправку сообщения для каждого последующего полученного сообщения.
Если сообщение получено с установленным свойством <b>msg.complete</b>, выходное сообщение завершается и отправляется. Это сбрасывает любой подсчет частей.
</p>
<p>
Если сообщение получено с установленным свойством <b>msg.reset</b>, частично завершенное сообщение удаляется и не отправляется. Это сбрасывает любой подсчет частей.
</p>
<h4>Режим агрегации последовательности</h4>
<p>
Когда настроено объединение в режиме агрегирования, выражение применяется к каждому сообщению в последовательности, и результат накапливается для создания одного сообщения.
</p>
<dlclass="message-properties">
<dt>Начальное значение</dt>
<dd>Начальное значение накопленного значения (<code>$A</code>).</dd>
<dt>Агрегирующее выражение</dt>
<dd>Выражение JSONata, которое вызывается для каждого сообщения в последовательности. Результат передается следующему вызову выражения как накопленное значение. В выражении могут использоваться следующие специальные переменные:
<ul>
<li><code>$A</code>: накопленное значение, </li>
<li><code>$I</code>: индекс сообщения в последовательности, </li>
<li><code>$N</code>: количество сообщений в последовательности.</li>
</ul>
</dd>
<dt>Исправляющее выражение</dt>
<dd>Необязательное выражение JSONata, которое применяется после того, как агрегирующее выражение было применено ко всем сообщениям в последовательности. В выражении могут использоваться следующие специальные переменные:
<ul>
<li><code>$A</code>: накопленное значение, </li>
<li><code>$N</code>: количество сообщений в последовательности.</li>
</ul>
</dd>
<p>
По умолчанию агрегирующее выражение применяется по порядку, от первого до последнего сообщения последовательности. При желании его можно применять в обратном порядке.
</p>
</dl>
<p>
<b>Пример:</b> следующие параметры, при получении последовательности числовых значений, рассчитывают среднее значение:
Этот узел будет буферизировать сообщения внутри, чтобы работать между последовательностями. Параметр <code>nodeMessageBufferMaxLength</code> можно использовать для ограничения количества сообщений, которые узел будут буферизовать.