Описание
OneBridge - это система управления данными, разработанная для автоматизации сбора, преобразования и выгрузки данных в соответствии с заданными пользователем параметрами. Система включает два основных компонента: Веб-платформу и Дизайнер заданий.
Набор готовых алгоритмов обработки упрощает процесс управления данными и ускоряет загрузку и выгрузку данных.
Система позволяет проверить, очистить и получить качественные данные для дальнейшего использования.
Пользователи системы - разработчики, которые создают и поддерживают, например, корпоративные хранилища данных и нормативно-справочные информационные системы.
Функции OneBridge
Система выполняет задания по обработке данных. Для запуска задания пользователю нужно выбрать файл с готовым набором алгоритмов обработки данных.
Взаимодействие пользователя с системой может происходить двумя способами:
- с помощью Модуля управления - позволяет запустить в работу задания на обработку данных, просмотреть в графическом виде алгоритмы заданий, отследить данные о состоянии сервера системы, настроить расписание запуска заданий и задать обработчики событий;
- через локальное приложение Дизайнер заданий - он используется для создания алгоритмов заданий (графов) через графический редактор.
В обоих случаях после запуска задания данные обрабатываются в Модуле выполнения.
Структура OneBridge
Система состоит из двух основных компонентов - Веб-платформы и Дизайнера заданий.
Веб-платформа
Веб-платформа включает в себя два модуля:
- Модуль управления представляет собой веб-интерфейс с возможностью выбора и запуска заданий, а также отслеживания истории запусков и состояния системы. Интерфейс Модуля управления описан в разделе "Интерфейс Модуля управления". Операции, которые можно выполнить с помощью модуля, описаны в разделе "Описание операций".
- Модуль выполнения заданий обрабатывает данные в соответствии с алгоритмами из файлов заданий.
Модуль управления
Модуль управления предназначен для выбора и запуска в работу заданий на обработку данных, представления в графическом виде алгоритмов заданий и отслеживания данных о состоянии сервера системы.
Модуль управления состоит из нескольких компонентов:
- на странице «Ресурсы» отображаются показатели рабочего сервера системы и список заданий, находящихся в процессе выполнения;
- страница «История выполнения» показывает историю запуска заданий на выполнение и развёрнутую информацию о файлах заданий;
- с помощью страницы «Проекты» можно увидеть дерево проектов, просмотреть подробную информацию о файлах заданий и содержимое выбранного файла в текстовом или графическом виде.
- Расписания позволяют настраивать отложенный запуск заданий.
- Обработчики событий могут совершать заданное действие в ответ на выполнение определённого пользователем условия.
Модуль управления обеспечивает:
- отображение информации о ресурсах и производительности сервера;
- просмотр истории выполнения заданий в виде таблицы;
- фильтрацию истории по времени выполнения задания, по названию файла исполняемого задания;
- просмотр информации о файле задания;
- просмотр алгоритма задания в графическом виде;
- просмотр журнала выполнения задания;
- отображение структуры хранения файлов с заданиями;
- выбор и запуск задания на выполнение;
- создание и редактирование расписаний и обработчиков событий;
- создание, редактирование и удаление проектов, папок и файлов с данными.
Модуль выполнения заданий
Модуль выполнения заданий обрабатывает данные по алгоритму, который выбрал пользователь, и собирает статистику использования ресурсов сервера. Этот модуль состоит из инструкций по обработке данных и содержит программные интерфейсы для передачи необходимой информации в модуль управления заданиями и взаимодействия с рабочими процессами.
Модуль выполнения заданий обеспечивает:
- загрузку данных из источников - файлы CSV, базы данных;
- обработку данных по указанному алгоритму - сортировка, фильтрация, преобразование данных;
- отправку обработанных данных по указанному адресу - адресату по почте, запись в файл, в корпоративное хранилище данных;
- распределение нагрузки между рабочими процессами, которые загружают и обрабатывают данные.
Дизайнер заданий
Дизайнер заданий - это локальное приложение для создания, редактирования, отладки и запуска файлов заданий.
Создание заданий в Дизайнере происходит с помощью графического интерфейса. Он описан в главе Интерфейс Дизайнера заданий.
Главные компоненты заданий - Шаги - представлены в виде прямоугольников, которые можно соединять друг с другом рёбрами и располагать в рабочей области нужным образом.
Результатом создания и соединения компонентов графа является xml-файл с алгоритмом обработки данных, который можно запустить в Дизайнере заданий или Модуле управления. Обработка алгоритма происходит в Модуле выполнения заданий.
Установка и активация OneBridge
Установка Веб-платформы
Все описанные ниже действия должны производиться на устройстве с операционной системой Ubuntu (поддерживается верси Ubuntu 22.04.3 LTS), либо на виртуальной машине с ОС Ubuntu.
Персонализированнную ссылку на скачивание вашей версии продукта вы получите после подписания лицензионного договора.
Перед началом работы необходимо установить Wget — (GNU Wget) свободную консольную программу для загрузки файлов по сети.
Затем:
- Открыть командную строку и выполнить команды:
- для скачивания приложения OneBridge с сайта modernsolution.ru:
wget *ссылка на актуальную версию OneBridge*
- для установки скачанных файлов приложения OneBridge:
sudo apt install ./onebridge.deb -y
Вместе с файлами приложения OneBridge будут установлены зависимости из следующего списка: build-essential, linux-libc-dev, pkg-config, libssl-dev, libssl3, libgcc-s1, libc6.
После установки файлы OneBridge будут размещены в директории /opt/OneBridge/bin/
.
- Перейти в вышеуказанную директорию с помощью команды
cd /opt/OneBridge/bin/
. - Запустить приложение из директории
/opt/OneBridge/bin/
, введя команду:./startup.sh
В случае успешной установки будет получен ответ: Startup
.
Для подключения к модулю управления заданиями нужно открыть браузер на этой же операционной системе и ввести в поисковую строку локальный ip-адрес и порт подключения вот таким образом: 127.0.0.1:8000
.
Откроется начальная страница приложения, с которой можно перейти на любую другую страницу из меню.
Список рекомендуемых браузеров: Google Chrome, Яндекс Браузер, Opera.
Установка Дизайнера заданий
Дизайнер поставляется в zip-архиве. Архив содержит папки "cash", "config", "projects", "templates" и файл запуска приложения client.exe
.
Для запуска достаточно распаковать архив в предпочитаемую директорию файловой системы и запустить файл client.exe
.
Все проекты, скачиваемые с сервера и создаваемые локально по умолчанию будут устанавливаться в папку "projects". Файлы в "templates" содержат параметры и описания компонентов и настройки соединений с базами данных. В "config" лежат файлы конфигурации Дизайнера. В "cash" могут создаваться временные файлы, используемые во время работы.
Конфигурация OneBridge
Параметры конфигурации системы указываются в файле config.toml
в корневой папке проекта. Возможна настройка таких параметров как:
адрес подключения интерфейса, параметры авторизации, расположение файлов с логами запусков заданий и других. В таблицах ниже все настраиваемые в конфиге параметры описаны более подробно.
http
Имя параметра | Описание параметра | Пример значения параметра |
---|---|---|
addr | bind address (адрес интерфейса + порт), приоритет отдаётся значению переменной окружения ONEBRIDGE_HTTP_BIND_ADDRESS | addr = "127.0.0.1:8000" |
ui_path | путь к папке с ui | ui_path = "../ui/dist" |
resources
Имя параметра | Описание параметра | Пример значения параметра |
---|---|---|
interval | интервал сбора статистики сервера (равен горизонтальному интервалу между точками на графиках во вкладке ресурсов) | interval = 5 |
execution
Имя параметра | Описание параметра | Пример значения параметра |
---|---|---|
run_storage.sqlite | путь к файлу с информацией о запусках графов | path = "../data/sqlite-storage/execution_run.sqlite" |
run_params_storage.sqlite | путь к хранилищу параметров запусков | path = "../data/sqlite-storage/execution_run_params.sqlite" |
worker.embedded | путь к хранилищу журнала выполнения запусков | job_logs_path = "../data/job-logs" |
projects
Имя параметра | Описание параметра | Пример значения параметра |
---|---|---|
fs.mounted | путь к проектам | path = "../projects" |
auth
Имя параметра | Описание параметра | Пример значения параметра |
---|---|---|
path | путь к хранилищу пользователей | path = "../data/sqlite-storage/users_storage.sqlite" |
exp_long | экспирация длинного токена (рт), в секундах | exp_long = 86400 |
exp_short | экспирация короткого токена (ат), в секундах | exp_short = 86400 |
at_secret | сид для генерации токена доступа | at_secret = "87ac0287d16540e3f9cb307327411ffb39bb4008" |
rt_secret | сид для генерации токена обновления | rt_secret = "390aed9f00981f4a4c9ae2c1a5e4c115d56f6101" |
api_tokens | спецтокен для доступа ко всем апи | api_tokens = ["test"] |
ldap_dn | параметры для подключения к базе ldap | ldap_dn = "uid={},ou=onebridge,dc=example,dc=org" |
ldap_addr | ip и порт ldap сервера | ldap_addr = "127.0.0.1:389" |
auth_tries | количество попыток авторизации (после использования всех попыток, пользователь блокируется) | auth_tries = 5 |
Активация OneBridge
Активация позволяет убедиться, что ваша копия OneBridge не используется на нескольких устройствах и содержит заявленную версию продукта.
Чтобы активировать вашу копию OneBridge, нужно будет разместить ключ активации в папке ./data/license
. Ключ активации представляет собой файл с расширением .lic
, который можно получить от сотрудника поддержки OneBridge. Процедура активации однократная и выполняется только при первом запуске системы.
При первом запуске OneBridge создаст папку ./data/license
и сгенерирует файл с вашим machine-id
. Путь к файлу будет прописан в консоли. Этот файл нужно будет передать сотруднику поддержки СБАР. В ответ вы получите другой файл, который нужно будет положить в папку рядом с machine-id
и повторно запустить установку. В случае успешной проверки указанных файлов OneBridge будет активирован и вы сможене использовать все его функции.
При необходимости активации на новом устройстве, нужно будет повторить процедуру обмена файлами при первом запуске системы на этом устройстве.
Термины и определения
Шаг – минимальный алгоритм обработки информации.
Задание – алгоритм, последовательность шагов, описанная в файле.
Граф – разновидность задания, наименьшая исполняемая единица рабочего процесса. Графы состоят из шагов, имеющих порты для ввода и вывода данных. Порты шагов в графе соединены линиями - ребрами графа, которые отражают передачу данных между портами шагов.
Входной порт – точка входа потока данных в шаг.
Выходной порт – точка выхода результата обработки данных из шага.
Ребрам назначаются метаданные. Метаданные описывают структуру данных. Они состоят из названий полей, типов данных и их размера.
Поток заданий (рабочий поток/jobflow) – разновидность задания. Поток заданий позволяет объединять графы в сложные процессы, обеспечивая согласование, выполнение заданий в зависимости от условий и обработку ошибок.
Задача — это граф, поток заданий или другое действие, которое можно запустить вручную, с помощью расписания или обработчика событий. Задача описывает «что нужно сделать».
Источник данных – это массив информации, откуда данные загружаются в систему для обработки.
Приемник данных – целевая система, куда выгружаются данные после обработки. Это может быть база данных, простой файл, интернет-ресурс и так далее.
Плоский файл – это файл, в котором данные хранятся в виде записей. Записи отделяются друг от друга специальным символом-разделителем. Внутри каждой записи может быть несколько полей разных типов. Поля тоже разделяются символом-разделителем.
Обработчик событий - инструмент для отслеживания изменений в системе и совершения запланированных действий.
Расписание – график запуска заданий. Позволяет настроить запуск заданий в конкретное время.
Описание интерфейса Модуля управления
Каждая страница приложения поделена на три панели:
- панель Меню;
- Рабочая панель;
- панель Дополнительной информации.
В Меню доступны для перехода несколько разделов: "Ресурсы", "История выполнения", "Проекты", "Расписания", "Обработчики событий".
- На странице ресурсов отображается информация о задействованных ресурсах сервера и его производительности. Информация сгруппирована на нескольких панелях. Периодичность обновления данных можно настроить.
- На странице истории выполнения отображается история выполнения заданий в виде таблицы, каждая строка которой содержит информацию по отдельному заданию. Данные в таблице можно фильтровать. Доступен просмотр подробных данных по каждому заданию.
- В дереве проектов доступен просмотр информации о файлах заданий и их запуск на выполнение.
- С помощью расписаний можно планировать запуск заданий.
- Обработчики событий реагируют на произошедшие изменения и запускают выполнение назначенных задач.
Далее описан интерфейс страниц этих разделов.
Ресурсы
Страница ресурсов отображает информацию о производительности сервера приложения.
Интерфейс страницы «Ресурсы»
Рабочая панель поделена на несколько областей:
- «Использование ресурсов». Здесь отображается объем используемой системной памяти на момент загрузки страницы.
- «Рабочий сервер». Раздел содержит информацию о параметрах рабочего сервера.
- «Операционная система». Содержит основную информацию об операционной системе.
- «Производительность». В этом разделе отображаются два линейных графика: «Загрузка памяти» - RAM и «Загрузка ЦП» - CPU.
- «Запущено заданий» отображает информацию о процессах, которые выполняются в данный момент.
История выполнения
История выполнения показывает историю всех запущенных заданий, которые выполнял OneBridge сервер. Вы можете использовать историю, чтобы узнать, почему задание завершилось ошибкой и просмотреть параметры, которые использовались для конкретного запуска.
Интерфейс страницы «История выполнения»
В Рабочую область выводится таблица с основной информацией о произведенный запусках заданий: идентификатор выполнения, название файла задания, кем запущено, статус, время запуска задания. Процесс, запущенный последним, отображается в таблице выше всех.
Чтобы отфильтровать таблицу по дате или названию файла задания, заполните поля фильтров и используйте кнопку «Фильтровать».
Поля для фильтрации таблицы с историей выполнения заданий
Чтобы просмотреть информацию о конкретном задании, нужно кликнуть соответствующую строку в таблице. Подробная информация отображается справа, на панели просмотра дополнительной информации. На этой панели есть несколько вкладок.
Вкладка «Обзор» представлена на рисунке ниже. Она отражает номер задания, данные о времени выполнения, относительный путь к файлу задания и статус его выполнения.
Интерфейс вкладки «Обзор»
Ниже описаны данные, которые отображаются на этой вкладке.
Имя столбца | Описание |
---|---|
№ | Идентификатор запуска задания, уникальный номер, идентифицирующий запуск задания. |
Начало | Дата и время начала выполнения задания. |
Конец | Дата и время окончания выполнения задания. |
Продолжительность | Длительность выполнения. |
Файл задания | Относительный путь до файла задания |
Статус | Статус выполнения задания. "Выполнено" - задание выполнено успешно и "Не выполнено" - во время выполнения задания произошла ошибка, задание не выполнено. |
Входные параметры | Наименования и значения входных параметров, которые были указаны при запуске задания. |
Графический инструмент «Инспектор заданий», приведенный на рисунке ниже, позволяет пользователю исследовать процесс выполнения задания. Инспектор заданий визуализирует поток данных в виде графа. На графе выводятся компоненты - это шаги алгоритма, они представлены в виде прямоугольников, соединенных линиями. Линии в графе называются рёбрами и отражают потоки данных между компонентами.
Граф может быть очень большим и не помещаться в инспекторе полностью. Чтобы увидеть все компоненты и их связи, нужно перетащить рисунок, зажав его левой кнопкой мыши и потянув, сдвигая в сторону.
Вкладка «Инспектор заданий». Визуальное представление задания, состоящего из нескольких шагов.
На вкладке «Журнал», представленной на рисунке ниже, можно просмотреть подробную информацию о ходе выполнения задания. Каждый запуск задания имеет собственный файл журнала.
Вкладка «Журнал»
На вкладку «Содержимое файла» выводится контент файла задания.
Вкладка «Содержимое файла»
Проекты
Проекты — это место, где хранятся все рабочие файлы. На рабочей панели этой страницы находится каталог проектов, внутри проектов – папки и файлы. На следующем рисунке приведен внешний вид страницы проектов.
Интерфейс страницы «Проекты»
Чтобы открыть содержимое проекта или папки нажмите знак «+» слева от названия объекта в каталоге.
Если нажать на название элемента каталога, появится панель дополнительной информации в правой части экрана. На ней есть несколько вкладок для просмотра подробной информации об открытом элементе и его содержимом.
Всегда доступна вкладка «Обзор». На ней отображаются данные файла или выбранной директории. Запуск заданий на выполнение производится на этой вкладке.
Для файлов с расширением .grf
появляется вкладка «Инспектор заданий». На ней можно увидеть процесс выполнения задания в графическом виде.
Текст файла задания выводится во вкладку «Содержимое файла».
Создание проектов и управление ими описано в главе «Описание операций».
Расписания
Раздел расписаний позволяет планировать запуски заданий по графику, устанавливаемому пользователем. Периодичность запуска настраивается.
На странице планировщика расписания представлены в виде таблицы, в которой указан статус расписания (включено/выключено), название, дата и время последнего и следующего запусков.
Список созданных расписаний
Каждый пункт расписания представляет собой определение времени запуска и указание файла задания для выполнения. После создания каждый пункт расписания можно редактировать или приостанавливать его выполнение.
Для создания пункта расписания необходимо указать его название, периодичность запуска и временной интервал работы, файл задания для запуска.
Периодичность запуска расписаний:
- один раз;
- с интервалом;
- по определенному графику.
Таблица атрибутов расписания:
название | обязательный | режим | описание |
---|---|---|---|
имя расписания | да | любой | названия пункта расписания |
периодичность | да | любой | периодичность выполнения расписания: один раз/интервал/расписание |
время исполнения | да | один раз | дата и время в формате: yyyy-mm-dd hh:mm:ss |
запускать каждые | да | интервал | периодичность запуска задания. Может быть задана в секундах, минутах или часах. |
выражение cron | да | расписание | выражение, определяющее график запуска расписания |
начало активации | да | интервал и расписание | время первого выполнения расписания |
конец активации | нет | интервал и расписание | время последнего выполнения расписания |
файл задания | да | любой | имя файла задания, которое нужно запустить по расписанию |
Обработчики событий
Обработчики событий – это инструменты для отслеживания изменений в системе и совершения запланированных действий. С их помощью можно настроить запуск выполнения определенной задачи, после выполнения указанного события.
Список созданных обработчиков событий
Виды обработчиков:
- обработчики событий заданий привязаны к определенному рабочему процессу и отрабатывают каждый раз, когда рабочий процесс выполняется;
- обработчики файловых событий отслеживают изменения в файловой системе и реагируют на такие изменения запуском определенной задачи.
Обработчики ждут наступления события и запускают определенное в их настройках действие, если событие происходит. Созданные обработчики отображаются в списке обработчиков событий.
Отслеживаются следующие события:
- События с заданиями – завершение работы
- События с файлами – создание, удаление
Список обработчиков содержит следующую информацию:
название | описание |
---|---|
Включено | Указывает, включен ли обработчик или отключен. Щелчок по значку включает/отключает обработчик. |
Обработчик события | Показывает имя обработчика, тип задачи и событие, которого ожидает обработчик. |
Файл задания | Имя файла, окончание работы которого отслеживается обработчиком. |
Последний запуск | Показывает дату и время последнего запуска обработчика. |
Типы задач, которые можно выполнить с помощью обработчиков:
- запуск задания;
- выполнение системной команды.
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
name | string | название слушателя | name="listener2000" |
enabled | bool | состояние слушателя. Включён|выключен | enabled=true |
event | string | событие, которое слушает слушатель: "Job" или "File" |
|
action | string | действие, которое необходимо выполнить, когда event завершится |
|
Описание операций
В данной главе приведены способы взаимодействия с системой OneBridge через модуль управления.
Описаны все возможные операции, которые можно совершить, и приведены скришоты и инструкции.
- Создать проект
- Создать папку
- Создать файл
- Загрузить файл
- Редактировать файл
- Переименовать объект
- Удаление объектов каталога
- Запуск задания на выполнение
- Просмотр истории
- Просмотр ресурсов
- Настроить расписание
- Настроить слушатель
- Смена языка
- Скрытие панелей
Создать проект
Чтобы создать новый проект нажмите кнопку «Создать новый проект» в верхней части рабочей панели на странице «Проекты». Диалог создания проекта показан ниже.
Открытие диалога по созданию нового проекта
Откроется диалоговое окно. Задайте название в поле «Имя проекта» и нажмите кнопку «Создать», чтобы создать проект. Чтобы выйти из диалога без сохранения – нажмите «Закрыть».
В случае создания проекта в верхнем правом углу будет выведено уведомление об этом. Название нового проекта появится в дереве проектов.
Новый проект создан
Создать папку
В существующих проектах можно создавать папки для упорядочивания файлов внутри ваших проектов. Для создания папки нажмите на название проекта, в котором нужно создать папку. На панели дополнительной информации отобразится вкладка «Обзор». Откройте список действий с проектом, нажав на троеточие в правой части вкладки. Выберите «Создать папку».
Меню директории при создании папки
Отобразится диалоговое окно. Введите имя папки в поле «Имя папки». Нажмите «Создать». Для отмены создания нажмите «Закрыть».
Диалог создания папки
После создания папки в верхнем правом углу появится всплывающее уведомление с названием созданного объекта.
Новая папка создана
После создания папки в пустом проекте рядом с её значком на рабочей панели появится значок «+». Это значит, что в проекте есть объекты. Чтобы посмотреть список объектов, нажмите на «+».
Папки можно создавать внутри существующих папок.
Создать файл
Файлы можно создавать как внутри проектов, так и внутри папок. Чтобы создать файл, выберите в рабочей панели нужную директорию щелчком мыши. Будет открыта вкладка «Обзор». С помощью троеточия в правом верхнем углу откройте меню директории, выберите «Создать файл».
Меню директории при создании файла
Откроется диалог создания файла. Путь к создаваемому объекту будет указан в поле «Создать файл в». Задайте название файла вместе с расширением в поле «Имя файла». При необходимости, внесите содержимое файла в поле «Содержимое файла». Нажмите «Создать». Для отмены создания нажмите «Закрыть».
Диалог создания файла
После создания файла в пустой папке рядом с её значком в дереве проектов появится значок «+». Это значит, что в папке есть объекты. Чтобы посмотреть список объектов, нажмите на «+», директория раскроется и станут видны содержащиеся в ней объекты. Значок «+» при этом изменится на «–».
Новый файл создан
Загрузить файл
Для того, чтобы загрузить в систему файл с компьютера, можно воспользоваться функцией «Загрузить файл». Кнопка загрузки находится в том же выпадающем списке, что и создание файла.
Выбор пункта «Загрузка из файла» из выпадающего меню на вкладке «Обзор»
Выбор файла, который нужно загрузить в систему, через диалоговое окно
Файл загружен из памяти компьютера на сервер системы OneBridge
Редактировать файл
Содержимое файла можно отредактировать. Для этого нажмите на иконку в виде пишущей ручки на панели дополнительной информации. Вы будете автоматически перенаправлены на вкладку «Содержимое файла».
Включение режима редакирования файла
Чтобы сохранить изменённый файл, нажмите «Сохранить».
Сохранение изменений
Чтобы выйти из режима изменения без сохранения, нажмите «Закрыть».
Переименовать объект
Для того, чтобы переименовать объект каталога, выберите его из списка объектов на рабочей панели и нажмите кнопку «Переименовать файл» в выпадающем меню на панели дополнительной информации, если нужно переименовать файл, и «Переименовать папку», если нужно переименовать папку.
Выбор пункта меню для переименования файла
Пункт меню для переименования папки
Исправьте имя файла и нажмите «Сохранить».
Диалог переименования объекта каталога
Имя файла в каталоге поменяется.
Объект переименован
Удаление объектов каталога
Чтобы удалить объект каталога, выберите его в дереве проекта. Нажмите кнопку в виде мусорного ведра. Откроется диалог удаления. Для подтверждения нажмите «Удалить», для отмены действия нажмите «Закрыть».
Удаление объекта каталога
После удаления файл сразу пропадёт из дерева проектов.
Запуск задания на выполнение
Чтобы запустить задание на выполнение перейдите на страницу «Проекты».
Выберите нужный файл в дереве проектов на рабочей панели.
Щелкнув по файлу перейдите на вкладку «Обзор» в панели дополнительной информации.
В правом верхнем углу вкладки «Обзор» нажмите кнопку «Запуск» , чтобы попасть в диалог запуска задания на выполнение.
Последовательность действий для запуска задания на выполнение
В появившемся диалоговом окне заполните необходимые поля. Некоторые поля являются обязательными для заполнения. После заполнения полей в диалоговом окне нажмите кнопку «Запустить».
Диалоговое окно запуска задания
После этого в правом верхнем углу экрана появится уведомление с номером процесса, который система автоматически присвоила запущенному заданию. Нажав на номер в уведомлении, вы будете перенаправлены на страницу просмотра истории выполнения заданий.
Уведомление о запуске задания
Просмотр истории
Увидеть информацию о запущенных заданиях можно выбрав в панели меню пункт «История выполнения». Сделав это, вы перейдете на страницу просмотра истории выполнения заданий. В середине экрана отобразится таблица с информацией о статусах выполнения всех уже запущенных процессов:
- во время выполнения задание будет иметь статус «В процессе»;
- если процесс успешно завершен – проставляется статус «Выполнено»;
- если процесс завершился с ошибкой статус будет «Не выполнено».
Для того, чтобы увидеть актуальную информацию о статусе процесса, нужно обновить страницу.
После выбора строки с нужным номером процесса, откроется панель дополнительной информации с открытой вкладкой «Обзор». Во вкладке будет отображаться информация о выбранном задании.
Страница просмотра истории выполнения заданий
В просмотр истории выполнения задания также можно попасть, щелкнув по номеру в уведомлении о запуске задания. Вкладка «Обзор» с информацией о конкретном задании будет открыта автоматически.
Список заданий в таблице можно отфильтровать с помощью функции фильтрации. Чтобы отфильтровать таблицу по дате запуска задания, введите начальную и конечную даты в формате «год-месяц-день часы:минуты:секунды» в соответствующие поля на рабочей панели и нажмите «Фильтровать».
Фильтрация заданий по дате выполнения
Чтобы отфильтровать процессы по статусу выполнения, выберите нужный статус из выпадающего списка в поле «Статус» как на рисунке ниже.
Фильтрация заданий по статусу выполнения
Для поиска исторических записей о выполнении заданий по имени файла задания, введите в поле «Файл задания» имя файла (см. рисунок 33). После заполнения полей для фильтрации нажмите кнопку «Фильтровать».
Результат фильтрации по имени файла задания
Чтобы выбрать задание и просмотреть информацию о нем, щелкните левой кнопкой мыши по строке с номером задания. Если вы попали на вкладку истории выполнения после запуска задания, нажав на уведомление, то просмотр информации по конкретному заданию будет доступен сразу.
Переключайтесь между вкладками панели дополнительной информации, чтобы увидеть всю доступную информацию о задании.
Просмотр ресурсов
Чтобы проверить, сколько ресурсов потребляется при выполнении заданий, перейдите на страницу просмотра ресурсов, выбрав пункт меню «Ресурсы».
Выбор страницы «Ресурсы» в меню
На этой странице доступно несколько разделов экрана, показывающих информацию об используемой памяти и нагрузке рабочего сервера, а также графики использования ресурсов.
В блоке «Использование ресурсов» на круговой диаграмме отражается процентное соотношение занятой оперативной памяти сервера ко всей доступной.
Блок «Рабочий сервер» содержит информацию о параметрах сервера.
В блоке «Операционная система» указаны атрибуты используемой операционной системы.
В блоке «Запущено заданий» отображаются задания в процессе выполнения.
Отображение запущенных процессов на странице ресурсов
В блоке «Производительность» видимую область графиков можно менять, двигая мышкой ползунок с указанием времени под графиком. Выбор временного отрезка проиллюстрирован на следующем рисунке.
Выбор временного отрезка на графике
Изменение временного отрезка пригодится, чтобы наблюдать изменения производительности на меньшем промежутке времени, так как по умолчанию выводится информация о последних сутках использования.
Наведя указатель мыши на график, вы увидите всплывающую подсказку с описанием ресурсов в выбранный момент времени.
Всплывающая подсказка на графике производительности
Для лучшей читаемости каждый из графиков можно включить или отключить, щелкнув его метку над областью графиков.
Метки, управляющие видимостью графиков
Вы можете выбрать временной интервал с помощью колеса прокрутки мыши или с помощью ползунка в нижней части экрана. Ползунок позволяет установить начало и конец временного интервала по отдельности.
Уменьшение временного отрезка на графиках с помощью ползунка
По умолчанию максимальный временной интервал для графиков на вкладке «Производительность» составляет 24 часа.
Настроить расписание
Для того, чтобы задать определенное время выполнения задачи, используйте планировщик. Перейдите на страницу планировщика, выбрав в панели меню строчку «Расписания». Чтобы запланировать выполнение задания щелкните по кнопке «Новое расписание».
Таблица расписаний
Нажмите «Новое расписание» чтобы открыть диалог создания расписания.
В открывшемся окне введите имя будущего расписания, периодичность запуска задачи, время выполнения и выберите файл задания, который надо запустить. Нажмите «Создать», чтобы создать расписание.
Диалог создания нового расписания
Расписание будет создано и запущено в заданное время. Созданное расписание можно увидеть в таблице расписаний. Работающие расписания помечены как включенные с помощью синего переключателя. Чтобы выключить расписание – нажмите на переключатель, чтобы он стал серым.
Список запланированных задач
Чтобы создать новое расписание откройте диалог на вкладке «Расписания», нажав «Новое расписание» в левом верхнем углу.
Выполнение расписания можно проверить на странице «История выполнения».
Проверка запуска запланированной задачи в истории выполнения
Для редактирования расписания нажмите значок в виде пишущей ручки на вкладке Обзор. В открывшемся окне можно изменить тип расписания, время и файл, который будет запущен.
Редактирование расписания
Чтобы удалить расписание, нажмите значок мусорного ведра на вкладке Обзор и подтвердите удаление в появившемся диалоговом окне.
Удаление расписания
Создать обработчик событий
Чтобы настроить обработчик щелкните Новый обработчик на вкладке Обработчики событий. Появится диалоговое окно для внесения атрибутов. Задайте название обработчика, выберите отслеживаемое событие и назначьте действие, которое будет выполнено, когда отслеживаемое событие совершится. Нажмите «Создать».
Создание обработчика
Созданный обработчик отобразится в списке.
Список Обработчиков
Отредактировать обработчик событий
Для того чтобы отредактировать обработчик откройте вкладку Обзор, нажав на имя обработчика. На вкладке с подробной информацией выберите кнопку редактирования в виде карандаша. В открывшемся диалоговом окне внесите изменения в обработчик. Изменить можно все кроме названия.
Редактирование обработчика
Переименовать обработчик событий
Для того, чтобы изменить название обработчика, откройте выпадающее меню, нажав на три точки и выберите Переименовать обработчик. Внесите новое имя обработчика в открывшейся форме.
Переименование обработчика
Удалить обработчик событий
Чтобы удалить обработчик событий нажмите кнопку удаления в виде мусорного ведра, подтвердив удаление в диалоговом окне.
Удаление обработчика
Смена языка
По умолчанию язык интерфейса – русский. Язык можно сменить с помощью переключателя в правом верхнем углу экрана на любой странице приложения. Выберите нужный язык из выпадающего списка.
Смена языка интерфейса
Скрытие панелей
Чтобы скрыть панель меню для улучшения обзора, нажмите кнопку в виде двойной стрелки внизу данной панели. Чтобы раскрыть меню, еще раз нажмите на кнопку в виде стрелки.
Кнопка сворачивания панели меню
Панель меню в свернутом виде
На странице истории заданий можно раздвинуть вкладку с инспектором заданий, чтобы просмотреть особенно большой граф, с помощью кнопки в виде двойной стрелки.
Кнопка для управления размером панели дополнительной информации
Полностью развернутая панель дополнительной информации
Чтобы уменьшить размер панели, нажмите на кнопку повторно.
Использование Дизайнера
Дизайнер заданий - это локальное приложение для создания и запуска файлов заданий.
Создание и изменение заданий в Дизайнере происходит с помощью графического интерфейса. Главные компоненты заданий - Шаги - представлены в виде прямугольников, которые можно соединять друг с другом рёбрами и располагать в Рабочей области нужным образом. Задание свойств шагов осуществляется через Редактор шага.
Результатом изменений в Рабочей области является автоматически создаваемый xml-файл, в котором прописан алгоритм обработки данных. Текст файла отображается на вкладке Источник. Обработка алгоритма происходит в Модуле выполнения заданий.
Интерфейс Дизайнера заданий
Интерфейс Дизайнера состоит из четырёх панелей:
-
Рабочая область со списком компонентов находится в верхней правой части окна. На этой панели вы можете создавать свои графы. Список компонентов служит для выбора компонентов, перемещения их в Рабочую область, соединения их рёбрами. Эта панель имеет две вкладки - Задание и Источник.
-
Панель Обозреватель проектов находится в верхней левой части окна. В этой панели находятся папки и файлы ваших проектов. Вы можете развернуть или свернуть их и открыть любой граф, дважды щелкнув на его название.
-
Панель Структура задания находится в нижней левой части окна. Панель содержит все части графа, открытого в Рабочей области в данный момент.
-
Панель состояний находится в нижней части окна. Она содержит несколько вкладок с уточняющей информацией.
Рабочая область
Рабочая область самая важная часть Дизайнера заданий. Она состоит из двух вкладок: на вкладке UI отображаются компоненты, соединённые рёбрами, и заметки к графу, а на вкладке Source отображается текст xml-файла, который автоматически создаётся в соответствии с набором компонентов со вкладки UI. Рядом с Рабочей областью находится панель Списка компонентов, в которой отображаются компоненты, которые можно расположить в Рабочей области.
Вкладка "UI"
Состоит из Рабочей области и Списка компонентов. Отображает все компоненты графа, соединения между ними и заметки к этому графу.
Список компонентов
Список компонентов
Список компонентов (Список) содержит компоненты для размещения в Рабочей области и инструменты для работы с ними. Список позволяет выбрать компонент и вставить его в Рабочую область. Так же Список содержит инструменты для размещения заметок и настройки списка доступных компонентов.
Рабочая область со Списком компонентов открываются после запуска Дизайнера заданий.
Вы можете изменить форму Списка, сдвинув ее границу относительно Рабочей области.
Размещение компонентов в Рабочей области
Чтобы вставить компонент в Рабочую область, перетащите его из Списка компонентов в Рабочую область. После вставки двух компонентов их можно будет соединить рёбрами.
Компоненты в Списке компонентов
Все возможные компоненты отображаются в Списке компонентов в правой части Рабочей области.
Чтобы просмотреть список компонентов одного типа, например, Readers, раскройте список, кликнув по стрелочке слева от названия.
Список компонентов
Список всех компонентов, принадлежащих текущему заданию, можно просмотреть на панели Структура задания.
Использование рёбер
Чтобы соединить два любых компонента ребром, щелкните по выходному порту первого компонента, появится ребро, одним концом прикрепленное к компоненту. Протащите мышкой конец ребра на свободный входной порт второго компонента и отпустите.
Если требуется добавить ребро к компоненту, в котором нет свободных портов - щелкните по компоненту правой кнопкой и выберите add input или add output - это добавит входной или выходной порт и вы сможете прикрепить к нему новое ребро.
Редактор компонента
Если дважды щелкнуть по компоненту, откроется Редактор Шага (Редактор). Он нужен для того, чтобы определить значения атрибутов для конкретного Шага. В Редакторе содержатся все возможные атрибуты каждого Шага, например, Редактор FlatFileWriter будет содержать следующие поля:
Атрибут | Значение | Описание |
---|---|---|
phase | 0 | Фаза, которой принадлежит компонент. |
fileURL | project_new/file-in.txt | Путь к файлу для чтения. |
charset | windows-1251 | Кодировка символов, читаемых с помощью этого компонента. |
append | true | Если записи печатаются в существующий непустой файл, они по умолчанию заменяют более старые (при append=false). Если установлено значение true, новые записи добавляются в конец существующего выходного файла. |
fieldDelimiter | , | Разделитель полей. |
recordDelimiter | n/ | Разделитель записей. |
Редактор атрибутов Шага FlatFileWriter
Сохранение задания
Перед запуском задание нужно сохранить, чтобы синхронизировать локальные изменения с сервером. Сохраните задание, выбрав пункт Сохранить в меню Файл, либо нажав Ctrl+S
.
Закрытие задания
Если вы хотите закрыть любое из заданий, открытых в Рабочей области, вы можете нажать кнопку в виде крестика в правой части вкладки с заданием.
Если нужно закрыть все открытые файлы выберите в контекстном меню вкладки Закрыть все.
Вкладка "Source"
Вкладка Source содержит информацию о задании в виде xml-файла. Структура файлов заданий описана в главе Структура файлов заданий OneBridge
Копирование и вставка частей задания
Скопировать любую выделенную часть любого задания можно, нажав Ctrl+C
, а затем вставить в Source другого задания с помощью Ctrl+V
.
Обозреватель проектов
На панели Обозревателя проектов есть список ваших проектов, их подпапок и файлов.
Вы можете развернуть или свернуть каждый из них, просмотреть о них информацию или открыть в Рабочей области, дважды щелкнув на название задания.
Панель "Обозреватель проекта"
Структура проектов подробнее описана в главе Проекты
Структура задания
Панель Структура задания содержит список всех элементов редактируемого в данный момент задания. С её помощью можно просматривать и редактировать значения атрибутов Шагов, указывать параметры соединения с базами данных и т.д.
Метаданные — список метаданных, назначаемых ребрам в выбранном графе.
Соединения - список соединений, используемых в графе.
Метаданные, соединения с базой данных, параметры доступны для просмотра, создания и редактирования на панели Структура задания.
Чтобы открыть редактор любого элемента на панели Структура задания, раскройте дерево элементов и дважды щёлкните на название элемента, откроется его редактор.
Панель "Структура задания"
Редактор метаданных
Панель состояний
Вкладка "Консоль"
На этой вкладке отображается журнал выполнения заданий. Запущенные шаги перечисляются в порядке запуска, выводится количество обработанных записей и ошибки при возникновении.
Данные в консоль записываются каждый раз при запуске задания.
Вкладка "Консоль"
Проекты OneBridge
Все проекты и их структуры хранятся на сервере. Файлы находятся на сервере и на вашем локальном компьютере.
Когда проект создаётся локально в Дизайнере - он появляется и на сервере. Для того, чтобы скачать проект с сервера в Дизайнер, нужно авторизоваться и выбрать нужный проект, тогда он будет скачан.
Структура проектов
Каждый из проектов будет иметь стандартную структуру проекта, если её не изменить при создании проекта.
Стандартная структура подразумевает набор подпапок в проекте, которые появляются, если при создании проекта стояла галочка "создать проект по шаблону". Ниже в таблице представлено описание шаблонных подпапок.
Описание | Стандартное имя папки | Стандартное имя параметра | Пример использования параметра |
---|---|---|---|
все соединения | conn | CONN_DIR | ${CONN_DIR} |
входные данные | data-in | DATAIN_DIR | ${DATAIN_DIR} |
выходные данные | data-out | DATAOUT_DIR | ${DATAOUT_DIR} |
временные данные | data-tmp | DATATMP_DIR | ${DATATMP_DIR} |
графы | graph | GRAPH_DIR | ${GRAPH_DIR} |
потоки данных | jobflow | JOBFLOW_DIR | ${JOBFLOW_DIR} |
метаданные | meta | META_DIR | ${META_DIR} |
параметры | param | PRM_DIR | ${PRM_DIR} |
Так же будет создан файл Workspace.prm, содержащий стандартные параметры проекта.
Структура папок проекта внутри панели Обозревателя проектов
Создание и подключение проектов
Изначально в Дизайнере не будет проектов. Проекты можно скачать с сервера или создать локально.
Чтобы подключить проект, нажмите правую кнопку в области панели Project structure и выберите Новый проект в контекстном меню.
В параметрах подключения укажите URL cсервера в формате http://ip-adress:port
, логин и пароль пользователя, имеющего доступ. Проверить подключение можно с помощью Test Connection. Затем выберите проект из существующих на сервере или создайте новый. Проверьте имя проекта и завершите подключение.
Подключение к новому проекту
Выбор существующего или создание нового проекта
Размещение проекта
Создание графа
Граф OneBridge — это наименьшая исполняемая единица рабочего процесса. В графе описан процесс преобразования данных.
После создания проекта вы можете создать новый граф, выбрав в контекстном меню проекта New grf file.
Задайте имя графа в открывшемся диалоговом окне. Граф будет помещен в выбранный проект. Расширение .grf
будет добавлено к выбранному имени автоматически. Затем в панели Project structure появится файл new-graph.grf
. Откройте файл, дважды щёлкнув по его названию.
Размещение компонентов
Чтобы обрабатывать данные, нужно наполнить граф компонентами. Найдите FlatFileReader среди Readers. Перетащите его из списка компонентов в Рабочую область.
Размещение первого компонента в Рабочей области
Сделайте то же самое с FlatFileWriter из Writers. Поместите их по порядку, слева направо.
Размещение компонента для записи
Соединение компонентов рёбрами
Теперь нужно соединить компоненты ребром. Для этого нажмите на выходной порт FlatFileReader, появится ребро. Перетащите свободный конец ребра на выходной порт FlatFileWriter.
Соединение компонентов ребром
Ребро по-прежнему красного цвета, поскольку ему не назначены метаданные. На следующем шаге мы назначим метаданные ребру.
Назначение метаданных ребру
На панели Outline кликните на Metadata правой кнопкой, откроется контекстное меню. Выберите New Metadata, откроется редактор метаданных.
Задйте имя метаданных, тип записей и разделитель записей.
Кнопкой + создайте новую запись и укажите ее атрибуты. Сохраните изменения кнопкой Save.
Создание метаданных
Чтобы назначить созданные метаданные ребру графа, двойным кликом откройте редактор ребра. Выберите из выпадающего списка нужное имя метаданных, сохраните изменения ребра.
Назначение метаданных
Метаданные назначены
Выполнение
Когда граф создан, его можно запустить различными способами:
- выбрать Run -> Run graph в главном меню;
- использовать сочетание клавиш Ctrl+R;
Успешное выполнение графа
После запуска графа процесс его выполнения можно увидеть в Консоли:
Вкладка Консоль с обзором выполнения графа
На краях рёбер должны появиться цифры, обозначающие количество обработанных записей:
Подсчет проанализированных данных
Статусы выполнения графа
Исполняемый граф может находиться в одном из следующих состояний:
Статус | Символ | Описание |
---|---|---|
В процессе/In Progress | Процесс выполняется. | |
Выполнено/Success | Работа завершилась без сбоев. | |
Не выполнено/Failure | Произошел сбой во время обработки данных. | |
Неизвестно/Unknown | Когда сервер обнаруживает несоответствие статуса графа. Например, когда сервер запускается и в базе есть работающие процессы, что невозможно, так как сервер еще не запущен. |
Отслеживание графа
OneBridge предоставляет различную отслеживающую информацию о работающих графах. Наиболее важная информация используется для заполнения вкладки Консоль.
Тот же источник данных используется для отображения информации на элементах графа. Количество переданных записей отображается на каждом ребре графа, которое передавало данные.
Пример отображения информации на ребах графа
Взаимодействие с Сервером
Когда Дизайнер OneBridge и модули управления и выполнения полностью настроены, вы можете получить доступ к данным сервера непосредственно из Дизайнера без необходимости копировать их туда и обратно вручную.
Дизайнер берет на себя все заботы о передаче данных - вы можете напрямую редактировать графы, запускать их на сервере, редактировать файлы заданий, метаданные и т. д. Вы можете отслеживать выполнение графа в реальном времени в Модуле управления на вкладке "Отслеживание/Tracking", когда он выполняется.
Диалоговые окна
Диалоговые окна служат для навигации по файловой системе и выбора входных или выходных файлов для шагов.
Во многих шагах нужно указать URL-адрес файла. Эти файлы могут служить источниками данных, быть целевыми хранилищами, в которые данные следует записывать, или файлами, которые необходимо использовать для преобразования данных, проходящих через шаг. Чтобы указать URL-адрес файла в локальной системе, вы можете использовать диалоговое окно.
Диалоговые окна могут быть нескольких видов:
Локальные файлы
Диалоговое окно может служить для поиска файлов в локальной файловой системе.
Диалоговое окно URL-адреса
Решение конфликтов
Окно решения конфликтов это инструмент для решения последствий синхронизация файлов. Процесс синхронизации запускается после нажатия кнопки Reload либо при попытке сохранить файлы, в которые внесены изменения через другую часть OneBridge.
Результатом синхронизации является загрузка отсутствующих, обновление модифицированных и удаление не существующих на сервере файлов.
Если файл открыт в Дизайнере и после синхронизации является модифицированным или несуществующим - происходит конфликт.
Диалоговое окно решения конфликта
Чтобы разрешить конфликт, необходимо выделить файл кликом, принять решение по каждому файлу и подтвердить выбор действия.
- Для модифицированных файлов: Accept Local - оставит текущую вкладку открытого файла без изменений, Accept Remote - обновит текущую вкладку открытого файла.
- Для удаленных файлов: Accept Local - оставит текущую вкладку открытого файла без изменений, Accept Remote - закроет вкладку.
На скриншоте ниже приведён пример принятия локальных изменений. То есть изменения, лежащие на сервере, будут проигнорированы и вместо них запишутся изменения, совершенные локально в Дизайнере.
Выбор действия при конфликте
Задания
Задание – это последовательность шагов по обработке данных, записанная в формате XML в файл с расширением .grf
(и .jbf
в будущем).
Шагом является минимальный алгоритм обработки данных.
Созданием файлов заданий занимается пользователь системы – разработчик заданий.
Задания бывают разных видов:
- граф – наименьшая исполняемая единица рабочего процесса. Графы состоят из шагов, которые обрабатывают данные по определенным алгоритмам;
- подграф -это особый тип графа, который можно использовать как компонент другого графа. Подграф относится к компонентам типа "управление заданиями".
- поток заданий – позволяет объединить несколько графов в сложный процесс, обеспечивая координацию, выполнение заданий в зависимости от условий и обработку ошибок.
Граф
Граф – разновидность задания, наименьшая исполняемая единица рабочего процесса. Графы состоят из шагов, имеющих порты для ввода и вывода данных. Порты шагов в графе соединены линиями - ребрами графа, которые отражают передачу данных между портами шагов.
Шаги
Шаг – это компонент задания с определёнными значениями атрибутов, выполняющий конкретную функцию в рамках задания. Этот минимальный алгоритм обработки данных может исполнять функцию чтения, копирования, очистки, объединения данных и т.д.
Каждый Шаг должен обязательно иметь идентификатор id
для указания в разных частях здания и тип Шага type
для определения того, что должен сделать этот Шаг и какие параметры ему нужно подать на вход.
Строка с объявлением Шага для чтения данных из файла будет выглядеть следующим образом:
<Node id="reader" guiX="50" guiY="100" guiName="FlatFileReader" fileURL="${READ_DIR}" type="FlatFileReader"/>
Помимо обязательных идентификатора id
и типа type
, для этого Шага задан путь к файлу fileURL
(обязательный атрибут для Шагов чтения и записи) и указаны координаты верхней левой точки guiX
и guiY
, а также имя Шага guiName
для отображения в Инспекторе задач и рабочей области Дизайнера.
Отображение Шага FlatFileReader в рабочей области Дизайнера
Типы Шагов
Все компоненты делятся на несколько групп:
- Для чтения - Шаги для чтения обычно являются начальными компонентами графов. Они итают данные из входных файлов,подключенных входных портов либо генерируют данные по заданному шаблону.
- Для записи - Шаги для записи обычно ставятся в конце графа. Они могут записать даннные в файлы или базу данных, передать на выходной порт либо прервать передачу даных.
- Некоторые Шаги используются для трансформации данных. Еще они называются преобразователями, так как могут изменять данные в соответствии с заложенным в них алгоритмом. Преобразователи получают данные и могут копировать их на все выходные порты, удалять дубликаты, фильтровать, сортироватьт, отправлять обработанные данные на один или нескольо выходных портов.
- Объединители получают данные из двух или более источников, объединяют их в соответствии с указанным ключом и отправляют объединенные данные через выходные порты.
- Шаги для управления ходом заданий.
- Шаги, которые не входят в вышеописанные группы объединены в группу Другие.
Порты
Порт Шага - это точка входа или выхода данных из Шага. У каждого Шага есть хотя бы один порт - входной или выходной. Портов одного вида также может быть несколько. К примеру, у Copy может быть несколько выходных портов.
Метаданные
Некоторые компоненты требуют, чтобы метаданные в их портах имели определенную структуру. Для некоторых других компонентов, таких как операции с файлами, структура метаданных не требуется, но рекомендуется. В обоих случаях можно использовать заранее определенные шаблоны метаданных.
Чтобы создать новые метаданные с рекомендуемой структурой, щелкните правой кнопкой мыши по ребру, подключённому к порту, для которого определён шаблон, выберите «Новые метаданные из шаблона» в контекстном меню, а затем выберите шаблон в подменю.
Общие свойства шагов
Каждый шаг можно настроить с помощью Редактора компонента.
Среди свойств, которые можно установить в этом диалоговом окне, более подробно описаны следующие:
-
Каждый шаг имеет метку с его названием (Именование шагов).
-
Каждый граф можно обрабатывать поэтапно (Фазы).
Именование шагов
Каждый шаг имеет метку, которую можно изменить. Поскольку в графе может быть несколько шагов одного вида, вы можете назвать их предпочитаемым образом для удобства использования.
Вы можете переименовать любой шаг на вкладке Source, исправив атрибут guiName, и затем использовать обращение к шагу по этому атрибуту.
Фазы
Каждый граф можно разделить на несколько фаз, задав номера фаз на щагах. Вы можете увидеть этот номер фазы в верхнем левом углу каждого шага.
Смысл фазы заключается в том, что каждый граф выполняется параллельно в пределах одной фазы; т. е. каждый шаг и каждое ребро, имеющие одинаковый номер фазы, работают одновременно. Если процесс останавливается на какой-то фазе, более высокие фазы не начинаются. Только после того, как все процессы в рамках одной фазы успешно завершатся, начнется следующая фаза.
Вот почему фазы должны оставаться неизменными во время работы графа. Номер следующей фазы графа всегда больше, чем номер предыдущей.
Таким образом, когда вы увеличиваете номер фазы на любом из шагов графа, принадлежащей одной фазе, все шаги с тем же номером фазы (но не шаги с более высокими номерами фаз), лежащие дальше по графу, автоматически меняют свою фазу на это новое значение.
Вы можете выбрать несколько шагов и установить их номера фаз. Либо вы устанавливаете одинаковый номер фазы для всех выбранных шагов, либо можете выбрать шаг, на который номер фазы каждого отдельного шага должен увеличиваться или уменьшаться.
Для этого используйте следующий мастер настройки фазы:
Установка фаз для шагов
Заметка: При назначении фаз внутри графа, можно указывать номер фазы с приращением больше, чем на 1 (например, 5, 10, 15…). Таким образом, позже вы сможете добавлять новые фазы между уже существующими фазами без необходимости корректировки номерации всех фаз.
Рёбра
Если в задании есть хотя бы два шага, их можно соединить ребром. Данные будут передаваться от одного шага к другому через это ребро. По этой причине каждому ребру должны быть назначены некоторые метаданные, описывающие структуру записей данных, проходящих через ребро.
При создании ребра в графе, его концы всегда связывают исходящий порт одного шага с входящим портом другого шага. Количество портов одних шагов строго задано, а другие имеют неограниченное количество портов. Если количество портов не ограничено, новый порт создается путем подключения нового ребра.
При описании ребра используется тег <Edge>
и указываются обязательные атрибуты ребра, такие как имя ребра, начальный и конечный порты соединяемых шагов, при необходимости – имя метаданных:
<Edge id="edge1" fromNode="reader:0" toNode="writer:0" metadata="ObjectWithPos"/>
Соединение компонентов ребром
Метаданные
Метаданные — это данные, описывающие структуру данных. Каждое ребро графа несет некоторые данные. Эти данные должны быть описаны с использованием метаданных. Метаданные описывают как запись в целом, так и все ее поля.
Записи могут быть разных типов, каждое поле может иметь разный тип данных.
Метаданные могут быть как внутренними, так и внешними (общими). Метаданные указываются в файле задания или в файле параметров. Метаданные также могут быть созданы динамически на основе SQL-запроса или считываться из удаленных источников.
Подробную информацию о распространении метаданных смотрите в разделе "Автоматически распространяемые метаданные".
Редактор метаданных описан в разделе "Редактор метаданных".
Подробную информацию об изменении или определении разделителей в записях с разделителями или смешанных типах читайте в разделе "Определение и изменение разделителей".
Метаданные также можно редактировать в исходном коде. Смотрите раздел "Редактирование метаданных в исходном коде".
Метаданные могут служить источником для создания таблицы базы данных. Смотрите раздел "Создание таблицы базы данных из метаданных".
Поля и записи
Запись можно рассматривать как строку файла данных или как строку таблицы базы данных. Запись состоит из полей. Каждое поле может иметь разный тип данных.
В записи каждые два соседних поля отделяются друг от друга разделителем полей, и вся запись также завершается разделителем записи. По умолчанию в системе OneBridge разделителем полей является запятая, а разделителем записей – символ переноса строки, то есть стандартная запись в файл будет произведена в таком виде:
<поле>,<поле>
<поле>,<поле>
Типы данных в метаданных
Каждое поле метаданных может иметь разный тип. В системе определены следующие типы данных:
Тип | Описание | Пример |
---|---|---|
Bool | Логическое значение | true |
String | Строка хранит набор символов в кодировке UTF-8 | «это пример значения поля с типом string» |
Int | Целые числа | 42 |
Float | Дробные числа (числа с плавающей точкой) | 345.65 |
Date | Дата | 01.01.2025 |
Time | Время | 17:43:12 |
DateTime | Дата и время | 01.01.2025 17:43:12 |
Редактирование метаданных в исходном коде
Вы также можете редактировать метаданные в исходном коде.
Определение внутренних метаданных можно отображать и редактировать на вкладке «Источник» в панели Рабочая область.
Поля и записи
Запись можно рассматривать как строку файла данных или как строку таблицы базы данных. Запись состоит из полей. Каждое поле может иметь разный тип данных. Подробнее описано в главе Типы данных в метаданных.
Каждая запись относится к одному из следующих трех типов:
-
C разделителями. В записи с разделителями каждые два соседних поля отделяются друг от друга разделителем, и вся запись также заканчивается разделителем записи.
-
Фиксированной длины. В записи фиксированной длины каждое поле имеет определенную длину (размер). Длина измеряется в количестве символов.
-
Смешанный. В смешанной записи каждое поле может быть отделено друг от друга разделителем, а также иметь определенную длину (размер). Размер рассчитывается в количестве символов. Этот тип записи представляет собой смесь обоих типов, описанных выше. Каждое отдельное поле может иметь разные свойства. Некоторые поля могут иметь только разделитель, другие могут иметь указанный размер, остальные могут иметь как разделитель, так и размер.
Формат даты и времени
Форматирование описывает, как значения даты/времени должны считываться и записываться из/в строковое представление. На форматирование и синтаксический анализ (парсинг) дат также влияют локаль и часовой пояс.
В OneBridge используется указание префикса для форматирования данных. Доступны два встроенных механизма обработки данных: стандартный для языка Rust модуль (описан в таблицах ниже) и международный формат ISO 8601 (https://en.wikipedia.org/wiki/ISO_8601).
Следующие спецификаторы доступны как для форматирования, так и для синтаксического анализа.
Спецификатор | Пример | Описание |
---|---|---|
%Y | 2001 |
Полный год пролептического1 григорианского календаря, дополненный нулями до 4 цифр. Поддерживаются годы от -262144 до 262143. Годы до 1 г. до н.э. или после 9999 г. н.э. требуют начального знака (+/-). |
%C | 20 |
Год, разделенный на 100, дополненный нулями до 2 цифр2. |
%y | 01 |
Год, по модулю 100, дополненный нулями до 2 цифр2. |
%m | 07 | Номер месяца (01–12), дополненный нулями до 2 цифр. |
%b | Jul | Сокращенное название месяца. Всегда 3 буквы. |
%B | July | Полное название месяца. Также принимает соответствующую аббревиатуру при парсинге данных. |
%h | Jul | То же, что %b |
%d | 08 | Номер дня (01–31), дополненный нулями до 2 цифр. |
%e | 8 | То же, что %d, но дополнено пробелами. |
%a | Sun | Сокращенное название дня недели. Всегда 3 буквы. |
%A | Sunday | Полное название дня недели. Также принимает соответствующую аббревиатуру при парсинге. |
%w | 0 | Числовое обозначение дня недели. Sunday = 0, Monday = 1, …, Saturday = 6. |
%u | 7 | Числовое обозначение дня недели. Monday = 1, Tuesday = 2, …, Sunday = 7. (ISO 8601) |
%U | 28 |
Номер недели, начинающийся с воскресенья (00–53), дополненный нулями до 2 цифр3. |
%W | 27 | То же, что и %U, но неделя 1 начинается с первого понедельника этого года. |
%G | 2001 |
То же, что %Y, но использует номер года в недельном календаре ISO 86014. |
%g | 01 |
То же, что %y, но использует номер года в недельном календаре ISO 86014. |
%V | 27 |
То же, что и %U, но использует номер недели в недельном календаре ISO 8601 (01–53)4. |
%j | 256 | День года (001–366), дополненный нулями до 3 цифр. |
%D | 07/08/01 | Формат `месяц-день-год`. То же, что %m/%d/%y. |
%x | 07/08/01 | Представление даты в локали (например, 31.12.99). |
%F | 2001-07-08 | Формат `год-месяц-день` (ISO 8601). То же, что %Y-%m-%d. |
%v | 8-Jul-2001 | Формат `день-месяц-год`. То же, что %e-%b-%Y. |
Пролептический григорианский календарь (предваряющий григорианский календарь, от др.-греч. πρόληψις «предвосхищение») — календарь, расширяющий григорианский календарь на период до его введения 15 октября 1582 года.
%C
, %y
разделяют года по группам, поэтому для 100 г. до н.э. (номер года -99) будут напечатаны -1 и 99 соответственно.
%U
: Неделя 1 начинается с первого воскресенья этого года. Неделя 0 может быть указана за несколько дней до первого воскресенья.
%G
, %g
, %V
: неделя 1 — это первая неделя, в которой в этом году содержится не менее 4 дней. Недели 0 не существует, поэтому ее следует использовать с %G
или %g
.
Спецификатор | Пример | Описание |
---|---|---|
%H | 00 | Количество часов (00–23), дополненное нулями до 2 цифр. |
%k | 0 | То же, что %H, но дополнено пробелами. То же, что %_H. |
%I | 12 | Количество часов в 12-часовом формате (01–12), дополненное нулями до 2 цифр. |
%l | 12 | То же, что %I, но дополнено пробелами. То же, что %_I. |
%P | am | am или pm в 12-часовом формате. |
%p | AM | AM или PM в 12-часовом формате. |
%M | 34 | Количество минут (00–59), дополненное нулями до 2 цифр. |
%S | 60 |
Количество секунд (00–60), дополненное нулями до двух цифр5. |
%f |
26490000 | Количество наносекунд с последней целой секунды6. |
%.f |
.026490 | Доля секунды. Съедает ведущую точку6. |
%.3f | .026 | Доля секунды с фиксированной длиной 3. |
%.6f | .026490 | Доля секунды с фиксированной длиной 6. |
%.9f | .026490000 | Доля секунды с фиксированной длиной 9. |
%3f | 026 | Доля секунды, как %.3f, но без начальной точки. |
%6f | 026490 | Доля секунды, как %.6f, но без начальной точки. |
%9f | 026490000 | Доля секунды, как %.9f, но без начальной точки. |
%R | 00:34 | Формат `час-минута`. То же, что %H:%M. |
%T | 00:34:60 | Формат `час-минута-секунда`. То же, что %H:%M:%S. |
%X | 00:34:60 | Представление местного времени (например, 23:13:48). |
%r | 12:34:60 AM | 12-часовое местное время. (например, 23:11:04). Возвращает %X, если языковой стандарт не поддерживает 12-часовой формат времени. |
%S
: учитываются дополнительные секунды, поэтому возможно 60.
%f, %.f
:
%f
и %.f
— это совершенно разные спецификаторы форматирования.
%f
подсчитывает количество наносекунд, прошедших с последней целой секунды, а %.f
— доли секунды. Пример: 7 мкс форматируется как 7000 с %f
и форматируется как .000007 с %.f
.
Спецификатор | Пример | Описание |
---|---|---|
%Z | ACST |
Название местного часового пояса. Пропускает все символы без пробелов во время парсинга. Идентичен %:z при форматировании7. |
%z | +0930 | Смещение местного времени по отношению к UTC (при этом UTC равно +0000). |
%:z | +09:30 | То же, что %z, но с двоеточием. |
%::z | +09:30:00 | Смещение от местного времени до UTC в секундах. |
%:::z | +09 | Смещение от местного времени до UTC без учета минут. |
%#z | +09 | Только при парсинге: то же, что и %z, но позволяет использовать или не использовать минуты. |
%Z
: поскольку встроенный модуль не знает часовых поясов за пределами их смещений, этот спецификатор печатает смещение только при использовании для форматирования. Аббревиатура часового пояса НЕ будет напечатана.
Смещение не будет заполнено из проанализированных данных и не будет проверено. Часовой пояс полностью игнорируется.
Невозможно надежно преобразовать аббревиатуру в смещение, например, CDT
может означать либо центральное летнее время (Северная Америка), либо летнее время Китая.
Спецификатор | Пример | Описание |
---|---|---|
%c | Sun Jul 8 00:34:60 2001 | Дата и время региона (например, четверг, 3 марта, 23:05:25 2005 г.). |
%+ | 2001-07-08T00:34:60.026490+09:30 |
Формат даты и времени ISO 8601/RFC 33398. |
%s | 994518299 |
Временная метка UNIX, количество секунд, прошедших с 01.01.1970 00:00 UTC9. |
%+
: То же, что %Y-%m-%dT%H:%M:%S%.f%:z
, т. е. 0, 3, 6 или 9 дробных цифр для секунд после двоеточия в смещении часового пояса.
Этот формат также поддерживает использование Z
или UTC
вместо %:z
. Они эквивалентны +00:00
.
Обратите внимание, что все T
, Z
и UTC
анализируются без учета регистра.
Типичные реализации функции для преобразования даты и времени имеют разные (и зависящие от локали) форматы этого спецификатора. Лучше избегать этого спецификатора, если вы хотите точно контролировать результат.
%s
: значение может быть отрицательным. Учитываются только невисокосные секунды.
Спецификатор | Пример | Описание |
---|---|---|
%t | Знак табуляции (\t). | |
%n | Знак перевода строки (\n). | |
%% | Знак процента. |
Типы метаданных
- Внутренние метаданные
- Внешние (общие) метаданные
- Метаданные SQL-запроса
- Чтение метаданных из специальных источников
Внутренние метаданные
Внутренние метаданные являются частью графа, они содержатся в графе и их можно увидеть на вкладке "Источник".
Внутренние метаданные являются частью графа, они содержатся в файле задания и их можно увидеть на вкладке Источник.
Создание внутренних метаданных
Внутренние метаданные могут быть созданы следующими способами:
- Панель Структура
На панели «Структура» вы можете выбрать элемент «Метаданные» парвой кнопкой мыши и выбрать Новые метаданные в контекстном меню.
Редактор метаданных
Внешние метаданные
Внешние (общие) метаданные располагаются в отдельном файле и могут использоваться несколькими графами.
Раздел в разработке
Метаданные SQL-запроса
Раздел в разработке
Чтение метаданных из специальных источников
Раздел в разработке
Автоматическая передача метаданных
В данный момент реализовано только назначение метаданных вручную каждому ребру.
Для назначения метаданных ребру откройте редактор ребра двойным щелчком по имени ребра. Выберите имя метаданных в выпадающем списке, сохраните изменения, нажав Save.
Создание метаданных
Создание метаданных возможно либо через указание в файле задания, либо в редакторе метаданных.
Указание метаданных в источнике
Указание в источнике производится вручную в заголовке файла, в теге Metadata
. Создайте внутри тег Record
, задайте значение параметра name
и укажите значения атрибутов для Field
.
Указание метаданных в источнике
Создание метаданных в редакторе
Для создания метаданных в редакторе, откройте его из панели Outline из конекстного меню Metadata -> New metadata
. Задайте имя записи, задайте имена полей метаданных, резделители полей и строк, укажите тип данных для каждого поля. Сохраните изменения кнопкой Save.
Создание метаданных в редакторе
Подробнее редактор метаданных описан в следующей главе - Редактор метаданных.
Редактор метаданных
Редактор метаданных — это инструмент для редактирования метаданных. Его можно использовать для создания новых метаданных или для просмотра, изменения существующих метаданных.
Открытие Редактора метаданных
Если вы хотите отредактировать какие-либо метаданные (как внутренние, так и внешние), вы можете сделать это, развернув категорию Метаданные на панели Структура задания:
Дважды щелкните элемент метаданных, чтобы открыть редактор.
Устройство редактора метаданных
Редактор метаданных состоит из:
- Панели "Запись", показывающей обзор информации о записи в целом, а также список ее полей с разделителями, размерами или и тем, и другим. Панель Запись находится слева.
- Панели "Сведения", показывающей сведения об элементе, выбранном на панели записи. Панель Сведения находится справа.
Редактор метаданных
Запись
Панель Запись отображает данные о записи и всех ее полях.
Чтобы добавить новую запись - нажмите на + в левой части редактора. Будет добавлена пустая строка, в которой нужно заполнить имя поля, тип данных и разделитель и/или размер поля.
Обзор записи
В первой строке представлен обзор всей записи.
Он состоит из следующих столбцов:
- Имя записи отображается во втором столбце и может быть изменено.
- Тип записи отображается в третьем столбце и может быть определён как с разделителями, фиксированный или смешанный.
- Разделитель по умолчанию определяет символ или символы, отделяющие каждое поле от следующего (кроме последнего). Он доступен в типах записей с разделителями и в смешанных записях.
- Размер — это размер всей записи. Он доступен для типа записи с фиксированной длиной.
Список полей записей
Остальные строки, кроме последней, представляют список полей записи:
- В первом столбце отображается номер поля. Поля нумеруются начиная с 1.
- Во втором столбце отображается имя поля. Там это можно изменить. Мы предлагаем использовать в именах полей только следующие символы: [a-zA-Z0-9_].
- В третьем столбце отображается тип данных поля. Можно выбрать один из типов данных для метаданных. Дополнительные сведения смотрите в разделе Типы данных в метаданных.
- В других столбцах отображается разделитель (для "delimited" записей), размер поля (для "fixed" записей) или разделитель и размер поля, если тип записи "mixed". Если разделитель отображается серым, это разделитель по умолчанию, если он черный, это разделитель не по умолчанию.
Подробную информацию о разделителях смотрите в разделе Определение и изменение разделителей.
Сведения
Содержимое панели Сведения изменяется в соответствии со строкой, выбранной на панели Запись.
Разделители
Разделители определяют правила, по которым будут прочитаны данные из файла шагом FlatFileReader и по которым будет произведена запись в файл в результате работы шага FlatFileWriter.
В системе существует два типа разделителей:
- разделители полей fieldDelimiter;
- разделители записей recordDelimiter.
Разделители назначаются при определении метаданных в теге <Record>
и могут быть переопределены в атрибутах шагов.
По умолчанию, разделителем записей является символ перевода строки «\n», а разделителем полей – запятая «,».
Для чтения файла такого вида: qwe|rty|uio;asd|fgh|jkl;zxc|vbn|mko в качестве разделителя полей следует задать вертикальную линию, а в качестве разделителя записей – точку с запятой: <Record fieldDelimiter="|" recordDelimiter=";">
.
Если назначить метаданные для записи, установив разделитель полей <Record fieldDelimiter="_">
, а разделитель записей не задать, то выходной файл будет выглядеть таким образом:
qwe_rty_uio
asd_fgh_jkl
zxc_vbn_mko
RecordDelimiter при этом будет по умолчанию равен символу переноса строки.
Во FlatFileReader и FlatFileWriter можно переопределять fieldDelimiter
и recordDelimiter
в атрибутах шага. Тогда, даже если в метаданных в элементе <Record>
указаны одни разделители – в шагах для чтения или записи могут быть указаны другие разделители, переопределённые значения будут приоритетными при выполнении алгоритма.
Непечатаемые разделители
Если нужно использовать любой непечатаемый разделитель, вы можете записать его как выражение. Например, вы можете ввести следующую последовательность символов в качестве разделителя записей в метаданных: RecordDelimeter=\u0014
.
Такие выражения состоят из кода Unicode \uxxxx без кавычек. Обратите внимание, что каждый символ обратной косой черты «\», содержащийся во входных данных, на самом деле будет дублироваться при просмотре. Таким образом, вы увидите «\» в своих метаданных.
Соединения с базами данных
Соединение с базой данных позволяет получить доступ к источникам данных в виде различных баз данных. При подключении к базе данных вы можете считывать данные из таблиц базы данных, выполнять SQL-запросы или вставлять записи в таблицы базы данных. Эти действия выполняются шагами, использующими соединение с базой данных. Существует два способа доступа к базе данных:
- использование клиента на компьютере, который подключается к базе данных, расположенной на каком-либо сервере, с помощью какой-либо клиентской утилиты. Этот подход используется в массовых загрузчиках;
- использование драйвера JDBC. Для каждого подключения к базе данных требуется драйвер JDBC. Драйверы JDBC для часто используемых баз данных включены в OneBridge.
Для подключения к базе нужно указать тип соединения и параметры подключения. Для передачи паролей стоит использовать защищенные параметры.
<Connection id="CONN\_A" dbURL="${PG\_CONN}://${DB\_USR}:${USR\_PWD}@${HOST}:${PORT}/${DB\_NAME}"/>
Значения параметров можно указать следующим образом в файле задания либо в файле параметров:
<GraphParameters>
<!--тип соединения с базой данных-->
<GraphParameter name="PG\_CONN" value="postgresql"/>
<!--имя пользователя в базе-->
<GraphParameter name="DB\_USR" value="user1"/>
<!--пароль пользователя в базе-->
<GraphParameter name="USR\_PWD" value="password"/>
<!--хост-->
<GraphParameter name="HOST" value="10.1.1.4"/>
<!--порт базы данных-->
<GraphParameter name="PORT" value="5432"/>
<!--имя базы данных-->
<GraphParameter name="DB\_NAME" value="MyDB"/>
</GraphParameters>
Возможные типы соединения с базами данных:
- "postgres" или "postgresql" – PostgreSQL;
- "oracle" – Oracle;
- "mysql" – MySQL.
Подключение других баз возможно по запросу пользователя. Можно подключить базы данных с драйвером, совместимым с JDBC.
Параметры
Параметры аналогичны константам, которые можно определить один раз и использовать в различных местах конфигурации задания.
Значения параметров графа всегда конвертируются в строку. Каждое значение, номер, путь, имя файла, атрибут и т. д. можно настроить или изменить с помощью параметров.
Основными преимуществами параметров являются возможность использовать шаблон для указания параметра и изменять его значение только в одном месте. Для подстановки значения параметра используйте шаблон "${PARAMETER_NAME}
. Значение параметра при этом указать в атрибуте value элемента <GraphParameter>
.
<Graph>
<Global>
...
<GraphParameter name="SQL_QUERY" value="SELECT * FROM customers"/>
...
</Global>
<Phase number="0">
...
<Node id="db_reader" guiX="50" guiY="100" guiName="DbReader" dbConnection="CONN_A" type="DbReader">
<Attr name="sqlQuery">
<![CDATA[${SQL_QUERY}]]>
</Attr>
</Node>
</Phase>
<Graph>
Внутренние и внешние
Параметры могут быть
- внутренними – указываются непосредственно в файле задания;
- внешними – указываются в отдельном файле и подключаются с помощью элемента
<GraphParameterFile>
.
Внутренние параметры хранятся в графе и, таким образом, присутствуют в источнике. Внутренние параметры полезны для параметризации в рамках одного графа.
Внешние (общие) параметры хранятся вне графика в отдельном файле с расширением *.prm в папке проекта. Внешние параметры подходят для параметров, используемых несколькими графами.
Чтобы подключить в файл задания внешние параметры, укажите путь к файлу в элементе <GraphParameterFile>
следующим образом:
<GraphParameterFile fileURL="params/db_reader.prm"/>
А в файле db_reader.prm
пропишите необходимые параметры в элементе <GraphParameters>
:
<?xml version="1.0" encoding="UTF-8"?>
<GraphParameters>
<GraphParameter name="SQL_QUERY" value="SELECT * FROM customers"/>
</GraphParameters>
...
Защищенные параметры
Защищенные (безопасные) параметры позволяют хранить конфиденциальную информацию (например, пароль базы данных) в зашифрованном виде. Обычные параметры графа сохраняются либо в файлах .grf
(внутренние параметры), либо в файлах .prm
(внешние параметры). Это означает, что значения параметров вашего графа хранятся в обычных xml-файлах. Такое поведение абсолютно корректно для большинства вариантов использования параметров графа. Но иногда параметр графа может представлять конфиденциальную информацию, которую не следует сохранять в текстовом файле в файловой системе, например, пароль к базе данных. Для этой цели OneBridge предоставляет функцию безопасных параметров.
Для использования безопасных параметров нужно в элементе scopeNonce
, чтобы получить шифр для заполнения атрибута value
. В элементе secure
значение «true» и задать шифрованное значение атрибута value
. Пример объявления зашифрованных параметров и их подстановки в строку для соединения с базой данных:
<GraphParameters scopeNonce="cUXO8xbK78a3">
<GraphParameter name="[DB] USER" secure="true" value="QNTqyPPeyaEoxhJppURKNLFf"/>
<GraphParameter name="[DB]: PWD" secure="true" value="SKD+C6Kfd+5pl8OR+4unI1lJ"/>
<GraphParameter name="[DB]addr" secure="true" value="SN+xn4T1yfX7lL5XwRhecFLz6"/>
<GraphParameter name="[DB] db name" secure="true" value="CukaVyASrVMi+RU580e4hZ"/>
</GraphParameters>
...
<GraphParameters>
<GraphParameter name="[DB]full" value="${[DB] USER}:${[DB]: PWD}@${[DB]addr}/${[DB] db name}"/>
</GraphParameters>
Конфиденциальная информация в параметрах безопасности сохраняется в зашифрованном виде в файловой системе. Расшифровка защищенного параметра выполняется автоматически во время выполнения задания.
Преобразования
Преобразование — это фрагмент кода, который определяет, как входные данные преобразуются в выходные данные при прохождении через шаг. Преобразование определяется в атрибуте "transform" или "normalize".
Определение преобразования задается вручную в файле задания с помощью языка JavaScript.
Шаги, допускающие преобразования
Преобразователи можно использовать в таких шагах как HashJoin, MergeJoin, Map, Rollup. В этих шагах есть возможность задать алгоритм преобразования на своё усмотрение, в то время как для других шагов алгоритмы обработки данных четко определены.
Возвращаемые значения преобразователей
Ниже в таблице представлены все возможные варианты возвращаемых преобразователями значений.
Значение | Описание | Пример использования |
---|---|---|
ALL | В этом случае запись отправляется на все выходные порты. | return out_port![ALL] |
SKIP | Сообщает что мы пропускаем данный выход (пропускаем цикл преобразования) |
|
Любое целое число больше или равное 0 | Запись отправляется на выходной порт, номер которого равен этому возвращаемому значению. |
|
Подграфы
Подграф — это определяемый пользователем компонент для многократного использования. Подграф представляет собой обычный граф и может содержать любые элементы графа (компоненты, связи, параметры). Подграфы могут быть вложенными, т.е. в подграфе могут быть использованы другие подграфы.
Определение подграфа хранится в отдельном файле с расширением .sgrf
.
Потоки заданий
Поток заданий (рабочий процесс) позволяет объединять графы с другими действиями в сложные процессы, обеспечивая координацию, условное выполнение заданий и обработку ошибок. Действия, которые могут участвовать в рабочем процессе, включают:
- Графы
- Собственные приложения и скрипты ОС
- Вызовы веб-служб (REST/SOAP)
- Операции с локальными и удаленными файлами
Алгоритмы обработки данных
В этом разделе описаны запрограммированные шаги, которые пользователь может использовать для составления своего файла задания для обработки данных.
Каждый шаг представляет собой готовый алгоритм обработки данных, например, FileSort – это шаг для сортировки данных.
Данные поступают в шаг через входной порт, обрабатываются согласно алгоритму и выводятся через выходной порт. Входных и выходных портов у шага может быть разное количество. Например, у Сoncat может быть несколько входов, а у Trash не бывает выходных портов.
Шагов в задании может быть сколько угодно, но обязательно должен присутствовать шаг для чтения данных в начале алгоритма и для записи данных - в конце алгоритма. Между ними могут быть добавлены шаги для преобразования, объединения данных и другие.
Шаги в задании соединяются ребрами для передачи информации. Каждому ребру необходимо назначать метаданные для описания данных, передаваемых между шагами.
Подробное описание создания файла задания описано в главе Как создать задание.
Каждое поле метаданных может иметь разный тип. Для метаданных определены следующие типы данных:
Тип данных | Описание | Пример |
---|---|---|
Bool | Логическое значение | true |
String | Строка хранит набор символов в кодировке UTF-8 | «это пример значения поля с типом string» |
Int | Целые числа | 42 |
Float | Дробные числа (числа с плавающей точкой) | 345.65 |
Date | Дата | 01.01.2025 |
Time | Время | 17:43:12 |
DateTime | Дата и время | 01.01.2025 17:43:12 |
Для чтения данных
Шаги для чтения (считыватели) могут считывать данные из входных файлов, получать их из подключенного дополнительного входного порта, читать из базы данных. Шаг DATA_GENERATOR занимается генерацией данных и тоже относится к этой группе, поскольку является начальным шагом.
Различают следующие шаги для чтения:
FLAT_FILE_READER - читает данные из плоского файла
DATABASE_READER - читает данные из базы данных
DATA_GENERATOR - генерирует данные по шаблону
SPREADSHEET_READER - читает данные из файла в форматах xlsx, xls
FLAT_FILE_READER
FLAT_FILE_READER считывает данные из плоских файлов в формате CSV
и TXT
с разделителями, фиксированной длины или смешанных текстовых файлов.
Порты FLAT_FILE_READER:
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Output | 0 | да | Для корректных записей | Любые |
Output | 1 (в разработке) | нет | Для не корректных записей | Структура метаданных ошибок приведена ниже |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
fileURL | да | Путь к источнику данных (плоский файл) для чтения. | ${READ_DIR}/in.txt |
charset | нет | Кодировка файла, читаемого с помощью этого шага. | encoding="windows-1251" |
dataPolicy | нет | Определяет обработку неправильно отформатированных или неверных данных. Может принимать значения "strict", "lenient" | dataPolicy="strict" по умолчанию |
trim | нет | Указывает, следует ли удалять начальные и конечные пробелы из строк в момент прохождения данных через FLAT_FILE_READER. | trim="true" по умолчанию |
quotedStrings1 | нет | Поля, содержащие специальные символы (запятая, новая строка или двойные кавычки), должны быть заключены в кавычки. В качестве символа кавычки принимаются только одинарные/двойные кавычки. Если установлено значение true, специальные символы не рассматриваются как разделители и удаляются при чтении компонентом. Пример: Чтобы прочитать входные данные "25"|"Джон", установите для параметра quotedStrings значение true и установите для символа кавычки значение quoteChar="" ". В результате будут получены два поля: 25|Джон. | quotedStrings="true" по умолчанию |
quoteChar1 | нет | Символы, в которые будет заключено значение поля при quotedStrings="true". | quoteChar="" " |
fieldDelimiter | нет | Разделитель полей | fieldDelimiter="," |
recordDelimiter | нет | Разделитель записей | recordDelimiter="/n" |
По умолчанию значение этого атрибута наследуется из метаданных порта ?вывода? 0.
Пример. Чтение файла.
Например, есть файл customers.csv. Каждая запись в нем содержит три поля: «дата», «фамилия» и «имя», разделенные символом «|». Нужно считать этот файл для дальнейшей обработки в системе.
Данные в файле:
01.02.2011|Горилов|Алексей
29.12.2013|Нечаев|Илья
25.11.2016|Васькин|Николай
23.10.2019|Иванов|Григорий
19.09.2022|Горбунов|Евгений
Решение:
В файле задания нужно описать выходные метаданные шага. Опишите поля «date», «last_name» и «first_name». Установите для них типы данных «date», «string» и «string» соответственно.
<Metadata id="ObjectWithPos">
<Record fieldDelimiter="|" recordDelimiter="\n">
<Field name="date" type="date" format="dd.mm.YY"/>
<Field name="last_name" type="string"/>
<Field name="first_name" type="string"/>
</Record>
</Metadata>
С помощью атрибута format="yyyy-MM-dd HH:mm:ss.SSS" можно указать используемый формат даты.
Файл будет считан системой во внутреннюю память:
date | last_name | first_name |
---|---|---|
01.02.2011 | Гончаров | Алексей |
29.12.2013 | Нечаев | Илья |
25.11.2016 | Васькин | Николай |
23.10.2019 | Серов | Григорий |
19.09.2022 | Глинка | Евгений |
Обрезание данных
- Входные строки обрабатываются в соответствии с типом данных поля следующим образом:
- Пробелы удаляются как из начала, так и из конца поля для типов данных
boolean
,date
,integer
. - Входная строка остаётся полем, включающим начальные и конечные пробелы в случае типа данных
string
.
- Если для атрибута trim установлено значение
true
, все начальные и конечные пробельные символы удаляются. Поле, состоящее только из пробелов, преобразуется в нулевое значение (строка нулевой длины). Значениеfalse
подразумевает сохранение всех начальных и конечных символов пробелов. Входная строка может содержать пробелы только если представляет строковый тип данных.
DATABASE_READER
DATABASE_READER считывает данные из базы данных. Поддерживает подключение к СУБД PostgreSQL, Oracle, MySQL. Подробнее про подключение к базам данных можно прочитать в разделе Соединения с базами данных.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Output | 0 | да | Для корректных записей | Любые, но одинаковые на всех подключённых портах |
1-n | нет |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
dbConnection | да | Идентификатор соединения с базой данных, которое будет использоваться для доступа к базе данных |
|
sqlQuery | да | SQL-запрос к базе, определенный в графе. |
|
Пример. Чтение записей из базы данных.
С помощью DATABASE_READER прочитайте данные из базы данных OneBridge
из таблицы Customers
.
Решение:
Для описания параметров соединения можно указать строку подключения в элементе Connection в атрибуте dbURL
.
Описание параметров соединения в элементе Connection:
<Global>
...
<Connection id="CONN_A" dbURL="${CONN_TYPE}://${DB_USER}:${DB_PASSWORD}@${DB_URL}:${DB_01_PORT}/${DB_DATABASE}"/>
<GraphParameters>
<GraphParameter name="CONN_TYPE" value="mysql"/>
<GraphParameter name="DB_USER" value="user007"/>
<GraphParameter name="DB_URL" value="234.1.1.0"/>
<GraphParameter name="DB_PORT" value="5432"/>
<GraphParameter name="DB_DATABASE" value="OneBridge"/>
</GraphParameters>
<!-- <GraphParameters scopeNonce="d3WVmJ8eCaIC">
<GraphParameter name="DB_PASSWORD" secure="true" value="Ir2m0qTbu12WW7RJILIvlv499fpbggCl02"/>
</GraphParameters>-->
...
</Global>
SQL-запрос для чтения данных из базы, записывается в атрибут Attr, определенный в элементе Node:
<Node id="db_reader" guiX="250" guiY="100" guiName="DATABASE_READER" dbConnection="CONN_A" type="DATABASE_READER">
<Attr name= “sqlQuery”>
<![CDATA[
SELECT date, last_name, first_name
FROM public."Customers";
]]>
</Attr>
</Node>
Этот запрос считает значения полей date
, last_name
, first_name
из таблицы Customers
из базы данных во внутреннюю память системы.
DATA_GENERATOR
DATA_GENERATOR генерирует данные по шаблону, вместо чтения данных из файла, базы данных или любого другого источника данных. Этот шаг может отправлять разные записи на разные выходные порты, используя возвращаемые значения функции generate
.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Output | 0 | да | Для сгенерированных записей | Любые |
1-n | нет |
Метаданные на выходных портах могут отличаться.
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
generate | да | Определение способа создания записей, записанное в графе на языке преобразований |
|
recordsNumber | нет | Количество записей, которые необходимо создать. Отрицательное значение позволяет создать количество записей, ограниченное кодом в generate. | recordsNumber="1" |
Шаблон записи
Шаблон записи — это строка, содержащая все постоянные поля сгенерированных записей в виде записей с разделителями (с разделителями, определенными в метаданных на выходном порте) или фиксированной длины (с размерами, определенными в метаданных на выходном порте).
Последовательность полей
Последовательность полей можно определить в диалоговом окне, которое открывается после нажатия атрибута Последовательности. Диалоговое окно «Последовательности» выглядит следующим образом:
Диалоговое окно «Последовательности»
Случайные поля
Этот атрибут определяет значения всех полей, которые генерируются случайным образом. Для каждого поля вы можете определить его диапазон (т.е. минимальное и максимальное значения). Эти значения относятся к соответствующим типам данных согласно метаданным. Вы можете назначить случайные поля в диалоговом окне «Редактировать ключ», которое открывается после нажатия атрибута «Случайные поля».
Диалоговое окно «Редактирование значения»
Слева находится панель «Поля», справа — «Случайные поля», а внизу — панель «Случайные диапазоны». На последней панели вы можете указать диапазоны выбранного случайного поля. Там вы можете ввести конкретные значения. Перемещать поля между панелями «Поля» и «Случайные поля» можно, как описано выше – нажатием кнопок «Стрелка влево» и «Стрелка вправо».
Пример. Создание записей.
Пример в разработке
SPREADSHEET_READER
SPREADSHEET_READER считывает данные с указанных листов файлов формата .xls
или .xlsx
. Позволяет указывать маппинг данных из таблицы и метаданных OneBridge.
Должен иметь один выходной порт для успешно считанных записей.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Output | 0 | да | Для успешно считанных записей | Любые |
1 | не | Для некорректных считанных записей |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
fileURL | да | Путь к файлу проекта, из которого читать данные. | fileURL="testFile.txt" |
sheet | нет | Название или номер листа в excel документе. Нумерация страниц начинается с 0. Можно перечислить в атрибуте sheet через запятую либо указать множество листов с помощью «*», чтобы все листы читались по порядку с использованием одного маппинга для всех. | sheet="Sheet1" |
mapping | нет | Сопоставляет ячейки электронной таблицы с полями OneBridge. |
|
dataPolicy (в разработке) | нет | Определяет обработку неправильно отформатированных или неверных данных. Может принимать значения "strict", "lenient" | dataPolicy="strict" по умолчанию |
password | нет | Пароль для расшифровки файла,если он запаролен. Актально только для формата xlsx. | password="faihfi4t9(&Yhflaieg)" |
Пример. Сопоставление полей по порядку.
Нужно прочитать из файла таблицы с количеством проданных некой компанией товаров за первый квартал года. Таблицы имеют одинаковую структуру: название товара, январь, февраль, март. Компания международная. Каждый партнер может использовать свой язык, поэтому вы не можете сопоставить поля по имени.
лист 1:
Product | January | February | March |
---|---|---|---|
T1 | 620 | 600 | 700 |
T2 | 150 | 150 | 100 |
лист 2:
Товар | Январь | Февраль | Март |
---|---|---|---|
T1 | 500 | 400 | 600 |
T2 | 300 | 400 | 500 |
Решение:
Укажите атрибуты: fileURL
, sheet
, mapping
.
Заполните маппинг следующим образом:
<Node fileURL="${DATAIN_DIR}/Book2.xlsx" sheet="*" type="SPREADSHEET_READER">
<attr name="mapping"><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mapping>
<globalAttributes>
<orientation>VERTICAL</orientation>
<step>1</step>
<writeHeader>true</writeHeader>
</globalAttributes>
<defaultSkip>1</defaultSkip>
<headerGroups>
<headerGroup skip="1">
<autoMappingType>ORDER</autoMappingType>
<headerRanges>
<headerRange begin="A1"/>
<headerRange begin="B1"/>
<headerRange begin="C1"/>
<headerRange begin="D1"/>
</headerRanges>
</headerGroup>
</headerGroups>
</mapping>
]]></attr>
</Node>
Для записи данных
Шаги для записи данных могут записывать данные в локальные выходные файлы, отправлять их через подключенный дополнительный выходной порт или вставлять в таблицу базы данных.
Шаги для записи — это компоненты графа, которые выполняются последними, поэтому они не имеют выходных портов.
Каждый шаг для записи должен иметь хотя бы один входной порт, через который данные поступают в этот компонент графа.
Шаги для записи могут либо добавлять данные в существующий файл или таблицу базы данных, либо заменять существующее содержимое новым. Для этой цели шаги для записи в файлы имеют атрибут Append
. По умолчанию для этого атрибута установлено значение false
. Это означает, что данные необходимо заменить, а не добавить к имеющимся.
Данные можно записать в один и тот же файл или базу данных несколько раз в течение работы графа с помощью нескольих шагов для записи. Для этого разместите шаги для записи в разных фазах графа.
FLAT_FILE_WRITER - запись в файл
DATABASE_WRITER - запись в базу данных
POSTGRESQL_DATA_WRITER - запись в базу данных Postgres с помощью утилиты
TRASH - прерывание потока данных
Общие свойства шагов для записи
Поддерживаемые форматы URL-адресов для записывающих шагов
Запись в локальные файлы
/path/filename.out
- записывает указанный файл на диск.
Просмотр записанных данных
После создания выходного файла вы можете просмотреть данные в нём в web-приложении на странице проектов на вкладке "Содержимое файла".
Добавление или перезапись
Если целевой файл существует, есть два варианта:
- существующий файл можно заменить;
- записи могут быть добавлены к существующему содержимому.
Добавление или замена настраивается с помощью атрибута Append
.
- Если для параметра
Append
установлено значение true, записи добавляются в файл. - Если для параметра
Append
установлено значение false, файл перезаписывается.Append=false
по умолчанию.
Функция Append
доступна в следующих шагах для записи: FLAT_FILE_WRITER, TRASH.
FLAT_FILE_WRITER
FLAT_FILE_WRITER записывает данные в плоские файлы.
Порты FLAT_FILE_WRITER:
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Для входящего потока записей | Любые |
Атрибуты FLAT_FILE_WRITER:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
fileURL | да | Путь к файлу, в который должен быть записан результирующий набор данных | ${WRITE_DIR}/out.txt |
charset | нет | Кодировка входного файла | charset="UTF-8" по умолчанию |
append | нет | Если записи печатаются в существующий непустой файл, они по умолчанию заменяют более старые (при append="false"). Если установлено значение "true", новые записи добавляются в конец существующего содержимого выходного файла(ов). | append="false" по умолчанию |
quotedStrings1 | нет | При quotedStrings="true" все поля заключаются в кавычки. | quotedStrings="true" |
quoteChar1 | нет | Символы, в которые будет заключено значение поля при quotedStrings="true". По умолчанию значение этого атрибута наследуется из метаданных порта ввода 0. | quoteChar="" " |
fieldDelimiter | нет | Разделитель полей | fieldDelimiter="," |
recordDelimiter | нет | Разделитель записей | recordDelimiter=">/~~/<" |
По умолчанию значение этого атрибута наследуется из метаданных порта ?ввода? 0.
Пример. Запись данных в файл.
Например, нужно записать обработанные системой данные в файл, используя разделитель «|».
Данные в системе:
date | last_name | first_name |
---|---|---|
01.02.2011 | Гончаров | Алексей |
29.12.2013 | Нечаев | Илья |
25.11.2016 | Васькин | Николай |
23.10.2019 | Серов | Григорий |
19.09.2022 | Глинка | Евгений |
Данные, записанные шагом FLAT_FILE_WRITER в файл:
01.02.2011|Горилов|Алексей
29.12.2013|Нечаев|Илья
25.11.2016|Васькин|Николай
23.10.2019|Иванов|Григорий
19.09.2022|Горбунов|Евгений
DATABASE_WRITER
DATABASE_WRITER предназначен для выгрузки обработанной информации в базу данных и совершения изменений в базе. Позволяет выполнять несколько SQL-запросов в рамках одной транзакции, для этого выражения в атрибуте sqlQuery разделяются точкой с запятой.
Поддерживает подключение к базам MySQL, Oracle, PostgreSQL.
Подробнее про подключение к базам данных можно прочитать в разделе Соединения с базами данных.
Порты DATABASE_WRITER:
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Записи для загрузки в базу данных | Любые |
Output | 0 | нет | Для отклонённых записей | Такие же, как на выходном порте |
Output | 1 | нет | Для возвращённых записей | Такие же, как на выходном порте |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
dbConnection | да |
Параметры соединения с базой данных. В список параметров для подключения могут входить: database, user, password, host, port. |
|
sqlQuery | нет | Запрос к базе |
|
batchSize | нет | Количество записей для объединения. Актуально если batchMode="true". | batchSize="5" |
batchMode | нет | Определяет режим записи в таблицу. Записывать сразу по несколько записей – true, по одной – false. Пакетный режим ускоряет загрузку данных в базу данных. | batchMode="true" |
commit | нет | Определяет, после обработки скольких записей (без ошибок) выполняется коммит (возможные значения -1,0,N). | commit="10" |
maxErrorCount | нет | Максимальное количество разрешенных ошибок. При превышении этого числа ошибок граф выходит из строя. По умолчанию ошибки не допускаются. Если установлено значение -1, все ошибки разрешены. | maxErrorCount="0" |
actionOnError | нет | Действие при превышении допустимого количества ошибок maxErrorCount. Если установлено значение ROLLBACK, фиксация текущего пакета не выполняется (актуально только для Oracle). Commit для Postgres делает тоже, что и Rollback, MsSql автоматически делает Rollback. | actionOnError="commit" |
Пример. Загрузка записей из OneBridge в SQLite.
Нужно загрузить данные из OneBridge в базу данных SQLite в таблицу Tracking
, в поля client
, items
, total
.
Данные в системе:
customer | product | amount_of_purch |
---|---|---|
JazzveCoffee | Coffea arabica | 19513 |
Arabica Legasy LLC | Coffea canephora | 12735 |
BlackBean Group | Excelsa | 34010 |
Решение:
Задайте соединение с базой:
<Connection id="CONN_A" dbURL="${CONN_TYPE}://${DB_01_USR}:${DB_01_PWD}@${DB_01_HOST}:${DB_01_PORT}/${DB_01_DATABASE}"/>
Пропишите в файл задания SQL-запрос:
<Phase ...>
...
<Node id="db_writer" guiX="250" guiY="100" guiName="DatabaseWriter" dbConnection="CONN_A" type="WriterDB">
<Attr name= “sqlQuery”><![CDATA[
INSERT INTO public."Tracking" ("client", "items", "total")
VALUES ($customer, $product, $amount_of_purch)
]]></Attr>
</Node>
...
</Phase>
Чтобы вставить значения полей из системы нужно указать название полей из метаданных после знака «$».
Данные будут выгружены в базу данных, соответствующую указанному типу соединения, в таблицу Tracking.
POSTGRESQL_DATA_WRITER
POSTGRESQL_DATA_WRITER массовый загрузчик, подходящий для загрузки большого количества записей в базу данных PostgreSQL. Считывает данные через входной порт. Использует специальную утилиту Copy, которая позволяет загружать данные очень быстро. Для остальных случаев лучше использовать DATABASE_WRITER, для которого не требуется использование специальной утилиты.
Порты POSTGRESQL_DATA_WRITER:
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 1-n | да | Записи для загрузки в базу данных | Любые |
Пример.
Необходимо загрузить записи с метаданными «Product» (string), «Amount» (int), «date» (date) и «Price» (float) в таблицу Products в базу данных postgres с именем пользователя user001.
Укажите параметры подключения в атрибутах шага POSTGRESQL_DATA_WRITER:
<Node database="bl" guiName="out_P0" guiX="1100" guiY="170" host="${DB_HOST}" id="OUT_P0" parameters="port="${DB_PORT}"" psqlPath="/usr/bin/psql" table="${outP0}" type="POSTGRESQL_DATA_WRITER" username="${DB_USER_BL}"/>
Данные будут внесены в базу:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
psqlPath | да | Путь к утилите copy | psqlPath="psql" |
host | нет | Имя хоста | host="10.13.109.14" |
database | да | Имя базы данных | database="postgres" |
table | да | Имя таблицы, в которую производится запись | table="${tableNameTo}" |
username | нет | Имя пользователя | username="sofiko" |
parameters | нет | Параметры, которые могут использоваться в качестве параметров утилитой psql или оператором \copy. Указывается последовательность ключ=значение, отделенные друг от друга точкой с запятой, двоеточием или вертикальной чертой. Если значение какого-либо параметра содержит точку с запятой, двоеточие или вертикальную черту, такое значение должно быть заключено в двойные кавычки. Сейчас доступны к указанию columns и port |
|
TRASH
TRASH используется для прерывания потока данных, когда не нужно передавать данные дальше. Шаг не имеет выходных портов и не имеет атрибутов.
TRASH прерывает поток данных.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 1-n | нет | Для входящего потока записей. | Любые |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
debugOutput | нет | По умолчанию все записи удаляются. Если установлено значение true, все записи записываются в лог на вкладку «Консоль». Этот режим поддерживается при подключении любого количества входных портов. | debugOutput="true" |
Для преобразования данных
Преобразователи — это промежуточные шаги графа. Преобразователи получают данные через подключенные входные порты, обрабатывают их указанным пользователем способом и отправляют через подключенные выходные порты в следующие шаги.
Список шагов для преобразования данных:
MAP - пользовательский алгоритм обработки
ROLLUP - создает записи с помощью преобразования
EXT_SORT
EXT_SORT сортирует полученные записи в соответствии с указанным ключом сортировки и копирует каждую из них на все подключенные выходные порты. Позволяет использовать несколько параллельных потоков для сортировки больших данных.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Для входящего потока записей | Одинаковые метаданные на входных и выходных портах |
Output | 0 | да | Для отсортированных записей | |
1-n | нет | Для отсортированных записей |
Атрибуты EXT_SORT:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
sortKey | да | Список полей метаданных, по которым производится сортировка и порядок сортировки. Наивысший приоритет сортировки имеет первое поле в последовательности. Порядок сортировки выражается отдельно для каждого ключевого поля (по возрастанию или по убыванию). Порядок сортировки по умолчанию — по возрастанию. | sortKey="x_coord(a); y_coord(d)" |
sortInMemory | нет | При sortInMemory="true" выполняется внутренняя сортировка. По умолчанию false . | sortInMemory="true" |
runSize | нет | Количество записей, сортируемых одновременно в памяти; размер одного буфера чтения. По умолчанию 8192 . | runSize="15456" |
Пример. Сортировка данных.
Входные записи содержат имена файлов и их размер. Нужно отсортировать файлы по размеру, начиная с самого большого (descending – по убыванию). Метаданные содержат поля «FileName», «FileSize».
Входящие записи:
FileName | FileSize |
---|---|
file.txt | 2048 |
file.docx | 1048576 |
file.xml | 65536 |
Решение:
Ключ сортировки: FileSortKey="FileSize(d)"
Исходящие записи:
FileName | FileSize |
---|---|
file.docx | 1048576 |
file.xml | 65536 |
file.txt | 2048 |
EXT_FILTER
EXT_FILTER фильтрует входные данные в соответствии с логическим выражением. Отправляет все записи, соответствующие выражению фильтра, в первый выходной порт и все отклоненные записи во второй выходной порт.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Для входящего потока записей | Одинаковые метаданные на входных и выходных портах |
Output | 0 | да | Для отфильтрованных записей | |
1 | нет | Для отклонённых записей |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
filterExpression | да | Выражение, по которому фильтруются записи. Для записи преобразования используется JavaScript. Возвращает логическое значение. |
|
Пример. Фильтрация данных.
Входные данные содержат данные о продуктах, проданных в прошлом году. Нужно узнать данные только по карандашам. Метаданные содержат поля Product
, Count
и Location
.
Входящие записи:
Product | Count | Location |
---|---|---|
карандаш | 1553 | екатеринбург |
бумага | 6475 | новгород |
ручка | 598 | владикавказ |
карандаш | 177 | омск |
карандаш | 239 | волгоград |
бумага | 19 | казань |
ластик | 53 | ростов |
Решение:
Выражение для фильтрации: $in[0].product == «карандаш»
Исходящие записи:
Product | Count | Location |
---|---|---|
карандаш | 1553 | екатеринбург |
карандаш | 177 | омск |
карандаш | 239 | волгоград |
SIMPLE_COPY
SIMPLE_COPY получает записи через один входной порт и копирует каждую из них на все подключенные выходные порты. Шаг не имеет атрибутов.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Для входящего потока записей | Любые |
Output | 0 | да | Для скопированных записей | Как у Input 0 |
1-n | нет | Как у Output 0 |
Пример. Копирование данных.
Нужно скопировать записи с метаданными «carID» и «mark» в три потока.
Входящие записи:
порт 0:
carID | mark |
---|---|
145 | mercedes |
856 | toyota |
245 | chevrolet |
Решение:
Для копирования в несколько потоков нужно подключить SIMPLE_COPY несколько выходных портов. Записи на всех выходных портах будут идти в одинаковом порядке.
Исходящие записи:
порт 0:
carID | mark |
---|---|
145 | mercedes |
856 | toyota |
245 | chevrolet |
порт 1:
carID | mark |
---|---|
145 | mercedes |
856 | toyota |
245 | chevrolet |
порт 2:
carID | mark |
---|---|
145 | mercedes |
856 | toyota |
245 | chevrolet |
MAP
MAP позволяет написать пользовательский алгоритм обработки данных, используя внутренний язык системы. Можно по своему усмотрению трансформировать данные между входным и выходными портами, если предложенных шагов не хватает для выполнения необходимых преобразований данных.
Имеет единственный входной порт и как минимум один выходной. Может отправлять разные записи в разные выходные порты или даже отправлять одну и ту же запись на несколько выходных портов. Работает только с одним элементом, сохраняет порядок записей.
С помощью MAP можно:
- удалить ненужные значения полей
- проверить записи с помощью функций или регулярных выражений
- создать новые или изменить существующие поля
- преобразовать типы данных
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Для входящего потока записей | Любые |
Output | 0 | да | Для преобразованных записей | |
1-n | нет |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
transform | Алгоритм преобразования данных | ||
transformURL | 1 | Имя внешнего файла, в котором описано преобразввание | |
charset | нет | Кодировка внешнего файла, определяющего преобразование |
|
Один из атрибутов должен быть указан.
Пример. Обработка данных с помощью MAP.
Нужно получить произведение и сумму полученных на вход данных и отправить результаты на разные выходные порты. Входные метаданные содержат поля a, b. Нужно отправить результат перемножения a*b на первый порт, а результат сложения a+b на второй порт.
Входящие записи:
a | b |
---|---|
5 | 6 |
2 | 4 |
1 | 2 |
Решение:
Преобразование:
<Attr name="transform"><![CDATA[
pub fn transform() -> OutPort {
let res_mul = $in[0].a * $in[0].b;
let res_add = $in[0].a + $in[0].b;
$out[0].res_mul = res_mul;
$out[1].res_add = res_add;
return ALL;
}
]]>
</Attr>
Исходящие записи:
порт 0:
multiplied |
---|
30 |
6 |
2 |
порт 1:
added |
---|
11 |
5 |
3 |
ROLLUP
ROLLUP создает одну или несколько выходных записей из одной или нескольких входных записей. Может отправлять разные записи на разные выходные порты, указанные пользователем. Записи должны быть отсортированы перед подачей в этот шаг.
Метаданные на разных выходных портах могут различаться.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Для входных записей | любые |
Output | 0 | да | Для выходных записей | |
1-N | нет |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
groupKeyFields (groupKey) | да | Ключ, по которому записи считаются включенными в одну группу. Выражается в виде последовательности имен отдельных входных полей, разделенных друг от друга символом «#». | name; salary |
groupAccumulatorMetadataId (groupAccMd, groupMd) | дa | Идентификатор метаданных, которые служат для создания групповых аккумуляторов. | metadataName |
transform | да | Алгоритм обработки данных. Функции для преобразования на шаге ROLLUP описаны в таблице ниже. |
|
Функции шага ROLLUP:
Когда приходит первая запись, срабатывает initGroup(groupAccumulator). Он инициализирует группу записей, объединенных групповым акумулятором groupAccumulator.
Параметр | Значение |
---|---|
Обязательный | Да |
Входные параметры |
Метаданные, указанные пользователем. Если |
Возвращает | void |
Вызов | Вызывается по одному разу для первой входной записи каждой группы. Вызывается перед updateGroup(groupAccMd). |
Описание | Инициализирует информацию для конкретной группы. |
Пример |
|
Далее для каждой записи, которая соответствует этой группе, вызывается updateGroup(groupAccumulator).
Параметр | Значение |
---|---|
Обязательный | Да |
Входные параметры |
Метаданные, указанные пользователем. Если |
Возвращает |
если true, то вызывается если false, то вызывается |
Вызов |
Вызывается многократно (по одному разу для каждой входной записи группы, включая первую и последнюю запись). Вызывается после того, как функция |
Описание | Инициализирует информацию для конкретной группы. |
Пример |
|
Если updateGroup вернул true, то для каждой записи еще вызывается updateTransform(counter, groupAccumulator) столько раз сколько указан counter внутри, пока не вернётся SKIP.
Параметр | Значение |
---|---|
Обязательный | Да |
Входные параметры |
Целочисленный счетчик (начинается с 0, указывает количество созданных записей. Должен быть завершен, как показано в примере ниже. Вызовы функций заканчиваются, когда возвращается
Если |
Возвращает | целочисленные значения |
Вызов |
Вызывается неоднократно, как указано пользователем. Вызывается после того, как |
Описание |
Создает выходные записи на основе информации об отдельных записях. Если |
Пример |
|
Когда группа закончилась, отрабатывает finishGroup(groupAccumulator).
Параметр | Значение |
---|---|
Обязательный | Да |
Входные параметры |
Метаданные, указанные пользователем. Если |
Возвращает |
если true, то вызывается если false, то вызывается |
Вызов |
Вызывается повторно, один раз для последней входной записи каждой группы. Вызывается после того, как |
Описание |
Если |
Пример |
|
Затем выполняется transform(counter, groupAccumulator).
Параметр | Значение |
---|---|
Обязательный | Да |
Входные параметры |
целочисленный счетчик (начинается с 0, указывает количество созданных записей. должен быть завершен, как показано в примере ниже. Вызовы функций заканчиваются, когда возвращается SKIP.)
Если |
Возвращает | целочисленные значения |
Вызов |
Вызывается неоднократно, как указано пользователем. Вызывается после того, как |
Описание |
Создает выходные записи на основе всех записей всей группы. Если функция |
Пример |
|
Входные записи или поля
Входные записи или поля доступны в функциях initGroup()
, updateGroup()
, finishGroup()
. Они также доступны в функциях updateTransform()
, transform()
.
Выходные записи или поля
Выходные записи или поля доступны в функциях updateTransform()
, transform()
.
Групповой аккумулятор
Групповой аккумулятор доступен в функциях initGroup()
, updateGroup()
, finishGroup()
. Он также доступен в функциях updateTransform()
, transform()
.
Для объединения данных
Шаги этой группы называются "Соединители". Они служат для объединения записей из потоков с потенциально разными метаданными в соответствии с заданным ключом соединения и способом преобразования.
Соединители имеют как входные, так и выходные порты. Первый входной порт шага-соединителя называется "главным" или "мастером" и обозначается номером «0», остальные входные порты — "подчинённые".
Соединители всегда объединяют только записи из главного порта с записями из подчинённых портов. И не объединяют записи из ведомых портов между собой.
HASH_JOIN
HASH_JOIN объединяет потоки данных по ключу.
Этот шаг получает данные через два или более входных порта, каждый из которых может иметь различную структуру метаданных. Записи не обязательно сортировать перед передачей в этот шаг.
Сначала HASH_JOIN считывает записи из всех подчинённых портов и сохраняет их в хэш-таблицы. Для каждого подчинённого порта создается отдельная хэш-таблица. Размер всех созданных хэш-таблиц не должен превышать размер оперативной памяти сервера, так как хэш-таблицы хранятся в оперативной памяти и ее переполнение приведет к завершению задания с ошибкой. Поэтому имеет смысл в главный входной поток подавать большое количество записей, а в подчинённые потоки – небольшие группы записей.
Затем для каждой записи из мастера производится поиск совпадения с записями из каждой хэш-таблицы по заданному ключу соединения.
Если совпадение найдено, кортеж из записи главного порта и хэш-таблицы подчинённого порта трансформируется заданным образом. Полученная после преобразования запись подаётся на первый выходной порт. Метод преобразования вызывается для каждого кортежа главной и соответствующих подчинённых записей. Записи из главного порта, которые не были объединены подаются на второй выходной порт.
Пример.
Даны два потока записей. В одном потоке содержится информация о названии продукта в поле «Product» и его цвете на русском языке «rus_color», во втором потоке – названию цвета на русском языке соответствует название на английском «eng_color». Задача сопоставить продукт и его цвет на английском языке.
порт0:
product | rus_color |
---|---|
шарф | красный |
носок | белый |
свитер | зеленый |
порт1:
rus_color | eng_color |
---|---|
синий | blue |
желтый | yellow |
красный | red |
Ключ соединения: joinKey="$rus_color"
Формула для объединения:
<Attr name="transform">
<![CDATA[//#PseudoRust:code
pub fn transform() -> OutPort {
output.out_0.Product = input.in_0.Product;
output.eng_color = input.in_1.eng_color;
return out_port![ALL]
}
]]></Attr>
Исходящие записи:
порт0:
product | eng_color |
---|---|
шарф | red |
порт0:
product | rus_color |
---|---|
носок | белый |
свитер | зеленый |
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Главный входной порт | Любые |
1 | да | Дополнительный входной порт | ||
2-n | нет | Опциональные дополнительные входные порты | ||
Output | 0 | да | Исходящий порт | |
1 | нет | Порт для записей, которые не подошли по ключу соединения | Как у Input 0 |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
joinKey | да | Ключ, по которому объединяются входящие потоки данных |
|
joinType | нет | Тип объединения. Бывает "inner"(по умолчанию) и "leftOuter" | joinType="leftOuter" |
transform | да |
Преобразование, определенное в файле задания на внутреннем языке системы1 |
|
slaveDuplicates | нет | Если установлено значение true, разрешены записи с повторяющимися значениями ключей. Если false, для объединения используется только последняя запись. По умолчанию true. | slaveDuplicates="false" |
В данный момент используется псевдораст, в дальнейшем возможен переход на другой язык описания преобразований.
MERGE_JOIN
Объединяет данные из двух или более источников данных по общему ключу. Данные должны быть отсортированы перед подачей в этот шаг.
MERGE_JOIN получает данные через два или более входных порта, каждый из которых может иметь различную структуру метаданных. Затем объединенные данные отправляются на первый выходной порт. Необъединенные данные можно вывести на второй выходной порт.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Главный входной порт | любые |
1 | да | Ведомый входной порт | ||
2-n | нет | Дополнительные ведомые входные порты | ||
Output | 0 | да | Выходной порт для объединенных данных | |
1 | нет | Выходной порт для необъединённых данных | как на Input 0 |
Типы полей метаданных на первом входном и втором выходном портах должны быть одинаковыми, имена полей при этом могут отличаться.
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
joinKey | да | Ключ, по которому объединяются входящие потоки данных. Представляет собой последовательность выражений сопоставления для всех ведомых портов. Выражения сопоставления отделяются друг от друга хешем #. Каждое из выражений сопоставления представляет собой последовательность имен полей из главной и подчинённой записей, разделенных знаком равно. Выражения внутри joinKey отделяются друг от друга точкой с запятой | joinKey="$name(a);$color(d)#$product;$tint;#$name;$tone" |
joinType | нет | Тип объединения | inner (по умолчанию) | leftOuter |
transform | да | Преобразование, определенное в файле задания на внутреннем языке системы |
|
slaveDuplicates | нет | Если установлено значение true, разрешены записи с повторяющимися значениями ключей. Если false, для объединения используется только последняя запись. По умолчанию true. | slaveDuplicates="false" |
CROSS_JOIN
CROSS_JOIN создает декартово произведение записей из подключенных входных портов.
Каждая строка из первого порта соединяется с каждой строкой из последующих портов, в результате получаются все возможные сочетания значений со всех портов. Возможно преобразование данных с помощью атрибута transform.
CROSS_JOIN автоматически передаёт метаданные на выходной порт в соответствии с метаданными на его входных портах.
Заметка: при обработке очень большого количества записей, на жёстком диске могут быть созданы временные файлы с обрабатываемыми записями. Это предотвращает чрезмерное использование оперативной памяти.
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Главный входной порт | любые |
1-n | нет | Ведомый входной порт(ы) | ||
Output | 0 | да | Для выходных записей |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
transform |
нет2 | Функция преобразования данных, определённая в графе |
|
В случае необходимости описать преобразование, можно указать только один из этих атрибутов.
Пример.
Создать таблицу со всеми возможными сочетаниями игроков в бильярд из двух команд:
Игроки первой команды:
Вася
Маша
Никита
Игроки второй команды:
Алёна
Петя
Лиза
Решение: Нужно только подключить источники данных к портам компонента CROSS_JOIN. Настройка атрибутов компонента не требуется.
В результате получится такой набор пар игроков в бильярд:
Вася | Алёна
Вася | Петя
Вася | Лиза
Маша | Алёна
Маша | Петя
Маша | Лиза
Никита | Алёна
Никита | Петя
Никита | Лиза
Заметка: Ребро, по которому передаётся наибольшее количество записей, должно быть подключено к первому входному порту.
Методы преобразования данных
В некоторых шагах можно самостоятельно определить алгоритм обработки данных. К таким шагам относятся HashJoin, MergeJoin, Map, Rollup. Пользовательский алгоритм преобразования в этих шагах определяется в атрибуте с именем "transform" с помощью JavaScript:
<Node id="m" type="Map">
<Attr name="transform">
<![CDATA[//...]]>
</Attr>
</Node>
В шагах, использующих функцию преобразования, можно применять методы для работы с записями, описанные в примере ниже:
<Node id="map" guiX="250" guiY="100" guiName="map" type="Map">
<Attr name="transform"><![CDATA[//
$out[0].person = $in[0].name.toString() + "_" + $in[0].surname.toString();
$out[1].person = $in[0].name.toString().toUpperCase() + " " + $in[0].surname.toString().toUpperCase();
return ALL;
Param(param_name)
возвращает значение param_name, но выдает ошибку unknown parameter 'param_name', если имя параметра не определено
0 => $out[0].obj_type = param("X"),
1 => $out[0].obj_type = param("RbISb"),
2 => $out[0].obj_type = format!("secure number is {}", param("FILE_PRM_NUM")),
Param_or(param_name, default_value)
возвращает значение параметра или default_value, если параметра нет
3 => $out[0].obj_type = input.obj_type + " is not " + ¶m_or("XX", "goose") + "!",
Try_param(param_name)
возвращает Some(value) (value является строкой) в случае,
если параметр есть, None, если параметра нет
4 => $out[0].obj_type = if let Some(obj_type) = try_param("X") { obj_type } else { "tuturu".to_string() },
Param_parse_or(param_name, default_value)
возвращает преобразованное значение параметра, если он есть или default_value. Возвращает ошибку, если значение параметра не преобразуется к типу
5 | 6 => {
$out[0].y_coord = param_parse_or("X", 24);
$out[0].obj_type = param_parse_or("X", "tururu".to_string());
}
_ => $out[0].obj_type = input.obj_type,
index += 1;
return ALL;
Возвращаемые значения
Значение | Описание | Пример использования |
---|---|---|
ALL | В этом случае запись отправляется на все выходные порты. | return out_port![ALL] |
SKIP | сообщает что мы пропускаем данный выход (пропускаем цикл преобразования) | else { return out_port![SKIP] } |
Любое целое число больше или равное 0 | Запись отправляется на выходной порт, номер которого равен этому возвращаемому значению. | out_port![1, 4, 9] -- вернет запись на 1-ый, 4-ый и 9-ый порт out_port![ERROR: 2, 4, 5, 7] – сообщает, что произошли ошибки с номерами 2, 4, 5 и 7 |
Типы задач
Задача — это граф, поток заданий, системный скрипт и т. д., которые можно запустить вручную, настроить запуск в запланированное время или запустить по какому-либо событию. В задаче указано что именно надо сделать. Существует несколько типов задач:
- запуск заданий;
- прерывание выполнения задания;
- выполнение системной команды;
Задачи используются:
- для создания расписаний;
- в обработчиках событий;
- при ручном запуске задач.
Каждая задача имеет атрибуты запуска. В таблицах ниже описаны атрибуты существующих задач:
Атрибуты задачи «Запуск задания».
название | описание |
---|---|
Task type | Запустить граф |
Job | Имя графа, который необходимо выполнить. Список для выбора заполнен всеми файлами графов. |
Parameters | Список параметров, передаваемых графу. |
Атрибуты задачи «Прерывание выполнения заданий».
название | описание |
---|---|
Task type | Прервать выполнение задания |
Job | Это поле выбора заполнено всеми заданиями. Все экземпляры выбранного задания, которые в данный момент выполняются и будут уничтожены. |
Атрибуты задачи «Выполнение системной команды».
название | описание |
---|---|
Task type | Выполнение системной команды |
Program | Программа |
Args | Аргументы |
Что такое файл задания
Задание – это последовательность шагов по обработке данных, записанная в формате XML в файл с расширением .grf
. Шагом является минимальный алгоритм обработки данных.
Созданием файла занимается пользователь системы – разработчик заданий.
Структура файла задания соответствует стандартной структуре XML документа. Файл задания должен быть синтаксически верным XML документом.
В следующих главах описана структура файла задания, описаны атрибуты всех элементов и приведен пример создания такого файла.
Структура файлов заданий OneBridge
В системе определены некоторые элементы, которые стоит использовать для корректной передачи информации и отображения графов в инспекторе задач.
После декларации следует указать начальный тег корневого элемента документа <Graph>
. В этот элемент помещается все описание алгоритма обработки данных, все используемые шаги, ребра и их метаданные.
За ним следуют строки, описывающие дочерние элементы корневого элемента. Два главных дочерних элемента это <Global>
и <Phase>
. В элементе <Global>
описываются метаданные и параметры подключения.
Система OneBridge обрабатывает данные в виде записей. Каждая запись может состоять из нескольких полей разных типов. Метаданные хранят тип данных этих полей. Метаданные являются частью задания, они содержатся в файле задания и их нужно описывать в элементе <Metadata>
, чтобы четко определить типы обрабатываемых данных.
Параметры подключения к базе данных, файлы с настройками, можно указать и подключить в элементе <GraphParameters>
.
В <Phase>
задаются атрибуты шагов задания <Node>
и описываются ребра <Edge>
. Описание шагов может содержать в себе дочерние элементы <Attr>
, в которых описываются методы преобразования записей данных.
Последняя строка файла содержит конечный тег корневого элемента: </Graph>
.
На схеме ниже представлена иерархия элементов в файле задания.
Элементы
Ниже приведена таблица с описанием возможных элементов файла задания.
Элемент | Родительский элемент | Описание элемента |
---|---|---|
Graph | нет | Является главным элементом, определяющим граф. Содержит информацию о файле задания.* Обязательный тег для отрисовки графа в инспекторе заданий. |
Global | Graph | Содержит информацию о файле, не имеет атрибутов. Дочерние элементы: - Metadata - используемые метаданные; - GraphParameters – параметры графа; - Connection – подключения к базам данных. |
Metadata | Global | Определяет тип данных записи |
Record | Metadata | Используется для определения символов-разделителей полей и записей для шагов FlatFileReader и FlatFileWriter, которые читают и записывают данные изв плоские файлы. По умолчанию разделитель полей — "," разделитель строк — "n", если необходимо использовать другие разделители – нужно задать их в элементе Record с помощью конструкции:
|
Field | Record | Содержит имя поля и его тип. Если задан Record, то все Field должны идти внутри него.
|
GraphParameters | Global | Содержит элементы, в которых хранится информация для подключения к базам данных или путь к файлу для чтения. Может иметь атрибут scopeNonce - дополнительный параметр для защищенных параметров, например, пароля от базы данных. |
GraphParameter | GraphParameters | Хранит параметры для используемых в файле шагов, например, путь к файлу для шага чтения данных. Атрибуты элемента описаны в таблице "Атрибуты элемента GraphParameter" |
GraphParameterFile | GraphParameters | Подключает файл параметров. Атрибуты описаны в таблице "Атрибуты элемента GraphParameterFile" |
Connection | Global | Хранит параметры подключения к базе данных. |
Phase | Graph | Номер фазы присваивается шагам графа, если есть необходимость запускать часть шагов после завершения выполнения другой части шагов. Фаз в графе может быть несколько, так что им нужно присваивать атрибут number, указывающий очередность выполнения. Каждый граф выполняется параллельно в рамках одного и того же номера фазы; т. е. каждый шаг и каждое ребро с одинаковым номером фазы выполняются одновременно. Если процесс останавливается на какой-то фазе, более высокие фазы не запускаются. Только после успешного завершения всех процессов в рамках одной фазы начнется следующая фаза. Ребра графа, в которых описывается соединение шагов должны быть описаны в одной фазе с используемыми шагами. То есть нельзя объявлять шаги в одной фазе, а связывать их ребром - в другой. |
Node | Phase | Описывает атрибуты шага. Атрибуты описаны в таблице "Атрибуты элемента Node" |
Attr | Node | Описывает логическое выражение для фильтрации и сортировки или метод преобразования данных. |
Edge | Phase | Описывает связь между шагами графа. Атрибуты описаны в таблице "Атрибуты элемента Edge" |
Атрибуты элементов
Для заданий: <GraphParameter>
и <GraphParameterFile>
Для шагов:<Node>
Для рёбер:<Edge>
Атрибуты элемента GraphParameter
Название | Обязательный | Описание | Возможные значения |
---|---|---|---|
name | да | Имя параметра | name="READ_DIR" |
value | нет | Значение параметра | value="test/files/generated" |
public | нет | Публичность параметра | Значение по умолчанию: public="false" |
required | нет | Обязательность указания значения параметра при запуске задания | Значение по умолчанию : required="false" |
secure | нет | Параметр зашифрован | Значение по умолчанию: secure="false" |
- если public="true" и required="true", тогда value игнорируется;
- если public="true" и value не задан, тогда required устанавливается в "true";
- если public="false", то required игнорируется;
- если public="false", то value должно быть задано;
- значение name не может содержать в себе подпоследовательность "${".
Атрибуты элемента GraphParameterFile
Атрибут | Обязательный | Описание | Возможные значения |
fileURL | да | Путь к файлу с параметрами |
|
Атрибуты элемента Node
Название | Обязательный | Описание | Возможные значения |
---|---|---|---|
id | да | Удобное название шага для указания в атрибутах ребер графа. | id="reader" |
guiName | нет | Имя шага, отражаемое в инспекторе заданий. Может быть любым. | guiName="read" |
guiX | нет | Координата X левого верхнего угла шага для визуального отображения шага в инспекторе задач. | guiX="-132" |
guiY | нет | Координата Y левого верхнего угла шага для визуального отображения шага в инспекторе задач. | guiY="212" |
type | да | Тип шага. Определяет функциональность данного шага. | Все имеющиеся в системе типы шагов: type="FlatFileReader" type="DbReader" type="FlatFileWriter" type="DbWriter" type="PgDbWriter" type="Trash" type="Sort" type="Filter" type="Gather" type="Copy" type="Concat" type="Map" type="Dedup" type=" Rollup" type="HashJoin" type="MergeJoin" type=" DbExecute" type=" HTTPConnector" type=" DataGenerator" type=" Normalizer" |
Атрибуты элемента Edge
Название | Обязательный | Описание | Возможные значения |
---|---|---|---|
id | нет | Уникальное название ребра в пределах графа. | id="edge0" |
fromNode | нет1 | Используется для описания направления ребра в теге <Edge> . Обозначает «из какого порта какого шага выходит ребро» | fromNode="filter_short:0" |
toNode | нет1 | Используется для описания направления ребра в теге <Edge> . Обозначает «в какой порт какого шага входит ребро» | toNode="sort_long:0" |
chunkAmount | нет | кол-во chunk'ов которые могут одновременно находится внутри данного ребра | chunkAmount="42" |
chunkSize | нет2 | из какого количества записей состоит один chunk | chunkSize="5" |
chunkMemSize | нет2 | сколько памяти занимает один chunk | chunkMemSize="40_KB" |
metadata | нет | Атрибут ребра, определяющий тип данных, передающихся по данному ребру | metadata="Purchase" |
Хотя бы один из атрибутов должен быть указан.
chunkSize и chunkMemSize не могут быть заданы одновременно.
Описание задачи
Создать файл с заданием для обработки данных следующим образом:
- Прочитать данные из нескольких файлов.
- Объединить считанные потоки данных.
- Скопировать получившийся поток данных в несколько потоков.
- Вывести один из потоков в файл.
- Записи из второго потока отсортировать.
- Затем отфильтровать.
- Полученные данные записать в файл.
На рисунке ниже представлено графическое представление такого графа:
Заполнение файла задания
В начале создания файла нужно объявить, что его содержимое является заданием-графом, для этого открываем тег <Graph>
.
Далее нужно открыть тег <Global>
, в котором будут описаны метаданные и параметры графа.
Далее открываем элемент <Record>
, атрибутами которого можно назначить fieldDelimiter – для объявления разделителя полей записи, и recordDelimiter – для указания символа, разделяющего записи.
Дочерним элементу <Record>
является пустой элемент <Field>
, у которого нет закрывающего тега. Его используем, чтобы указать имя (name) и тип данных (type) для полей записей.
Теперь поочередно закрываем теги </Record>
, </Metadata>
и </Global>
.
Следующий открывающий тег - <Phase>
с атрибутом number, указывающим номер фазы для определения очередности выполнения шагов. В этом примере фаза всего одна, ее номер можно не указывать.
Далее открываем три пустых элемента <Node>
, атрибуты которых, описывают имя шага (id), входные и выходные файлы для шагов чтения и записи (file), типы шагов (type) и координаты для отрисовки шагов в инспекторе задач.
У элемента <Node>
может быть дочерний элемент <Attr>
, которому нужно задать имя name, а внутри записать логическое выражение для фильтрации или метод преобразования данных.
Еще нужно указать пустые теги <Edge>
для описания ребер графа. В атрибутах этого элемента можно пояснить, какими ребрами какие шаги связать в этом графе и указать ссылку на метаданные, указанные в начале файла в теге <Metadata>
.
В конце закрываем элементы </Phase>
и </Graph>
.
Получился файл задания:
<?xml version="1.0" encoding="UTF-8"?>
<Graph>
<Global>
<Metadata id="ObjectWithPos">
<Record fieldDelimiter="|" recordDelimiter="\n">
<Field name="a" type="string"/>
<Field name="b" type="integer"/>
<Field name="c" type="float"/>
</Record>
</Metadata>
</Global>
<Phase number="0">
<Node id="reader0" guiX="50" guiY="100" guiName="FlatFileReader" file="data-in/others/example_01_in1.txt" type="FlatFileReader"/>
<Node id="reader1" guiX="50" guiY="300" guiName="FlatFileReader" file="data-in/others/example_01_in2.txt" type="FlatFileReader"/>
<Node id="writer0" guiX="1050" guiY="300" guiName="FlatFileWriter" file="data-out/others/example_01_out1.txt" type="FlatFileWriter"/>
<Node id="writer1" guiX="650" guiY="100" guiName="FlatFileWriter" file="data-out/others/example_01_out2.txt" type="FlatFileWriter"/>
<Node id="concat" guiX="250" guiY="200" guiName="Concat" type="Concat"/>
<Node id="copy" guiX="450" guiY="200" guiName="Copy" type="Copy"/>
<Node id="sort" guiX="650" guiY="300" guiName="FileSortNode" sortKey="c(d)" type="FileSortNode"/><!--"d" - descending-->
<Node id="filter" guiX="850" guiY="300" guiName="FilterNode" type="FilterNode">
<Attr name="filterExpression">
<![CDATA[//#Rust:closure
|input| input.a.chars().count() < 15
]]>
</Attr>
</Node>
<Edge id="edge0" fromNode="reader0:0" toNode="concat:0"/>
<Edge id="edge1" fromNode="reader1:0" toNode="concat:1"/>
<Edge id="edge2" fromNode="concat:0" toNode="copy:0"/>
<Edge id="edge6" fromNode="copy:0" toNode="writer1:0" metadata="ObjectWithPos"/>
<Edge id="edge5" fromNode="copy:1" toNode="sort:0"/>
<Edge id="edge3" fromNode="sort:0" toNode="filter:0"/>
<Edge id="edge4" fromNode="filter:0" toNode="writer0:0" metadata="ObjectWithPos"/>
</Phase>
</Graph>
Результат
На вход были поданы два файла:
файл 1:
werwr|234|25.45
krlgkrgw|63|-65.8
srgehdhdfxyjset___g_jgsn|72465|92745972
fbsb!efb|-42536356|0
glsdgh|453453|4524.545
файл 2:
Лёша на горе рога нашёл|-123|-123
Около Мити молоко|234|454.4
Тина барабанит|12|12.12
На выходе получены файлы:
файл 1 (содержит результат работы задания целиком):
glsdgh|453453|4524.545
werwr|234|25.45
Тина барабанит|12|12.12
fbsb!efb|-42536356|0.0
krlgkrgw|63|-65.8
файл 2 (содержит результат конкатенации двух потоков данных на втором шаге задания):
werwr|234|25.45
krlgkrgw|63|-65.8
srgehdhdfxyjset___g_jgsn|72465|92745970.0
fbsb!efb|-42536356|0.0
glsdgh|453453|4524.545
Лёша на горе рога нашёл|-123|-123.0
Около Мити молоко|234|454.4
Тина барабанит|12|12.12
Атрибуты используемых шагов
Атрибуты FlatFileReader:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
id | да | Название шага для указания в атрибутах ребра fromNode и toNode. Может быть произвольным. | id="reader" |
guiX | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiX="50" |
guiY | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiY="100" |
guiName | нет | Имя шага, указываемое на графе. Равно type шага. Нельзя изменять. | guiName="FlatFileReader" |
file | нет | Путь к источнику данных для чтения | file="data-in/others/example_01_in1.txt" |
type | да | Тип шага. Определяет функциональность данного шага. | type="FlatFileReader" |
Атрибуты Concat:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
id | да | Название шага для указания в атрибутах ребра fromNode и toNode. Может быть произвольным. | id="concat" |
guiX | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiX="50" |
guiY | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiY="100" |
guiName | нет | Имя шага, указываемое на графе. Равно type шага. Нельзя изменять. | guiName="Concat" |
type | да | Тип шага. Определяет функциональность данного шага. | type="Concat" |
Атрибуты Copy:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
id | да | Название шага для указания в атрибутах ребра fromNode и toNode. Может быть произвольным. | id="copy" |
guiX | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiX="50" |
guiY | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiY="100" |
guiName | нет | Имя шага, указываемое на графе. Равно type шага. Нельзя изменять. | guiName="Copy" |
type | да | Тип шага. Определяет функциональность данного шага. | type="Copy" |
Атрибуты FileSortNode:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
id | да | Название шага для указания в атрибутах ребра fromNode и toNode. Может быть произвольным. | id="sort" |
guiX | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiX="50" |
guiY | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiY="100" |
guiName | нет | Имя шага, указываемое на графе. Равно type шага. Нельзя изменять. | guiName="FileSortNode" |
sortKey | да | Имя поля для ключа и порядок сортировки. «d» - «descending» - по убыванию «a» - «ascending» - по возрастанию | sortKey="component(d)" |
type | да | Тип шага. Определяет функциональность данного шага. | type="FileSortNode" |
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
id | да | Название шага для указания в атрибутах ребра fromNode и toNode. Может быть произвольным. | id="filter" |
guiX | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiX="50" |
guiY | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiY="100" |
guiName | нет | Имя шага, указываемое на графе. Равно type шага. Нельзя изменять. | guiName="FilterNode" |
Filter expression | да | Выражение, по которому фильтруются записи. Возвращает логическое значение. |
|
type | да | Тип шага. Определяет функциональность данного шага. | type="FilterNode" |
Атрибуты FlatFileWriter:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
id | нет | Название шага для использования в атрибутах ребра fromNode и toNode. | id="writer" |
guiX | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiX="50" |
guiY | нет | Координата верхнего левого угла шага для отрисовки графа в инспекторе заданий. | guiY="100" |
guiName | нет | Имя шага, указываемое на графе. Равно type шага. Нельзя изменять. | guiName="FlatFileWriter" |
file URL | да | Путь к файлу, в который должен быть записан результирующий набор данных. | ${WRITE_DIR}/out.txt |
type | да | Тип шага. Определяет функциональность данного шага. | type="FlatFileWriter" |
API
В API OneBridge используются POST-, GET-, PATCH- и DELETE-запросы. Тип запроса указан в таблице для каждого метода.
Каждый URL начинается с http://<host:port>
, за этим следует название метода и параметры, при необходимости. Например, запрос для получения информации о запуске графа может быть записан так: http://127.0.0.1:3000/api/run-by-id?id=14
. В таблицах с описанием методов будут указаны относительные пути URL-запросов.
Список API-методов системы OneBridge, доступных для вызова:
- API
- Auth
- Users
- create user
- toggle user status
- reset user password
- update user
- view user
- list users
- Roles
- view all roles
- view role
- create role
- update role
- delete role
- view all privileges
- view all assigned privileges
- view role privilegies
- update role privilegies
- view all assigned subroles
- view role subroles
- update role subroles
- view all assigned roles
- view user roles
- update user roles
- view all assigned privileges
- view user privileges
- update user privileges
- Resources
- Execution
- Projects
- Schedules
- Event listeners
Auth
login
Параметр | Значение |
---|---|
Описание | Логин |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Структура ответа |
|
Пример ответа |
|
logout
Параметр | Значение |
---|---|
Описание | Логаут |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа | ничего не возвращает |
refresh
Параметр | Значение |
---|---|
Описание | Рефреш токена |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
change password
Параметр | Значение |
---|---|
Описание | Смена пароля |
Метод | POST |
URL запроса |
|
Тело запроса |
|
Структура ответа | ничего не возвращает |
Users
create user
Параметр | Значение |
---|---|
Описание | Создание пользователя |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Структура ответа |
|
Пример ответа |
|
toggle user status
Параметр | Значение |
---|---|
Описание | Изменение статуса пользователя |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
reset user password
Параметр | Значение |
---|---|
Описание | Сброс пароля пользователя |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
update user
Параметр | Значение |
---|---|
Описание | Обновление пользователя. Поменять можно first_name, last_name, email |
Метод | PATCH |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Структура ответа | ничего не возвращает |
view user
Параметр | Значение |
---|---|
Описание | Просмотр пользователя |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
list users
Параметр | Значение |
---|---|
Описание | Просмотр списка пользователей |
Метод | GET |
URL запроса |
|
Параметры запроса | Без параметров |
Структура ответа |
|
Пример ответа |
|
Roles
view all roles
Параметр | Значение |
---|---|
Описание | Просмотр списка ролей |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
view role
Параметр | Значение |
---|---|
Описание | Просмотр конкретной роли по её id |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
create role
Параметр | Значение |
---|---|
Описание | Создание роли |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Пример ответа | ничего не возвращает |
update role
Параметр | Значение |
---|---|
Описание | Обновление роли |
Метод | PATCH |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Пример ответа | ничего не возвращает |
delete role
Параметр | Значение |
---|---|
Описание | Удаление роли |
Метод | DELETE |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа | ничего не возвращает |
view all privileges
Параметр | Значение |
---|---|
Описание | Просмотр списка всех существующих привилегий |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
view role assigned privileges
Параметр | Значение |
---|---|
Описание | Просмотр привилегий роли |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
view role privileges
Параметр | Значение |
---|---|
Описание | Просмотр привилегий роли |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
update role privileges
Параметр | Значение |
---|---|
Описание | Обновление привилегий роли |
Метод | PATCH |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Структура ответа | ничего не возвращает |
view all assigned subroles
Параметр | Значение |
---|---|
Описание | Просмотр всех присвоенных ролям субролей |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
view role subroles
Параметр | Значение |
---|---|
Описание | Просмотр субролей роли |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
update role subroles
Параметр | Значение |
---|---|
Описание | Изменение субролей роли |
Метод | PATCH |
URL запроса |
|
Тело запроса |
|
Структура ответа | ничего не возвращает |
view all assigned roles
Параметр | Значение |
---|---|
Описание | Просмотр списка ролей, присвоенных каждому пользователю |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
view user roles
Параметр | Значение |
---|---|
Описание | Просмотр ролей конкретного пользователя |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
update user roles
Параметр | Значение |
---|---|
Описание | Обновление ролей пользователя |
Метод | PATCH |
URL запроса |
|
Тело запроса |
|
Структура ответа | ничего не возвращает |
view all privileges
Параметр | Значение |
---|---|
Описание | Просмотр всех присвоеннных пользователям привилегий |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
view user assigned privileges
Параметр | Значение |
---|---|
Описание | Просмотр привилегий пользователя |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
update user privileges
Параметр | Значение |
---|---|
Описание | Обновление привилегий пользователя |
Метод | PATCH |
URL запроса |
|
Тело запроса |
|
Структура ответа | ничего не возвращает |
Resources
get info
Параметр | Значение |
---|---|
Описание | Просмотр основной информации о сервере |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
get performance
Параметр | Значение |
---|---|
Описание | Возвращает данные о работе сервера для отображения графиков работы памяти и процессора |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа | возвращает JSON файл со структурой, которая содержит объекты, описывающие состояние памяти и процессора:
ram: объект с информацией о памяти
cpu: объект с информацией о процессоре
|
Пример ответа |
|
get utilization
Параметр | Значение |
---|---|
Описание | Возвращает данные о количеству используемой памяти сервера |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
Execution
get runs
Параметр | Значение |
---|---|
Описание | Возвращает информацию об отработавшем задании |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post runs
Параметр | Значение |
---|---|
Описание | запускает задание в работу и возвращает номер запущенного задания |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Структура ответа |
|
Пример ответа |
|
get run position
Параметр | Значение |
---|---|
Описание | Просмотр данных о запуске задания |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
get run by id
Параметр | Значение |
---|---|
Описание | Возвращает информацию об отработавшем задании |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
get runs log
Параметр | Значение |
---|---|
Описание | Возвращает журнал выполнения запуска задания |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа | log: string |
Пример ответа |
|
get runs num
Параметр | Значение |
---|---|
Описание | Возвращает количество запусков заданий. Можно добавить фильтр по статусу, дате и имени файла |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
get run job content
Параметр | Значение |
---|---|
Описание | Возвращает контент указанного задания, акутального на момент запуска |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
get run stats
Параметр | Значение |
---|---|
Описание | Возвращает статистику об указанном запуске |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
Projects
get tree
Параметр | Значение |
---|---|
Описание | Возвращает дерево проектов |
Метод | GET |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа |
|
Пример ответа |
|
get directory
Параметр | Значение |
---|---|
Описание | Возвращает информацию об указанной папке |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
get project
Параметр | Значение |
---|---|
Описание | Возвращает информацию об указанном проекте |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
get file
Параметр | Значение |
---|---|
Описание | Возвращает информацию об выбранному файлу |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post project
Параметр | Значение |
---|---|
Описание | Создать проект |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post project rename
Параметр | Значение |
---|---|
Описание | Переименовать проект |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post directory
Параметр | Значение |
---|---|
Описание | Создать директорию |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post directory rename
Параметр | Значение |
---|---|
Описание | Изменить название директории |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post file
Параметр | Значение |
---|---|
Описание | Создать файл |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post file rename
Параметр | Значение |
---|---|
Описание | Переименовать файл |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
patch file
Параметр | Значение |
---|---|
Описание | Заменить контент файла |
Метод | PATCH |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
delete directory
Параметр | Значение |
---|---|
Описание | Удалить директорию |
Метод | DELETE |
URL запроса |
|
Параметры запроса |
|
Структура ответа | ничего не возвращает |
delete file
Параметр | Значение |
---|---|
Описание | Удалить файл |
Метод | DELETE |
URL запроса |
|
Параметры запроса |
|
Структура ответа | ничего не возвращает |
delete project
Параметр | Значение |
---|---|
Описание | Удалить проект |
Метод | DELETE |
URL запроса |
|
Параметры запроса |
|
Структура ответа | ничего не возвращает |
Schedules
get schedules
Параметр | Значение |
---|---|
Описание | Просмотреть список расписаний |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post schedules
Параметр | Значение |
---|---|
Описание | Создать расписание |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Структура ответа |
|
Пример ответа |
|
post schedules toggle
Параметр | Значение |
---|---|
Описание | Изменить состояние расписания (вкл/выкл) |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post schedules rename
Параметр | Значение |
---|---|
Описание | Изменить название расписания |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
delete schedule
Параметр | Значение |
---|---|
Описание | Удалить расписание |
Метод | DELETE |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа | ничего не возвращает |
patch schedules
Параметр | Значение |
---|---|
Описание | Изменить атрибуты расписания |
Метод | PATCH |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Структура ответа |
|
Пример ответа |
|
Event listeners
get event listeners
Параметр | Значение |
---|---|
Описание | Возвращает список обработчиков событий |
Метод | GET |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post event listeners
Параметр | Значение |
---|---|
Описание | Создает обработчик событий |
Метод | POST |
URL запроса |
|
Параметры запроса | без параметров |
Тело запроса |
|
Структура ответа | ничего не возвращает |
post event listeners toggle
Параметр | Значение |
---|---|
Описание | Изменить состояние обработчика событий (вкл/выкл) |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа |
|
Пример ответа |
|
post event listeners rename
Параметр | Значение |
---|---|
Описание | Изменить название обработчика событий |
Метод | POST |
URL запроса |
|
Параметры запроса |
|
Структура ответа | ничего не возвращает |
delete event listeners
Параметр | Значение |
---|---|
Описание | Удалить обработчик событий |
Метод | DELETE |
URL запроса |
|
Параметры запроса | без параметров |
Структура ответа | ничего не возвращает |
patch event listeners
Параметр | Значение |
---|---|
Описание | Изменить значения атрибутов обработчика событий |
Метод | PATCH |
URL запроса |
|
Тело запроса |
Все поля опциональные. Но при смене типа события event с "job" на "file" и наоборот, а так же при смене действия action с "Command" на "StartJob" и наоборот - нужно заполнить все сопутствующие атрибуты.
Например, если обработчик был настроен на event "job", и нужно заменить его на event "file", то нужно будет задать значение и для атрибутов filesystem, check, path, interval.
|
Структура ответа |
|
Пример ответа |
|