- 1 # Общее описание
- 2 # Определение источников данных в DevStudio
- 3 # Работа с источниками на сервере
- 4 # Использование источников данных в обработчиках
# Источники данных 4.4.0+. Общее описание
В RunaWFE 4.4.0 добавлено новое представление — «Источники данных».
В качестве источника может выступать База данных или Excel таблица.
Реализована поддержка работы с базами данных MSSQL, Oracle и PostgreSQL. Драйверы для работы с MSSQL и PostgreSQL уже включены в EXE/ISO дистрибутивы RunaWFE.
Важно:
- Для Oracle, а также в случае использования RunaWFE в виде исполнимых файлов java-машины, потребуется дополнительная установка соответствующих драйверов.
- Установка выполняется простым копированием драйвера в директорию .\standalone\wfe.data-sources\drivers, выполнить это можно даже не останавливая сервер RunaWFE.
Источники данных могут быть использованы в обработчиках: «Внешнее хранилище данных» и «Выполнить запросы SQL».
# Определение источников данных в DevStudio
Для работы с источниками используется специальная вкладка «Источники данных» (включить можно в меню Окно).
Источник данных может быть добавлен или импортирован (с сервера или файла).
Вызовите контекстное меню и выберите пункт «Добавить источник данных». В появившейся форме введите название и выберите тип источника.
Если в качестве источника предполагается использовать файл excel таблицы, то выберите тип «Excel». Здесь необходимо задать путь к файлу и его имя.
Два других типа JDBC и JNDI используют для подключения Баз данных в качестве источника.
В случае JNDI необходимо ввести только имя jndi подключения, зарегистрированного на сервере RunaWFE.
Имя задается в формате
jboss/datasources/<DS>
Например, если в RunaWFE источник задан как
имя будет следующим
Остальные параметры подключения (url базы данных, имя пользователя и пароль) должны быть определены в конфигурационных файлах RunaWFE сервера (см. Настройка соединения с БД)
В случае JDBC, необходимо:
- выбрать тип базы данных (поддерживается Oracle, MSSQL, PostgreSQL)
- задать URL подключения
- ввести имя БД
- ввести имя пользователя для подключения
Пароль подключения к БД задается на сервере в разделе «Источники данных», DevStudio не хранит пароли подключения к БД.
Формат url строки подключения зависит от выбранной БД.
Для MSSQL
jdbc:sqlserver://<HOST>:<PORT=1433>;databaseName=<DBNAME>;
например,
jdbc:sqlserver://127.0.01:5103;databaseName=DBNAME;
Для Oracle
jdbc:oracle:thin:@<HOST>:<PORT=1521>:<DBNAME>
например,
jdbc:oracle:thin:@localhost:1521:DBNAME
Для PostgreSQL
jdbc:postgresql://<HOST>:<PORT=5432>/<DBNAME>
например,
jdbc:postgresql://localhost:5432/DBNAME
Все параметры являются обязательными для ввода.
Источник может быть экспортирован на сервер или в файл. Для экспорта используйте соответствующий пункт контекстного меню.
# Работа с источниками на сервере
На сервер источники данных могут быть экспортированы непосредственно с DevStudio или импортированы из файла. Работа с источниками ведется в разделе «Источники данных».
Здесь можно загрузить новый источник или удалить существующий.
Для работы JDBC источников обязательно требуется задать пароль. Для этого используется специальный значок в строке jdbc соединения.
Пароли на jdbc источники хранятся только на сервере.
При экспорте из DevStudio на сервер существующего источника, пароль в обязательном порядке будет сброшен.
Источники данных выгружаются в составе файла с данными, но без паролей.
Для проверки соединение с сервером БД используйте соответствующий значок. В случае успешного соединения откроется окно с полученной информацией о версии.
# Использование источников данных в обработчиках
Источники данных могут быть использованы в обработчиках «Выполнить запросы SQL» (DatabaseTaskHandler) и «Внешнее хранилище данных» (ExternalStorageHandler)
Рассмотрим обработчик ExternalStorageHandler, который позволяет работать с таблицами данных (Excel-листы или SQL таблицы базы данных), с помощью простейших действий.
Данный обработчик должен использоваться только в задаче бота, недопустимо использование в задаче сценария или элементе обработчик.
Действия
Действие INSERT
Предназначено для добавления данных во внешнее хранилище. В качестве входных данных используется переменная пользовательского типа или список из таких переменных.
Действие SELECT
Предназначено для чтения данных из внешнего хранилища, может быть использована с условием. Например, для выборки заявок с определенным статусом.
В качестве результата всегда возвращает список, даже если был получен только один элемент..
Действие UPDATE
Предназначено для обновления переменной пользовательского типа во внешнем хранилище. Обязательно использование условия для определения переменной, которую требуется обновить (иначе будут обновлены все переменные во внешнем хранилище).
Действие DELETE
Предназначено для удаления переменной пользовательского типа из внешнего хранилища. Используется с условием, иначе будут удалены все переменные из внешнего хранилища. В качестве входного параметра в обязательном порядке должна принимать переменную пользовательского типа, для использования ее в параметре «Переменная». Это необходимо для того, чтобы обработчик знал, какие поля размещены во внешнем хранилище.
Условия
Задаются в формате
[имяАтрибута] оператор значение
где
- [имяАтрибута] — это поле пользовательской переменной, заданной в параметре «Переменная» секции «Атрибут». Квадратные скобки у имени атрибута обязательны.
Замечание. Не допускается использование пробелов в [имениАтрибута], например [Количество мест], условие будет работать некорректно.
- оператор — поддерживаются операторы < , > , <= , >= , != , == , like
- значение — могут быть использованы как константное значение, например проверка статуса на равенство значению ‘Не обработана’, так и параметры используемые во входных параметрах задачи. Если используется параметр, то перед ним ставят символ @, например @id.
Поддерживаются составные условия с применением скобок и логических операторов AND, OR.
Например, выполнить SELECT для заявок со статусом ‘Не обработана’, у которых ‘Количество мест’ больше или равно 10
[Статус] == 'Не обработана' AND [КоличествоМест] >= 10
Ранее обработчик работал только с Excel листами, в версии RunaWFE 4.4.0 добавлена возможность использовать в качестве источника Базы данных.
Кроме того, имя источника может передаваться в переменной, что позволяет менять его в процессе выполнения БП.
Очень удобно отлаживать процесс используя Excel, а затем просто переключиться на jdbc источник.
Рассмотрим примеры конфигураций данного обработчика и результаты их работы.
Пример 1.
Конфигурация для добавления списка товаров на склад.
Используем переменную список пользовательского типа, со следующим набором атрибутов
Используем обработчик «Внешнее хранилище» в задаче бота «Бот работы с внешним хранилищем». В качестве входного параметра задача будет принимать список товаров.
Для добавления данных во внешнее хранилище используем действие INSERT. В качестве хранилища для начала используем источник — Excel лист «Склад» в файле Products.xlsx.
Вводим список товаров
После выполнения операции INSERT, будет создан xlsx файл с именем «Products.xlsx», список товаров будет выгружен на лист «Склад»
Теперь используем в качестве склада таблицу базы данных, например PostgreSQL. Для этого заведем jdbc источник с типом PostgreSQL.
Экспортируем его на сервер, и уже там зададим пароль.
Переключим задачу бота «Добавить товары на склад» на источник PosgreSQL.
В результате выполнения в БД будет создана таблица «Склад», содержащая список введенных товаров.
Пример 2.
Запрос со склада товаров определенной группы.
Для чтения данных используем действие SELECT с условием.
где
- «Группа» — это атрибут пользовательского типа и соответственно название колонки в таблице «Склад»
- @группа — входной параметр задачи бота, содержащий название группы товаров
Считаем группу товаров «Фирменные материалы»
Пример 3.
В предыдущем примере было выполнено чтение группы товаров. Отредактируем остатки и обновим их на складе.
Для обновления товара воспользуемся действием UPDATE с условием совпадения по названию товара
Редактируем количество
Обновленное количество товара