BotStationUserGuide: различия между версиями
WikiSysop (обсуждение | вклад) м (1 версия импортирована) |
м |
||
Строка 654: | Строка 654: | ||
[[Image:ru_bots_st_pic79.png]] | [[Image:ru_bots_st_pic79.png]] | ||
</div> | </div> | ||
[[Категория:Документация]] |
Текущая версия на 08:31, 21 апреля 2023
Руководство по работе с бот-станциями
Версия 4.6.0
© 2015-2023, ООО "Процессные технологии"
Концепция ботов и бот-станций
В системе RunaWFE исполнителями заданий могут быть как люди, так и специальные компьютерные приложения – боты. Боты это workflow роботы (специальные программные сущности), заменяющие людей - пользователей системы. С каждым ботом должен быть связан обычный пользователь системы (с логином, паролем, описанием, полномочиями и т.д.). Каждый бот регистрируется в бот-станции, которая периодически активизирует всех зарегистрированных ботов. Бот получает от WF-системы предназначенные связанному с ним пользователю задания и передает их на выполнение сопоставленным им классам-обработчикам заданий. После выполнения задания бот сообщает об этом WF-системе и передает значения соответствующих переменных бизнес-процесса.
Бот-станция – это среда, в которой работают боты. Находящиеся в бот-станции боты периодически опрашивают RunaWFE-сервер. Если выполняющиеся на сервере экземпляры бизнес-процессов содержат задачи для ботов, то боты выполняют эти задачи и возвращают результаты работы на RunaWFE – сервер.
Используя ботов, можно при помощи системы управления бизнес-процессами также решить задачу интеграции разнородных приложений предприятия в единую корпоративную информационную систему: В разных узлах бизнес-процесса через соответствующую задачу боты, связанные с различными информационными системами предприятия, получают из экземпляра бизнес-процесса значения переменных, а также изменяют значения переменных. Таким образом, через значения переменных экземпляра бизнес-процесса разнородные информационные системы предприятия могут обмениваться между собой информацией.
Конфигурация бот станции
Конфигурация RunaWFE сервера, поставляемая по умолчанию содержит одну ботстанцию (localbotstation) и двух ботов, используемых в демонстрационных процессах.
Настройка бот-станций и ботов производится через меню «Бот станции» веб интерфейса RunaWFE. Пользователь будет видеть опцию «Бот станции» в главном меню веб интерфейса, если у него есть права на чтение бот-станций. Для изменения настроек бот-станций необходимо иметь права «Конфигурировать бот-станцию».
У бот-станции можно устанавливать статус – «запущена» - «остановлена». При этом соответственно запускается или останавливается периодическая активация ботов.
Замечание. Вызов ботов в системе может быть неявным. Процессы, содержащие задания для ботов, могут вызывать специальный обработчик при приходе управления в узел, требующий вызова ботов для выполнения задания. Тогда вызов ботов будет произведен неявно, вне зависимости от того, запущена бот-станция или нет.
Как посмотреть список бот-станций и их статус
Надо войти в меню «Бот-станции»:
и кликнуть на имени бот-станции:
Изменение параметров ботов
Для изменения параметров бота необходимо выбрать изменяемого бота на странице информации по бот-станции, перейдя по ссылке с именем бота. Изменение параметров бота предлагается производить в секции “Параметры бота”. После выполнения команды “Применить” новые параметры вступят в силу немедленно без перезапуска системы и будут использованы при очередном вызове ботов.
Параметрами бота являются: имя бота (соответствует логину пользователя), пароль бота, список заданий, выполняемых ботом. Список заданий состоит из имени задания, ссылки на обработчик и конфигурации задания.
# Как завести бота
После того, как в Среде разработки появилась работа с ботами, появилась возможность экспортировать бота в имяБота.bot файл. Загрузка этого файла на WFE сервер дает возможность добавить бота вместе со всеми его задачами. Если при этом в системе нет пользователя с именем бота, то такой пользователь будет автоматически создан. Пользователь с именем бота автоматически связан с ботом. После импорта бота в систему можно изменить пароль для пользователя бота и самого бота, эти пароли должны совпадать.
Для импорта бота перейдите на страницу ботстанции, в которую нужно добавить бота. (Бот станции -> имяБотстанции) На ней в разделе "Загрузить бота" выбрать файл .bot, экспортированный из Среды разработки. Если бот с задачами уже существует в системе и для существующих задач нужно обновить конфигурацию, то поставьте галочку "Замещать ли задачи ботов".
Можно так же использовать старый способ создания бота.
Бота надо сначала завести как обычного пользователя системы, задать ему пароль и дать ему права на логин в систему.
Если у пользователя есть права на создание ботов, то в свойствах бот-станции у него есть команда "добавить бота", а в свойствах бота - "добавить задание".
Для добавления бота в бот-станцию перейдите на страницу с информацией по бот-станции и перейдите по ссылке «Добавить бота».
На странице добавления бота необходимо выбрать пользователя, чьи задания будет выполнять бот (пользователя, которого мы создали специально для этого бота) и указать пароль выбранного пользователя.
Удаление ботов
Для удаления бота из бот-станции перейдите на страницу с информацией по бот-станции и поставьте галочки напротив удаляемых ботов, после чего нажмите на кнопку «Удалить». Боты будут удалены вместе со всеми своими заданиями.
Запуск и остановка периодической активации ботов в бот-станции
На странице «Бот станции» web интерфейса выберите интересующую вас бот-станцию и, перейдя по ссылке с именем бот-станции, вы окажитесь на странице с основной информацией по выбранной бот-станции. В секции «Статус бот-станции» можно узнать, запущенна ли бот-станция (по указанному в свойствах бот-станции адресу) и периодическая активация ботов. Для запуска или остановки периодической активации ботов, необходимо нажать на кнопку в секции «Статус бот-станции».
Для того, чтобы запустить периодическую активацию ботов надо в меню «бот-станции» кликнуть на кнопку «запустить периодическую активацию ботов»
Замечание. Вызов ботов в системе может быть неявным. Процессы, содержащие задания для ботов, могут вызывать BotInvokerActionHandler при приходе управления в состояние, требующее вызов ботов для выполнения задания. Тогда вызов ботов будет произведен неявно, вне зависимости от того, запущена периодическая активация ботов или нет.
Изменение конфигурации обработчиков ботов
Перейдите на страницу информации бота, конфигурацию которого необходимо изменить. Изменение конфигурации возможно следующими путями:
- Загрузка предварительно написанного файла конфигурации с использованием кнопки «Browse» напротив задания, для которого меняется конфигурация.
- Ссылка «Редактировать» напротив задания, для которого меняется конфигурация позволит отредактировать текущую конфигурацию. Для корректной работы необходима поддержка javascript со стороны браузера.
Если нужно удалить задание, то необходимо снять галочку напротив удаляемого задания и нажать на кнопку «Применить» в секции «Задания». После этого удаленное задание исчезнет из списка заданий для бота.
Подробнее о файлах конфигураций обработчиков.
Как добавить задание для бота.
После того, как в Среду разработки была добавлена функциональность по работе с ботами, стало возможным экспортировать из Среды разработки не только бота целиком, но и отдельные задачи бота в файл имяБота.имяЗадачи.bot.
Для импорта задачи бота на сервер перейдите на страницу ботстанции, где находится бот для задачи. (Бот станции -> имяБотстанции). На ней в разделе "Загрузить бота" выбрать файл .bot, экспортированный из Среды разработки. Если задача уже существует в системе, то поставьте галочку "Замещать ли задачи ботов". Нажмите на кнопку "Загрузить бота". После этого добавится новая задача или задача обновится, если она уже существовала.
Если требуется создать новое задание для бота, то перейдите по ссылке «Добавить», после чего у бота появится новое пустое задание. Далее введите название задания, выберите обработчик и задайте конфигурацию.
После нажатия на кнопку “Применить” новые параметры вступят в силу немедленно без перезапуска системы и будут использованы при очередном вызове ботов.
Далее эта процедура описана подробнее:
Для добавления задания боту необходимо кликнуть на ссылку «Добавить» в свойствах бота.
У задания есть имя задания, класс-обработчик задания и конфигурация.
Введите имя задания в соответствующее поле:
Класс-обработчик задания можно выбрать из выпадающего списка.
Нажмите кнопку "Обзор" в столбце "Конфигурация" и выберите текстовый файл с конфигурацией. После чего нажмите «Применить».
После загрузки файла конфигурации его можно просматривать и редактировать прямо из веб-интерфейса:
Что такое классы-обработчики заданий.
Каждый бот умеет выполнять некоторый набор заданий. Каждое задание должно быть связано с java классом – обработчиком задания, который, собственно и будет выполнять поступившее боту задание. Несколько заданий бота могут быть связаны с одним и тем же классом обработчиком.
Класс-обработчик заданий для бота должен реализовывать интерфейс ru.runa.wf.logic.TaskHandler. Интерфейс содержит следующие методы:
- handle(Subject subject, TaskStub taskStub) – обработка задания
- configure(String configurationName) – чтение конфигурации из файла с именем configurationName
- configure(byte[] configuration) — чтение конфигурации, хранящейся в базе данных и переданной боту в виде массива байтов.
В системе RunaWFE уже разработаны некоторые классы-обработчики заданий. Основные:
- ru.runa.wf.logic.bot.DatabaseTaskHandler – операции с таблицами баз данных
- ru.runa.wf.logic.bot.StopProcessHandler – остановка бизнес-процесса
- ru.runa.wf.logic.bot.DoNothingTaskHandler – простейший образец обработчика задания
- ru.runa.wf.logic.bot.EmailTaskHandler – обработчик, посылающий текстовое сообщение через почтовый сервер
- ru.runa.wf.logic.bot.MSWordReportTaskHandler – обработчик, генерирующий MS Word файл
- ru.runa.wf.logic.bot.WebServiceTaskHandler – бот для передачи данных стороннему web сервису
- ru.runa.wf.logic.bot.StartProcessTaskHandler – бот для запуска процесса
Конфигурации для ботов, работающих с БД задаются XML файлами, соответствующими XML схеме database-tasks.xsd. Атрибуты элемента <task> этой схемы (driver и url) определяют имя класса JDBC-драйвера для подключения к БД и URL подключения (в соответствии с форматом, поддерживаемым драйвером).
Замечание: URL должно обязательно содержать имя пользователя, под которым осуществляется подключение к БД и его пароль.
Конфигурации ботов, отсылающих e-mail сообщения, задаются файлами свойств (.properties) имеющие кодировку utf8. Свойство smtp.server указывает SMTP сервер, через который осуществляется отсылка сообщений, свойства from, to, reply.to, cc, bcc и subject соответствуют одноименным полям заголовка SMTP.
Для Word-бота был разработан новый обработчик (MSWordReportTaskHandler): добавлен mapping переменных бизнес-процессов на закладки MS Word. Структура конфигурационного файла нового обработчика определяются схемой msword-report-task.xsd
Для WebServiceTaskHandler настройки задаются XML файлами, соответствующими XML схеме webServiceTaskHandlerConfig.xsd. Главные параметры: url – URL по которому обращаться к web сервису, request-method - метод HTTP запроса (POST, GET и т.п.), interaction (типа request) — xml, отправляемый в качестве запроса web-сервису. В запросе можно использовать специальные теги для получения информации из wfe: <runawfe:variable name="имя_переменной"/> - для получения значения переменной, <runawfe:processId/> - для получения (id) текущего экземпляра процесса и т.п.
Работа с ботами и бот станциями в среде разработки бизнес-процессов.
Среда разработки бизнес-процессов
Начиная с версии RunaWFE 3.6, графический редактор бизнес-процессов (GPD) был преобразован в среду разработки бизнес-процессов (Developer Studio), главным отличием которой является возможность вести разработку ботов и бот станций непосредственно в Developer Studio.
Добавление бот станции
Работа с бот станциями, ботами и их заданиями в среде разработки выполняется на вкладке Боты:
Для начала необходимо добавить бот станцию. Это можно сделать двумя способами: создать новую или импортировать существующую. При чем импорт возможно выполнить как из файла так и непосредственно с сервера WFE. Рассмотрим оба варианта.
Для создания новой бот станции вызовете контекстное меню и выберите “Новая бот станция”
В появившемся окне необходимо ввести параметры новой бот станции: название, RMI-адрес, а также расположение.
По нажатию кнопки “Готово”, созданная станция отобразится в окне “Боты”
Для импорта же существующей бот станции необходимо вызвать контекстное меню, в котором выбрать “Импорт бот станции”
Для импорта из файла необходимо выбрать “Импорт из файла”, после чего нажать кнопку “Выбрать”, в появившемся окне выделить файл бот станции (расширение файла *.botstation) и нажать “Открыть”
Для импорта c сервера необходимо выбрать пункт “импорт с сервера WFE”, будет автоматически выполнена синхронизация, после чего ниже отобразится список доступных для импорта бот станций.
“Настройка соединения” – вызовет окно для ввода параметров соединения с сервером WFE “Синхронизация” – выполнится синхронизация с сервером WFE , список доступных для импорта станций будет обновлен
После вышеописанных действий нажмите “Готово”, импортированная бот станция появится в окне вкладки “Боты”
Параметры бот станций возможно отредактировать, для этого выделите станцию в списке, вызовите контекстное меню и выберите пункт “Редактировать”, в появившемся окне будут доступны для изменения текущие параметры бот станции:
Кроме того бот станцию возможно удалить, а также экспортировать, для этого используются соответствующие пункты меню: “Удалить” и “Экспорт бот станции”, или соответствующие значки, расположенные на панеле Среды разработки:
Действия необходимые для выполнения Экспорта бот станции выполняются по аналогии с описанным ранее процессом Импорта. Есть возможность экспорта в файл или на сервер WFE
При этом будет экспортирована не только бот станция, но и боты с задачами, входящими в данную станцию.
Добавление ботов
Для создания нового бота выполните следующий ряд действий:
- выделите бот станцию,
- вызовите контекстное меню,
- выберите пункт “Новый бот”
В появившемся окне необходимо ввести Имя создаваемого бота, также здесь имеется возможность выбора бот станции:
После нажатия “Готово”, созданный бот будет добавлен в бот станцию:
Добавить бота в станцию возможно с помощью импорта, используя соответствующий пункт контекстного меню. Поддерживается импорт из файла или сервера wfe.
Над полученным ботом можно выполнить ряд стандартных операций:
- переименование;
- удаление;
- экспорт (вместе с ботом будут экспортированы и его задачи).
# Задача бота
Начиная с версии 3.6, различают следующие виды обработчиков, конфигураций и задач:
- Простой обработчик: класс, реализующий TaskHandler
- Параметризованный обработчик: класс, реализующий ParamBasedTaskHandler.
- Простая конфигурация: конфигурация без ограничений на формат
- Параметризованная конфигурация обработчика: конфигурация в определенном XML формате
- Расширенная конфигурация: конфигурация, являющаяся дочерней по отношению к простой конфигурации в рамках простого обработчика. Отличается наличием параметров в ней же.
- Простая задача бота: задача бота, имеющая простой обработчик и простую конфигурацию;
- Параметризованная задача бота: задача бота, имеющая параметризованный обработчик и параметризованную конфигурацию (имеет фиксированный набор параметров, конфигурация имеет предопределенный формат);
- Расширенная задача бота: задача бота, имеющая простой обработчик и расширенную конфигурацию;
Имеется возможность создать новую задачу или импортировать существующую (из файла или сервера wfe), для этого необходимо воспользоваться контекстным меню бота или же панелью со значками, расположенной под основным меню:
- “Новая задача” – используется для создания простой и параметризованной задачи бота;
- “Новая задача с формальными параметрами” – используется для создания расширенной задачи бота
Простая задача
Используйте "Новая задача бота" для создания простой задачи бота. В появившейся форме введите название задания и нажмите "Готово".
Далее выберите из списка класс обработчика
Задайте конфигурацию задачи, для этого нажмите “Изменить” напротив метки “Конфигурация”. В открывшемся окне введите конфигурацию обработчика:
Нажмите кнопку “OK” для сохранения задачи:
Расширенная задача
Процесс создания расширенной задачи отличается от простой, и состоит из следующих действий:
- выбор класса обработчика;
- создание формальных параметров для конфигурации;
- создание конфигурации;
Для создания расширенной задачи используйте "Новая задача бота с формальными параметрами".
После ввода названия задания бота, откроется редактор следующего вида:
Как видно, здесь кроме класса обработчика и конфигурации необходимо добавить формальные входные и выходные параметры.
Нажмите кнопку “Добавить”, в появившемся окне введите названия параметра и выберите его тип:
Кроме того тут имеются следующие опции:
- "Использовать этот параметр для привязки к переменной" - если галочка не стоит то параметр задается значением константы, а не переменной.
- "Этот параметр обязательный" - если галочка не стоит, то при привязке задачи к узлу процесса можно не выбирать никакой переменной для формального параметра.
После добавления всех необходимых параметров (входных и выходных) обработчика, необходимо создать конфигурацию. Например для обработчика ru.runa.wf.office.doc.DocxHandler форма для редактирования конфигурации будет иметь следующий вид:
Добавленные формальные переменные доступны для использования в конфигурации обработчика, например на следующем скриншоте видно, как в качестве входного файла задана файловая переменная fileIn, являющаяся формальным параметром
Параметризованная задача
Для создания такой задачи используйте "Новая задача бота", также как и в случае создания простой задачи.
Введите название задания.
Далее выберите из списка параметризованный обработчик, например такими являются: "Добавить объект в список", "Загрузить файл из файловой системы", "Обнулить переменную" и т.д.
После этого будет автоматически добавлен фиксированный набор входных и выходных параметров данной параметризованной задачи.
Конфигурация имеет предопределенный формат и задается в файле конфигурации при добавлении обработчика в Среду разработки. Подробнее смотрите в добавление параметризированного обработчика
Использование ботов в процессах
Начиная с версии 3.6 механизм использования ботов в процессе изменился и выбирается в зависимости от типа задачи бота.
Инициализация роли ботом
Для того чтобы в разрабатываемом процессе использовать задачу бота необходимо для начала создать Роль и проинициализировать ее ботом. Для этого выделите необходимую роль и нажмите “Изменить”:
В вызванном окне инициализатора перейдите на вкладку “Бот”, выберите из списка “исполнитель по имени” необходимого бота, и нажмите “OK”
При этом роль будет проинициализирована ботом
Привязка бот задания
Для использования задачи бота в узле, в качестве исполнителя должна быть выбрана роль, инициализированная ботом.
Далее необходимо выбрать задачу данного бота. При этом все зависит от ее типа (простая, расширенная или параметризованная).
Если предполагается использовать простую задачу бота, то в данном случае работает “старый механизм” привязки, который использовался в более ранних версиях. Т.е. название узла должно полностью совпадать с названием задачи. При этом в контекстном меню узла, пункт “задача бота” теперь будет указывать на конфигурацию задачи:
Клик по данному пункту приведет к быстрому переходу на задачу бота.
В случае если предполагается использовать расширенную или параметризированную задачу, то нет необходимости в том, чтобы узел совпадал с названием задачи. Для привязки задачи вызовите контекстное меню и выберите “Привязать”
Будет открыто окно со списком доступных задач (расширенных или параметризированных):
После выбора задачи необходимо будет установить соответствие между формальными параметрами данной задачи и переменными процесса:
На этом привязка задачи бота будет закончена. В контекстном меню узла доступна возможность редактирования параметров, отвязывания задачи бота, а также быстрый переход на конфигурацию обработчика.
Пример разработки расширенной задачи бота на основе обработчика SQLTaskHandler и использование ее в процессе
Краткое описание процесса:
Добавим боту UniversalBot из станции localbotstation новую задачу с формальными параметрами, на основе обработчика SQLTaskHandler, в конфигурации используем простой SQL запрос, результатом выполнения которого будет полное имя пользователя, входные данные – логин пользователя. Далее создадим процесс, в одном из узлов которого задействуем разработанное бот задание, установим соответствие переменных процесса и формальных параметров задачи, экспортируем и выполним разработанный процесс.
Импортируем с сервера wfe бот станцию localbotstation, для этого вызовем меню импорта бот станций, выберем “импорт с сервера wfe”, при этом автоматически выполнится синхронизация и в списке доступных станций появится localbotstation:
Выделите localbotstation и нажмите “Готово”
На вкладке “Боты” появится станция localbotstation вместе с ботами и их задачами:
Добавим новую расширенную задачу боту UniversalBot, для этого в контекстном меню данного бота выберем пункт "Новая задача бота с формальными переменными"
Вводим название данной задачи - “GetFullName”
В качестве обработчика выберите ru.runa.wf.logic.bot.SQLTaskHandler
Далее необходимо задать формальные параметры и конфигурацию обработчика. Т.к. предполагается, что задача будет получать полное имя исполнителя по его логину, то входной параметр будет один. Нажмите “Добавить” входной параметр, в появившемся окне введите Имя и атрибут данного параметра:
Выходной параметр также будет один, добавим и его:
В обоих случаях атрибут (тип) формальных параметров – Строка
Далее необходимо задать конфигурацию данного обработчика:
<?xml version="1.0" encoding="UTF-8"?> <database-tasks xmlns="http://runa.ru/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://runa.ru/xml database-tasks.xsd"> <task datasource="java:/DefaultDS"> <queries> <query sql="SELECT FULL_NAME FROM EXECUTOR WHERE NAME=?"> <param var="ParamName"/> <result var="Result"/> </query> </queries> </task> </database-tasks>
Здесь:
- datasourse – это (jndi name) имя источника данных, зарегистрированного на сервере (для jboss используется префикс java:/);
- query sql – непосредственно sql запрос к БД, выполняющий выборку полного имени пользователя по его имени (логину), при этом тут используется знак ?, с помощью которого помечается место подстановки входного параметра;
- param var – входной формальный параметр;
- result var – выходной параметр, в последствии будет содержать результат выполнения запроса (полное имя пользователя);
Сохраним разработанную задачу. Далее необходимо экспортировать ее на сервер wfe, для этого выделите ее в списке, вызовите контекстное меню, и выберите пункт “Экспортировать задачу бота”
Выполняем экспорт:
Теперь бот UniversalBot имеет задачу GetFullName
Перейдем к разработке процесса. Создаем новый процесс с именем SqlProcTask
С помощью графических элементов, создадим следующий граф процесса:
Используем две роли:
При этом для роли bot используем инициализатор:
В элементе “Начало”, а также узле OutputFullName выбираем Роль1, которая будет инициализирована исполнителем запустившим экземпляр процесса. В узле с названием Task выбираем роль bot
Создадим переменные процесса: name (Строка), full (Строка)
В начальном узле создадим форму для ввода имени пользователя, используем тег InputVariable, в качестве параметра выбираем переменную name:
В узле “Output FullName” также создаем форму, предназначенную для отображения полного имени пользователя. Используем тег “DisplayVariable”, выводим name и full:
Теперь переходим к задачи бота. Выделим узел Task, вызовем контекстное меню с помощью правой клавиши мыши, выберем пункт “Задача бота/Привязать”
Выбираем из списка задачу GetFullName
Затем выполняем установку соответствия между формальными параметрами задачи и переменными процесса:
На данном этапе получили процесс в котором используется привязанная задача бота, выполняющая запрос к БД для определения полного имени пользователя по его логину. Экспортируем процесс и проверяем корректность его выполнения.
Бот станция localbotstation запущена, периодическая активация ботов также запущена:
Запускаем и выполняем процесс SqlProcTask. Вводим имя пользователя – julius, нажимаем запустить.
В результате будет вызвана задача GetFullName, бота UniversalBot и получено полное имя пользователя julius