#1.5 Логика выполнения сценариев в Loginom. Последовательность, активация, автосинхронизация

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

Активация и последовательность

Скорее всего вы заметили, что обычно узлы окрашены в один из 2-х цветов: серый и зеленый. А если у вас были проблемы с настройками, то вам встречался еще и красный цвет :).

Что значат эти цвета?

  1. Серый, не активированный — значит, что узел не запускался с текущими настройками. Такой статус бывает, когда мы только добавили узел в сценарий. Либо перенастроили ранее активированный узел.
  2. Зеленый, активированный — значит, узел был успешно выполнен. Данные получены, обработаны, и результат подан на выходные порты.
  3. Красный — значит во время активации (выполнения) узла произошла ошибка, связанная с настройками узла или портов.

Активировать узлы можно двумя способами. Либо сразу во всем сценарии, либо активируя узлы отдельно.

Кнопка активации всех узлов в сценарии
Активация отдельного узла

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

При отдельной активации узла Калькулятор автоматически активируются узлы, поставляющие в него данные

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

Это можно сделать, щелкнув ЛКМ по узлу, а потом по кнопке «Стоп». Это деактивирует текущий узел, и все последующие узлы, связанные с данными, которые выходят из деактивируемого узла.

Также, есть еще один режим активации узла — активация с переобучением. Детально пока не будем углубляться в него, но обозначим, зачем он нужен. В некоторых узлах (например, Кластеризация, Самоорганизующиеся карты, Квантование) используются самообучающиеся алгоритмы. На основе первично проведенного обучения, строится дальнейшая обработка данных в узле. При этом при повторной активации узла, по умолчанию переобучения не происходит. Т.е. обработка происходит по тем правилам, которые сложились при первичном обучении, даже если входной датасет поменялся.

В Community версии, доступен только ручной запуск переобучения пакетов. Для автоматического переобучения потребуется серверная версия Loginom для выполнения сценариев в пакетном режиме. А также соответствующие настройки в разделе «Настроить режим активации узла», которое вызывается по ПКМ-клику на узле. Детально эту тему разберем в другом курсе.

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

Тогда у узлов появятся шильдики внизу, между которыми можно протягивать связи, как между портами. Это бывает необходимо, когда нужно задать последовательность выполнения узлов, не связанных между собой портами. Например, нам нужно сохранить данные в промежуточной БД, а в следующем узле загрузиться из нее. В узлах экспорта нет выходных портов, а у узлов импорта — входных портов. И обеспечить загрузку данных строго после их сохранения возможно только через явное задание последовательности.

При выполнении сценария, Loginom максимально запараллеливает выполнение узлов. Т.е. если у вас в сценарий начинается с 2-х веток, которые сходятся в одну таблицу, то эти ветки будут выполняться параллельно. Если у вас в сценарии есть тяжелые запросы к БД, и вы не хотите чтобы они выполнялись параллельно, то вы можете также настроить последовательное выполнение запросов для этих узлов.

Порты, автосинхронизация, проектирование

Синхронизация — это процесс, который определяет, какие поля/переменные на входе порта покинут этот порт, и под какими именами. По умолчанию, во всех портах включена автосинхронизация. Это означает, что все поля, которые войдут в узел, будут доступны для обработки в узле. И все поля, которые покинут узел, будут доступны для передачи в другие узлы.

Откройте настройки входного порта элемента Фильтр, и переключите его в режим Связи. Такое представление наиболее наглядно отображает происходящее.

На вход порта подан набор полей из левой части. В правой части перечислены поля, которые попадут в узел. Жирным цветом выделены обязательные поля. Поля могут стать обязательными, если они:

  1. Используются внутри узла для операций;
  2. Созданы заранее в правой части с помощью кнопки Добавить поле.

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

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

Добавление или удаление руками выходных полей на портах приведет к отключению автосинхронизации. Это значит, что перечень полей становится предопределенным, и если входные поля изменятся, то придется вручную перенастроить выходные поля такого порта. В сценарии порты с отключенной автосинхронизацией обозначаются точкой.

Включить автосинхронизацию обратно можно с помощью той кнопки в настройках порта.

Если вы хотите исключить из потока какие-то поля, но при этом не хотите отключать автосинхронизацию на портах, то можете воспользоваться узлом Параметры полей.

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

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

Теперь, когда мы знаем все необходимое о логике работы сценариев, можно переходить к проектированию более сложных сценариев. Например, с циклами.

Добавить комментарий

Ваш адрес email не будет опубликован.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.