Введение
Здесь представлены инструкции по настройке подключения, пути передачи данных и сценария для отправки SQL-запросов во внешнюю систему управления базами данных (СУБД) по таймеру и получения данных в приложении на основе Comindware Platform (далее «Приложение»).
Для получения данных из СУБД поддерживается SQL-запрос SELECT
:
- задайте таблицу для выборки записей из СУБД;
- задайте условие
WHERE
(необязательно) для выборки записей из СУБД; - задайте атрибут для хранения полученных записей из СУБД.
Настройка приложения для обмена данными с СУБД MySQL, MSSQL, Oracle и PostgreSQL осуществляется аналогичным образом.
См. также статью «Внешняя СУБД (MySQL, MSSQL, Oracle, Postgres). Отправка SQL-запроса. Настройка подключения, пути передачи данных и сценария».
Прикладная задача
При наступлении заданного таймера Comindware Platform должна отправлять запрос SELECT
во внешнюю СУБД и помещать полученные из таблицы cities
записи с названиями городов в шаблон записи «Города» в приложении.
Исходные данные
Внешняя БД содержит таблицу cities
с одним столбцом:
Name
типаTINYTEXT
— название города.
В приложении имеется шаблон записи «Города» с атрибутом:
- Город
- Тип данных: текст:
- Использовать как заголовок записей: флажок установлен
Подготовка сервера СУБД
Перед подключением из Comindware Platform необходимо подготовить конфигурацию сервера СУБД, как указано ниже.
Настройка серверов MySQL, MSSQL и Oracle осуществляется аналогично.
Настройка конфигурации сервера PostgreSQL
-
Откройте для редактирования файл
postgresql.conf
.-
В ОС Linux путь к этому файлу можно узнать с помощью следующей команды:
sudo -u postgres psql -c 'SHOW config_file'
-
В ОС Windows путь к файлу по умолчанию:
C:\ProgramData\PostgreSQL\X.X\data\postgresql.conf
Здесь
X.X
— номер версии PostgreSQL.
-
-
В файле
postgresql.conf
добавьте следующие директивы:-
Разрешите подключение со всех IP адресов:
listen_addresses = '*'
-
Задайте локаль для вывода сообщений об ошибках:
lc_messages = 'en_EN.utf-8'
-
-
Откройте для редактирования конфигурационный файл
pg_hba.conf
(в той же директории, что файлоpostgresql.conf
). -
В файле
pg_hba.conf
разрешите подключение с адреса сервера Comindware Platform (например,123.45.67.89
):host all all 123.45.67.89 md5
-
Перезапустите службу
postgresql
:Linux
sudo systemctl restart postgresql
Windows
net stop postgresql-x64-<номер_версии>
net start postgresql-x64-<номер_версии>
Создание подключения к СУБД
- Откройте страницу «Администрирование» – «Подключения».
-
Создайте SQL-подключение типа «Получение данных из СУБД».
Меню создания подключения для получения данных из СУБД -
В поле «Системное имя» введите уникальное имя подключения, например
RequestDataFromDBConnection
. - В поле «Описание» введите наглядное описание назначения подключения, например «Подключение для запроса данных из СУБД».
-
В поле «Запись в файловые журналы» укажите, какие события при обмене данными с сервером СУБД следует регистрировать в журнале:
- Полные сведения об обработке сообщения
- Только ошибки
- Отключить
-
В поле «Строка подключения» введите адрес сервера, имя базы данных, имя пользователя и пароль для подключения к СУБД:
MySQL
Server=ServerAddress;Database=DataBaseName;Uid=Username;Pwd=Password;
MSSQL
Server=ServerAddress;Database=DataBaseName;User Id=Username;Pwd=Password;
Oracle
Data Source=DataBaseName;User Id=Username;Password=Password;Integrated Security=no;
PostgreSQL
Host=ServerAddress;Database=DataBaseName;User ID=Username;Password=Password;
-
В поле «Интервал опроса» укажите периодичность автоматической отправки SQL-запросов в СУБД для получения из неё данных. Интервал опроса необходимо указать, чтобы настроить сценарий на срабатывание по событию «Получение сообщения».
-
В поле «Система управления базами данных» выберите тип СУБД:
- MySQL
- MSSQL
- Oracle
- PostgreSQL
-
Нажмите кнопку «Проверить соединение».
- Если проверка соединения не выдала ошибок, нажмите кнопку «Создать».
Создание пути получения данных из СУБД
- Со страницы «Администрирование» приложения перейдите в раздел «Пути передачи данных».
-
Создайте путь передачи данных типа «SQL-подключение — Получение данных из СУБД».
Меню создания пути передачи данных СУБД -
В поле «Подключение» выберите ранее созданное подключение к СУБД, например «Подключение для запроса данных из СУБД».
- В поле «Системное имя» введите уникальное имя пути передачи данных, например
RequestDataFromDBCommunicationRoute
. - В поле «Описание» введите наглядное описание пути передачи данных, например «Путь для запроса данных из СУБД».
- Откройте вкладку «Атрибуты сообщений».
- В поле «Тип сообщения» выберите пункт «Выполнить запрос SELECT».
-
В области «Запрос» нажмите кнопку «Добавить», чтобы создать:
- атрибут
City
типа «Объект» с установленным флажком «Массив» — этот атрибут будет содержать массив названий городов, полученных из внешней БД (системное имя этого атрибута может быть любым).
- атрибут
-
В таблице атрибутов установите флажок у атрибута
City
и нажмите кнопку «Добавить», чтобы создать:- вложенный атрибут
Name
типа «Строка» — этот атрибут будет содержать название города, и его системное имя должно совпадать с именем столбца с названиями городов в таблице, полученной из внешней БД.
Настройка атрибутов сообщений для пути передачи данных - вложенный атрибут
-
Откройте вкладку «Интеграция».
- В поле «Атрибут для хранения полученных записей» укажите системное имя атрибута
City
, созданного на вкладке «Атрибуты сообщений». -
В поле «SQL-запрос» введите запрос для получения записей с названиями городов из внешней БД, указав имя таблицы с названиями городов, которые будут помещены в атрибут
Name
, созданный на шаге 8. Например:SELECT * FROM cities
-
Сохраните путь для получения данных из СУБД.
Настройка параметров интеграции пути получения данных из СУБД
Создание сценария для получения данных из СУБД
- Со страницы «Администрирование» приложения перейдите в раздел «Сценарии».
- Создайте новый сценарий, нажав кнопку «Создать».
-
Настройте свойства сценария:
- Название — введите наглядное название сценария, например «Получение названий городов из СУБД».
- Системное имя — введите уникальное имя сценария, например
getCityNamesFromDB
. - Контекст выполнения — выберите пункт «От имени системы».
-
Сохраните сценарий.
- Откройте конструктор сценария, дважды нажав строку созданного сценария в списке сценариев.
-
В отобразившемся конструкторе сценария нажмите кнопку изменить на элемент «Нажатие кнопки».
Переход к свойствам элемент сценария -
Настройте свойства события:
- Смените «Тип» на «Получение сообщения».
- Контекстный шаблон — укажите шаблон записи «Города», в который необходимо записать названия городов, полученные из внешней БД.
- Подключение — выберите ранее созданное Подключение для запроса данных из СУБД.
- Путь передачи данных — выберите ранее созданный Путь для запроса данных из СУБД.
- Имя переменной — введите имя переменной (это имя может быть любым), в которую будут передаваться данные, полученные из внешней БД, например
CityRecords
.
-
Нажмите кнопку «Добавить действие» под элементом «Получение сообщения».
Добавление действия в сценарий -
Добавьте действие «Повторять по количеству объектов» и настройте его:
- В поле «Переменная» введите наглядное имя переменной для итераций в цикле, например
record
; -
В поле «Атрибут или выражение для поиска объектов» введите следующее выражение:
-
Формула
$$CityRecords->City
-
N3
@prefix session: <http://comindware.com/ontology/session#>.
@prefix var: <http://comindware.com/ontology/session/variable#>.
{
session:context var:CityRecords ?message.
?message var:City ?value.
}
- Здесь:
CityRecords
— имя переменной, указанное в свойствах свойствах события «Получение сообщения».City
— системное имя атрибута-массива, созданного на вкладке «Атрибуты сообщений» в свойствах пути передачи данных.
-
-
Сохраните действие «Повторять по количеству объектов».
Настройка цикла по количеству объектов в сценарии - В поле «Переменная» введите наглядное имя переменной для итераций в цикле, например
-
Внутри действия «Повторять по количеству объектов» добавьте действие «Создать запись» и настройте его:
- В поле «Целевой шаблон записи» выберите шаблон, в котором требуется создавать записи с данными, полученными из внешней БД.
- Сохраните действие «Создать запись».
Настройка действия «Создать запись» в сценарии -
Внутри действия «Создать запись» добавьте действие «Изменить значения атрибутов».
- В действии «Изменить значения атрибутов» на вкладке «Дополнительно» установите флажок «Сбрасывать кэш значений».
-
На вкладке «Основные»:
- Нажмите кнопку «Создать».
- В столбце «Атрибут» выберите атрибут указанного в действии «Создать запись» шаблона, в который будут помещаться названия городов, полученные из внешней БД.
- В столбце «Операция со значениями» выберите пункт «Заменить».
-
В поле «Значение» введите следующее выражение:
-
Формула
$$record->Name
-
N3
@prefix session: <http://comindware.com/ontology/session#>.
@prefix variable: <http://comindware.com/ontology/session/variable#>.
{
session:context variable:record ?records.
?records variable:Name ?value.
}
-
Здесь:
-
record
— имя переменной, заданное на в свойствах действия «Повторять по количеству объектов». -
Name
— системное имя строкового атрибута (в массивеCity
), созданного на вкладке «Атрибуты сообщений» в свойствах пути передачи данных.
-
-
-
Сохраните действие «Изменить значения атрибутов».
Настройка действия «Изменить значения атрибутов» в сценарии -
Должен получиться показанный на следующей иллюстрации сценарий.
Сценарий для сохранения данных из СУБД в шаблон записи
Тестирование сценария
- Дождитесь срабатывания таймера, заданного в поле «Интервал опроса» пути для получения данных из СУБД.
- При срабатывании таймера должен сработать настроенный сценарий.
- Сценарий должен создавать в шаблоне записи «Города» записи с названиями городов, полученных из внешней БД.