Источники данных

# Источники данных 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

Для работы с источниками используется специальная вкладка «Источники данных» (включить можно в меню Окно).

Dts 1.png

Источник данных может быть добавлен или импортирован (с сервера или файла).

Dts 2.png

Вызовите контекстное меню и выберите пункт «Добавить источник данных». В появившейся форме введите название и выберите тип источника.

Dts 3.png

Если в качестве источника предполагается использовать файл excel таблицы, то выберите тип «Excel». Здесь необходимо задать путь к файлу и его имя.

Dts 4.png

Два других типа JDBC и JNDI используют для подключения Баз данных в качестве источника.

В случае JNDI необходимо ввести только имя jndi подключения, зарегистрированного на сервере RunaWFE.
Имя задается в формате

jboss/datasources/<DS>

Например, если в RunaWFE источник задан как

Dts 5 1.png

имя будет следующим

Dts 5 2.png

Остальные параметры подключения (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

 

Все параметры являются обязательными для ввода.

Dts 6.png

Источник может быть экспортирован на сервер или в файл. Для экспорта используйте соответствующий пункт контекстного меню.

Dts 7.png

 

# Работа с источниками на сервере

На сервер источники данных могут быть экспортированы непосредственно с DevStudio или импортированы из файла. Работа с источниками ведется в разделе «Источники данных».

Dts 8.png

Здесь можно загрузить новый источник или удалить существующий.

Для работы JDBC источников обязательно требуется задать пароль. Для этого используется специальный значок в строке jdbc соединения.

Dts 9.png

Dts 10.png

 

Пароли на jdbc источники хранятся только на сервере.

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

Источники данных выгружаются в составе файла с данными, но без паролей.

Для проверки соединение с сервером БД используйте соответствующий значок. В случае успешного соединения откроется окно с полученной информацией о версии.

 

# Использование источников данных в обработчиках

Источники данных могут быть использованы в обработчиках «Выполнить запросы SQL» (DatabaseTaskHandler) и «Внешнее хранилище данных» (ExternalStorageHandler)

Рассмотрим обработчик ExternalStorageHandler, который позволяет работать с таблицами данных (Excel-листы или SQL таблицы базы данных), с помощью простейших действий.

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

Dts 11.png

 

Действия

Действие INSERT

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

Действие SELECT

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

В качестве результата всегда возвращает список, даже если был получен только один элемент..

Действие UPDATE

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

Действие DELETE

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

Условия

Задаются в формате

[имяАтрибута] оператор значение

где

  • [имяАтрибута] — это поле пользовательской переменной, заданной в параметре «Переменная» секции «Атрибут». Квадратные скобки у имени атрибута обязательны.

Замечание. Не допускается использование пробелов в [имениАтрибута], например [Количество мест], условие будет работать некорректно.

 

  • оператор — поддерживаются операторы < , > , <= , >= , != , == , like
  • значение — могут быть использованы как константное значение, например проверка статуса на равенство значению ‘Не обработана’, так и параметры используемые во входных параметрах задачи. Если используется параметр, то перед ним ставят символ @, например @id.

Поддерживаются составные условия с применением скобок и логических операторов AND, OR.

Например, выполнить SELECT для заявок со статусом ‘Не обработана’, у которых ‘Количество мест’ больше или равно 10

[Статус] == 'Не обработана' AND [КоличествоМест] >= 10

Ранее обработчик работал только с Excel листами, в версии RunaWFE 4.4.0 добавлена возможность использовать в качестве источника Базы данных.
Кроме того, имя источника может передаваться в переменной, что позволяет менять его в процессе выполнения БП.

Очень удобно отлаживать процесс используя Excel, а затем просто переключиться на jdbc источник.

Dts 12.png

Рассмотрим примеры конфигураций данного обработчика и результаты их работы.

Пример 1.
Конфигурация для добавления списка товаров на склад.

Используем переменную список пользовательского типа, со следующим набором атрибутов

Dts 13 1.png

Используем обработчик «Внешнее хранилище» в задаче бота «Бот работы с внешним хранилищем». В качестве входного параметра задача будет принимать список товаров.

Dts 13 2.png

Для добавления данных во внешнее хранилище используем действие INSERT. В качестве хранилища для начала используем источник — Excel лист «Склад» в файле Products.xlsx.

Dts 13 3.png

Dts 13 4.png

Вводим список товаров

Dts 13 5.png

После выполнения операции INSERT, будет создан xlsx файл с именем «Products.xlsx», список товаров будет выгружен на лист «Склад»

Dts 13 6.png

Теперь используем в качестве склада таблицу базы данных, например PostgreSQL. Для этого заведем jdbc источник с типом PostgreSQL.

Dts 13 7.png

Экспортируем его на сервер, и уже там зададим пароль.

Переключим задачу бота «Добавить товары на склад» на источник PosgreSQL.

Dts 13 8.png

В результате выполнения в БД будет создана таблица «Склад», содержащая список введенных товаров.

Dts 13 9.png Dts 13 10.png

 

Пример 2.
Запрос со склада товаров определенной группы.

Для чтения данных используем действие SELECT с условием.

Dts 14 1.png

где

  • «Группа» — это атрибут пользовательского типа и соответственно название колонки в таблице «Склад»
  • @группа — входной параметр задачи бота, содержащий название группы товаров

Dts 14 2.png

Считаем группу товаров «Фирменные материалы»

Dts 14 3.png

Пример 3.

В предыдущем примере было выполнено чтение группы товаров. Отредактируем остатки и обновим их на складе.

Для обновления товара воспользуемся действием UPDATE с условием совпадения по названию товара

Dts 15 1.png

Редактируем количество

Dts 15 2.png

Обновленное количество товара

Dts 15 3.png