Использование портов порядка выполнения

Сценарии в Loginom — это цепочки узлов, где каждый обрабатывает данные и передаёт результат следующему. По умолчанию порядок выполнения определяется связями между портами: узлы запускаются по готовности входных данных. При этом оптимизируется выполнение: запускаются только задействованные узлы, а независимые обрабатываются параллельно, что ускоряет работу с большими объёмами данных. Однако автоматический порядок не всегда подходит для логики задачи — например, когда нужно сначала выгрузить данные, а затем отправить уведомление, или когда параллельная запись в БД вызывает конфликты.

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

Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запуск демо). Рекомендуем установить пример локально.

Запуск демо

Установить локально

1. Узлы без входных/выходных портов

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

Варианты реализации

Внутри подмодели представлены два варианта, наглядно показывающих разницу:

а) Без портов порядка выполнения

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

б) С портами порядка выполнения

В начале сценария (перед узлом импорта) и в конце (после узла экспорта) добавлены порты порядка выполнения. Это обеспечивает полное выполнение всех этапов при запуске подмодели из любого внешнего сценария, так как порты задают четкую последовательность: импорт → обработка → экспорт.

Внутри подмоделей реализована цепочка узлов: Импорт данныхОбработка данныхЭкспорт данных.

а) Импорт данных

Используется узел импорта Loginom Data файла для получения и обработки данных.

Имя Метка
 class Класс
 idClient Код Клиента
 idQuarter Квартал
б) Обработка данных

На данном этапе аналитик может реализовать свой вариант обработки данных. В демопримере с помощью узла Группировка настроена группировка по полю Код клиента.

Настройка узла Группировка произведены следующим образом:

  • Группа — Код клиента
  • Показатели — Класс (Последний) и Квартал (Последний)
в) Экспорт полученных данных в Excel

Обработанные данные выгружаются в Excel файл.

2. Порядок работы с БД

Подмодель демонстрирует, как порядок выполнения узлов влияет на запись в базу данных. На двух примерах показано, что без настройки очередности возникает ошибка database is locked, а при корректной настройке запись выполняется успешно.

Варианты реализации

а) Без портов порядка выполнения

Узлы экспорта не имеют портов порядка выполнения, поэтому запись в таблицу выполняется параллельно. Это приводит к конфликтам при одновременном обращении к базе данных и возникновению ошибки database is locked.

Что происходит:

  • Все узлы экспорта пытаются одновременно записать данные в одну таблицу

  • Возникает конфликт доступа к БД

  • Система возвращает ошибку database is locked

б) С портами порядка выполнения

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

Как настроено:

  • Порты порядка выполнения установлены между всеми узлами экспорта

  • Запись выполняется строго по очереди, без параллельных обращений

  • Конфликты исключены, ошибка database is locked не возникает

Оба варианта имеют одинаковую структуру узлов, но отличаются наличием портов порядка выполнения между узлами экспорта:

а) Подключение к базе данных

На странице Подключения настроено подключение SQLite:

  • Имя файла — data/sqlite_db.db
б) Импорт данных

Выполняется получение данных используя узел импорта Excel файл.

Таблица id_value_1.xlsx

Имя Метка
 id id
 value_1 value_1

Таблица id_value_2.xlsx

Имя Метка
 id id
 value_2 value_2

Таблица id_value_3.xlsx

Имя Метка
 id id
 value_3 value_3
в) Экспорт данных в БД
  • Имя таблицы — table
  • Тип экспорта — Обновить существующие записи в таблице
  • Ключевое поле — id

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

г) Объединение статусов запросов

В сценарии узел Соединение (переменные) используется для сбора статусов выполненых запросов к БД SQLite и вывода их наружу.

3. Порядок выполнения узлов с таймаутом

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

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

Примечание: В данном примере используются не существующие IP-адреса.

Сборка URL

В подмодели формируется URL-строки для получение ответа от сервиса ipapi.co. В первую очередь выполняется импорт Excel файла с IP-адресами и их форматами, в котором должен вернуть ответ API-сервис.

Имя Метка Комментарий
 ip ip IP-адрес, по которому нужно получить информацию
 format format Формат, в котором должен вернуть ответ API-сервис. В данном примере используется формат JSON.

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

В узле Калькулятор (переменные) формируется URL с параметрами по маске https://ipapi.co/{ip}/{format}/

Реализация таймаута

В узле JavaScript реализуется принудительная задержка перед вызовом API-сервиса. Во входные переменные узла передается переменная sleep_time, в которой указывается количество секунд задержки.

Настройка подключения

На странице Подключения настроено подключение REST-сервис:

  • URL сервиса — https://ipapi.co/{ip}/{format}/
  • Метод — GET
  • Тип URL параметров — Строка запроса
  • Допустимы Content-Type ответа — application/json

На вход узла REST-сервис, созданного на основе настроенного подключения, подан URL, сформированный в узле Сборка URL.

Отправка запроса

Узел REST-запрос отправляет REST-сервису запрос и получает ответ в формате JSON.

Порядок выполнения

Между компонентами настроены порты порядка выполнения, гарантирующие последовательность:

а) Подмодель подготовки — формирует URL с параметрами

б) Узел JavaScript (таймаут) — выполняет принудительную задержку

в) Узел Подключение — подготавливает соединение для получения ответа от сервиса ipapi.co

г) Узел REST-запрос — отправляет запрос и получает ответ от сервиса ipapi.co

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

4. Порядок выполнения подмоделей

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

На сценарии предоставлен скриншот фрагмента демопримера Уведомления в Loginom с помощью чат-бота Telegram. Сценарий состоит из двух подмоделей, соединенных портами порядка выполнения:

а) Пример сценария

Выполняет основной алгоритм обработки данных:

  • Импорт данных
  • Обработка данных
  • Экспорт обработанных данных в Excel-файл

Сигналом для отправки уведомления является выгрузка данных в Excel-файл.

б) Telegram-bot

Отправляет уведомление в Telegram-чат о завершении работы.

Порядок выполнения

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

а) Сначала выполняется подмодель Пример сценария
б) Только после её полного и успешного завершения запускается подмодель Telegram-bot

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


Уведомления в Loginom при помощи чат-бота Telegram

Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 10 и выше
  • CPU x64: 2 core 1
  • Оперативная память: 4 GB
  • Жесткий диск: 10 GB

1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2, POPCNT.

Новости, материалы по аналитике, кейсы применения, активное сообщество