Руководство по работе с бот-станциями

Концепция ботов и бот-станций

В системе RunaWFE исполнителями заданий могут быть как люди, так и специальные компьютерные приложения – боты. Боты это workflow роботы (специальные программные сущности), заменяющие людей — пользователей системы. С каждым ботом должен быть связан обычный пользователь системы (с логином, паролем, описанием, полномочиями и т.д.). Каждый бот регистрируется в бот-станции, которая периодически активизирует всех зарегистрированных ботов. Бот получает от WF-системы предназначенные связанному с ним пользователю задания и передает их на выполнение  сопоставленным им классам-обработчикам заданий. После выполнения задания бот сообщает об этом WF-системе и передает значения соответствующих переменных бизнес-процесса.

Бот-станция – это среда, в которой работают боты. Находящиеся в бот-станции боты периодически опрашивают RunaWFE-сервер. Если выполняющиеся на сервере экземпляры бизнес-процессов содержат задачи для ботов, то боты выполняют эти задачи и возвращают результаты работы на RunaWFE – сервер.

Используя ботов, можно при помощи системы управления бизнес-процессами также решить задачу интеграции разнородных приложений предприятия в единую корпоративную информационную систему: В разных узлах бизнес-процесса через соответствующую задачу боты, связанные с различными информационными системами предприятия, получают из экземпляра бизнес-процесса значения переменных, а также  изменяют значения переменных. Таким образом, через значения переменных экземпляра бизнес-процесса разнородные информационные системы предприятия могут обмениваться между собой информацией.

Конфигурация бот станции

Конфигурация RunaWFE сервера, поставляемая по умолчанию содержит одну ботстанцию (localbotstation) и двух ботов, используемых в демонстрационных процессах.

Настройка бот-станций и ботов производится через меню «Бот станции» веб интерфейса RunaWFE. Пользователь будет видеть опцию «Бот станции» в главном меню веб интерфейса, если у него есть права на чтение бот-станций. Для изменения настроек бот-станций необходимо иметь права «Конфигурировать бот-станцию».

У бот-станции можно устанавливать статус – «запущена» — «остановлена». При этом соответственно запускается или останавливается периодическая активация ботов.

Замечание. Вызов ботов в системе может быть неявным. Процессы, содержащие задания для ботов, могут вызывать специальный обработчик при приходе управления в узел, требующий вызова ботов для выполнения задания. Тогда вызов ботов будет произведен неявно, вне зависимости от того, запущена бот-станция или нет.

Как посмотреть список бот-станций и их статус

Надо войти в меню «Бот-станции»:

Ima3 1.png

и кликнуть на имени бот-станции:

Ima4 1.png

Изменение параметров ботов

Для изменения параметров бота необходимо выбрать изменяемого бота на странице информации по бот-станции, перейдя по ссылке с именем бота. Изменение параметров бота предлагается производить в секции “Параметры бота”. После выполнения команды “Применить” новые параметры вступят в силу немедленно без перезапуска системы и будут использованы при очередном вызове ботов.

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

 

Ima5 1.png

# Как завести бота

После того, как в Среде разработки появилась работа с ботами, появилась возможность экспортировать бота в имяБота.bot файл. Загрузка этого файла на WFE сервер дает возможность добавить бота вместе со всеми его задачами. Если при этом в системе нет пользователя с именем бота, то такой пользователь будет автоматически создан. Пользователь с именем бота автоматически связан с ботом. После импорта бота в систему можно изменить пароль для пользователя бота и самого бота, эти пароли должны совпадать.

Для импорта бота перейдите на страницу ботстанции, в которую нужно добавить бота. (Бот станции -> имяБотстанции)
На ней в разделе «Загрузить бота» выбрать файл .bot, экспортированный из Среды разработки. Если бот с задачами уже существует в системе и для существующих задач нужно обновить конфигурацию, то поставьте галочку «Замещать ли задачи ботов».

Pic8 1 ru.png

Можно так же использовать старый способ создания бота.

Бота надо сначала завести как обычного пользователя системы, задать ему пароль и дать ему права на логин в систему.

Если у пользователя есть права на создание ботов, то в свойствах бот-станции у него есть команда «добавить бота», а в свойствах бота — «добавить задание».

Для добавления бота в бот-станцию перейдите на страницу с информацией по бот-станции и перейдите по ссылке «Добавить бота».

Pic6 ru.jpg

На странице добавления бота необходимо выбрать пользователя, чьи задания будет выполнять бот (пользователя, которого мы создали специально для этого бота) и указать пароль выбранного пользователя.

Pic7 ru.jpg

Удаление ботов

Для удаления бота из бот-станции перейдите на страницу с информацией по бот-станции и поставьте галочки напротив удаляемых ботов, после чего нажмите на кнопку «Удалить». Боты будут удалены вместе со всеми своими заданиями.

Запуск и остановка периодической активации ботов в бот-станции

На странице «Бот станции» web интерфейса выберите интересующую вас бот-станцию и, перейдя по ссылке с именем бот-станции, вы окажитесь на странице с основной информацией по выбранной бот-станции. В секции «Статус бот-станции» можно узнать, запущенна ли бот-станция (по указанному в свойствах бот-станции адресу) и периодическая активация ботов. Для запуска или остановки периодической активации ботов, необходимо нажать на кнопку в секции «Статус бот-станции».

Для того, чтобы запустить периодическую активацию ботов надо в меню «бот-станции» кликнуть на кнопку «запустить периодическую активацию ботов»

 

Pic8 ru.png

Замечание. Вызов ботов в системе может быть неявным. Процессы, содержащие задания для ботов, могут вызывать BotInvokerActionHandler при приходе управления в состояние, требующее вызов ботов для выполнения задания. Тогда вызов ботов будет произведен неявно, вне зависимости от того, запущена периодическая активация ботов или нет.

Ima14 1.png

Изменение конфигурации обработчиков ботов

Перейдите на страницу информации бота, конфигурацию которого необходимо изменить. Изменение конфигурации возможно следующими путями:

  • Загрузка предварительно написанного файла конфигурации с использованием кнопки «Browse» напротив задания, для которого меняется конфигурация.
  • Ссылка «Редактировать» напротив задания, для которого меняется конфигурация позволит отредактировать текущую конфигурацию. Для корректной работы необходима поддержка javascript со стороны браузера.

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

Подробнее о файлах конфигураций обработчиков.

Как добавить задание для бота.

После того, как в Среду разработки была добавлена функциональность по работе с ботами, стало возможным экспортировать из Среды разработки не только бота целиком, но и отдельные задачи бота в файл имяБота.имяЗадачи.bot.

Для импорта задачи бота на сервер перейдите на страницу ботстанции, где находится бот для задачи. (Бот станции -> имяБотстанции). На ней в разделе «Загрузить бота» выбрать файл .bot, экспортированный из Среды разработки. Если задача уже существует в системе, то поставьте галочку «Замещать ли задачи ботов». Нажмите на кнопку «Загрузить бота». После этого добавится новая задача или задача обновится, если она уже существовала.

Pic8 1 ru.png

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

После нажатия на кнопку “Применить” новые параметры вступят в силу немедленно без перезапуска системы и будут использованы при очередном вызове ботов.

Далее эта процедура описана подробнее:

Для добавления задания боту необходимо кликнуть на ссылку «Добавить» в свойствах бота.

Pic9 ru.png

У задания есть имя задания, класс-обработчик задания и конфигурация.

Введите имя задания в соответствующее поле:

Pic10 ru.png

Класс-обработчик задания можно выбрать из выпадающего списка.

Pic11 ru.png

Нажмите кнопку «Обзор» в столбце «Конфигурация» и выберите текстовый файл с конфигурацией. После чего нажмите «Применить».

После загрузки файла конфигурации его можно просматривать и редактировать прямо из веб-интерфейса:

Pic13 ru.png

Что такое классы-обработчики заданий.

Каждый бот умеет выполнять некоторый набор заданий. Каждое задание должно быть связано с 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.

Добавление бот станции

Работа с бот станциями, ботами и их заданиями в среде разработки выполняется на вкладке Боты:

Ru bots st pic1.png

Для начала необходимо добавить бот станцию. Это можно сделать двумя способами: создать новую или импортировать существующую. При чем импорт возможно выполнить как из файла так и непосредственно с сервера WFE. Рассмотрим оба варианта.

Для создания новой бот станции вызовете контекстное меню и выберите “Новая бот станция”

Ru bots st pic2.png

В появившемся окне необходимо ввести параметры новой бот станции: название, RMI-адрес, а также расположение.

Ru bots st pic3.png

По нажатию кнопки “Готово”, созданная станция отобразится в окне “Боты”

Для импорта же существующей бот станции необходимо вызвать контекстное меню, в котором выбрать “Импорт бот станции”

Ru bots st pic4.png

Для импорта из файла необходимо выбрать “Импорт из файла”, после чего нажать кнопку “Выбрать”, в появившемся окне выделить файл бот станции (расширение файла *.botstation) и нажать “Открыть”

Для импорта c сервера необходимо выбрать пункт “импорт с сервера WFE”, будет автоматически выполнена синхронизация, после чего ниже отобразится список доступных для импорта бот станций.

Ru bots st pic5.png

“Настройка соединения” – вызовет окно для ввода параметров соединения с сервером WFE
“Синхронизация” – выполнится синхронизация с сервером WFE , список доступных для импорта станций будет обновлен

После вышеописанных действий нажмите “Готово”, импортированная бот станция появится в окне вкладки “Боты”

Ru bots st pic6.png

Параметры бот станций возможно отредактировать, для этого выделите станцию в списке, вызовите контекстное меню и выберите пункт “Редактировать”, в появившемся окне будут доступны для изменения текущие параметры бот станции:

Ru bots st pic7.png

Ru bots st pic8.png

Кроме того бот станцию возможно удалить, а также экспортировать, для этого используются соответствующие пункты меню: “Удалить” и “Экспорт бот станции”, или соответствующие значки, расположенные на панеле Среды разработки:

Ru bots st pic9.png

Действия необходимые для выполнения Экспорта бот станции выполняются по аналогии с описанным ранее процессом Импорта. Есть возможность экспорта в файл или на сервер WFE

Ru bots st pic10.png

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

Добавление ботов

Для создания нового бота выполните следующий ряд действий:

  • выделите бот станцию,
  • вызовите контекстное меню,
  • выберите пункт “Новый бот”

Ru bots st pic11.png

В появившемся окне необходимо ввести Имя создаваемого бота, также здесь имеется возможность выбора бот станции:

Ru bots st pic12.png

После нажатия “Готово”, созданный бот будет добавлен в бот станцию:

Ru bots st pic13.png

Добавить бота в станцию возможно с помощью импорта, используя соответствующий пункт контекстного меню. Поддерживается импорт из файла или сервера wfe.

Ru bots st pic14.png

Над полученным ботом можно выполнить ряд стандартных операций:

  • переименование;
  • удаление;
  • экспорт (вместе с ботом будут экспортированы и его задачи).

# Задача бота

Начиная с версии 3.6, различают следующие виды обработчиков, конфигураций и задач:

  • Простой обработчик: класс, реализующий TaskHandler
  • Параметризованный обработчик: класс, реализующий ParamBasedTaskHandler.
  • Простая конфигурация: конфигурация без ограничений на формат
  • Параметризованная конфигурация обработчика: конфигурация в определенном XML формате
  • Расширенная конфигурация: конфигурация, являющаяся дочерней по отношению к простой конфигурации в рамках простого обработчика. Отличается наличием параметров в ней же.
  • Простая задача бота: задача бота, имеющая простой обработчик и простую конфигурацию;
  • Параметризованная задача бота: задача бота, имеющая параметризованный обработчик и параметризованную конфигурацию (имеет фиксированный набор параметров, конфигурация имеет предопределенный формат);
  • Расширенная задача бота: задача бота, имеющая простой обработчик и расширенную конфигурацию;

Имеется возможность создать новую задачу или импортировать существующую (из файла или сервера wfe), для этого необходимо воспользоваться контекстным меню бота или же панелью со значками, расположенной под основным меню:

Ru bots st pic15.png

  • “Новая задача” – используется для создания простой и параметризованной задачи бота;
  • “Новая задача с формальными параметрами” – используется для создания расширенной задачи бота

Простая задача

Используйте «Новая задача бота» для создания простой задачи бота. В появившейся форме введите название задания и нажмите «Готово».

Ru bots st pic16.png

Далее выберите из списка класс обработчика

Ru bots st pic17.png

Задайте конфигурацию задачи, для этого нажмите “Изменить” напротив метки “Конфигурация”. В открывшемся окне введите конфигурацию обработчика:

Ru bots st pic18.png

Нажмите кнопку “OK” для сохранения задачи:

Ru bots st pic19.png

Расширенная задача

Процесс создания расширенной задачи отличается от простой, и состоит из следующих действий:

  • выбор класса обработчика;
  • создание формальных параметров для конфигурации;
  • создание конфигурации;

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

После ввода названия задания бота, откроется редактор следующего вида:

Ru bots st pic20.png

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

Нажмите кнопку “Добавить”, в появившемся окне введите названия параметра и выберите его тип:

Ru bots st pic21.png

Кроме того тут имеются следующие опции:

  • «Использовать этот параметр для привязки к переменной» — если галочка не стоит то параметр задается значением константы, а не переменной.
  • «Этот параметр обязательный» — если галочка не стоит, то при привязке задачи к узлу процесса можно не выбирать никакой переменной для формального параметра.

После добавления всех необходимых параметров (входных и выходных) обработчика, необходимо создать конфигурацию. Например для обработчика ru.runa.wf.office.doc.DocxHandler форма для редактирования конфигурации будет иметь следующий вид:

Ru bots st pic22.png

Добавленные формальные переменные доступны для использования в конфигурации обработчика, например на следующем скриншоте видно, как в качестве входного файла задана файловая переменная fileIn, являющаяся формальным параметром

Ru bots st pic23.png

Параметризованная задача

Для создания такой задачи используйте «Новая задача бота», также как и в случае создания простой задачи.

Введите название задания.

Далее выберите из списка параметризованный обработчик, например такими являются: «Добавить объект в список», «Загрузить файл из файловой системы», «Обнулить переменную» и т.д.

Bots st pic23 1.png

После этого будет автоматически добавлен фиксированный набор входных и выходных параметров данной параметризованной задачи.

Bots st pic23 2.png

Конфигурация имеет предопределенный формат и задается в файле конфигурации при добавлении обработчика в Среду разработки.

Использование ботов в процессах

Начиная с версии 3.6 механизм использования ботов в процессе изменился и выбирается в зависимости от типа задачи бота.

Инициализация роли ботом

Для того чтобы в разрабатываемом процессе использовать задачу бота необходимо для начала создать Роль и проинициализировать ее ботом. Для этого выделите необходимую роль и нажмите “Изменить”:

Ru bots st pic24.png

В вызванном окне инициализатора перейдите на вкладку “Бот”, выберите из списка “исполнитель по имени” необходимого бота, и нажмите “OK”

Ru bots st pic25.png

При этом роль будет проинициализирована ботом

Ru bots st pic26.png

Привязка бот задания

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

Ru bots st pic27.png

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

Если предполагается использовать простую задачу бота, то в данном случае работает “старый механизм” привязки, который использовался в более ранних версиях. Т.е. название узла должно полностью совпадать с названием задачи. При этом в контекстном меню узла, пункт “задача бота” теперь будет указывать на конфигурацию задачи:

Ru bots st pic28.png

Клик по данному пункту приведет к быстрому переходу на задачу бота.

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

Ru bots st pic29.png

Будет открыто окно со списком доступных задач (расширенных или параметризированных):

Ru bots st pic30.png

После выбора задачи необходимо будет установить соответствие между формальными параметрами данной задачи и переменными процесса:

Ru bots st pic31.png

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

Ru bots st pic32.png

Пример разработки расширенной задачи бота на основе обработчика SQLTaskHandler и использование ее в процессе

Краткое описание процесса:

Добавим боту UniversalBot из станции localbotstation новую задачу с формальными параметрами, на основе обработчика SQLTaskHandler, в конфигурации используем простой SQL запрос, результатом выполнения которого будет полное имя пользователя, входные данные – логин пользователя. Далее создадим процесс, в одном из узлов которого задействуем разработанное бот задание, установим соответствие переменных процесса и формальных параметров задачи, экспортируем и выполним разработанный процесс.

Импортируем с сервера wfe бот станцию localbotstation, для этого вызовем меню импорта бот станций, выберем “импорт с сервера wfe”, при этом автоматически выполнится синхронизация и в списке доступных станций появится localbotstation:

Ru bots st pic33.png

Выделите localbotstation и нажмите “Готово”

На вкладке “Боты” появится станция localbotstation вместе с ботами и их задачами:

Ru bots st pic34.png

Добавим новую расширенную задачу боту UniversalBot, для этого в контекстном меню данного бота выберем пункт «Новая задача бота с формальными переменными»

Ru bots st pic35.png

Вводим название данной задачи — “GetFullName”

Ru bots st pic36.png

В качестве обработчика выберите ru.runa.wf.logic.bot.SQLTaskHandler

Ru bots st pic37.png

Далее необходимо задать формальные параметры и конфигурацию обработчика. Т.к. предполагается, что задача будет получать полное имя исполнителя по его логину, то входной параметр будет один. Нажмите “Добавить” входной параметр, в появившемся окне введите Имя и атрибут данного параметра:

Ru bots st pic38.png

Выходной параметр также будет один, добавим и его:

Ru bots st pic39.png

В обоих случаях атрибут (тип) формальных параметров – Строка

Далее необходимо задать конфигурацию данного обработчика:

<?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, для этого выделите ее в списке, вызовите контекстное меню, и выберите пункт “Экспортировать задачу бота”

Ru bots st pic40.png

Выполняем экспорт:

Ru bots st pic41.png

Теперь бот UniversalBot имеет задачу GetFullName

Ru bots st pic42.png

Перейдем к разработке процесса. Создаем новый процесс с именем SqlProcTask

Ru bots st pic43 1.png

С помощью графических элементов, создадим следующий граф процесса:

Ru bots st pic44.png

Используем две роли:

Ru bots st pic45.png

При этом для роли bot используем инициализатор:

Ru bots st pic46.png

В элементе “Начало”, а также узле OutputFullName выбираем Роль1, которая будет инициализирована исполнителем запустившим экземпляр процесса. В узле с названием Task выбираем роль bot

Создадим переменные процесса: name (Строка), full (Строка)

Ru bots st pic47 1.png

В начальном узле создадим форму для ввода имени пользователя, используем тег InputVariable, в качестве параметра выбираем переменную name:

Ru bots st pic48 1.png

В узле “Output FullName” также создаем форму, предназначенную для отображения полного имени пользователя. Используем тег “DisplayVariable”, выводим name и full:

Ru bots st pic49 1.png

Теперь переходим к задачи бота. Выделим узел Task, вызовем контекстное меню с помощью правой клавиши мыши, выберем пункт “Задача бота/Привязать”

Ru bots st pic50.png

Выбираем из списка задачу GetFullName

Ru bots st pic51.png

Затем выполняем установку соответствия между формальными параметрами задачи и переменными процесса:

Ru bots st pic52.png

На данном этапе получили процесс в котором используется привязанная задача бота, выполняющая запрос к БД для определения полного имени пользователя по его логину. Экспортируем процесс и проверяем корректность его выполнения.

Бот станция localbotstation запущена, периодическая активация ботов также запущена:

Ru bots st pic53.png

Запускаем и выполняем процесс SqlProcTask. Вводим имя пользователя – julius, нажимаем запустить.

Ru bots st pic54.png

В результате будет вызвана задача GetFullName, бота UniversalBot и получено полное имя пользователя julius

Ru bots st pic55.png

Ru bots st pic56.png

# Пример разработки процесса с расширенной задачей бота на основе обработчика MSWordReportTaskHandler

Краткое описание процесса разработки:

Создадим нового бота в станции localbotstation, добавим ему задачу с формальными параметрами основанную на обработчике ru.runa.wf.logic.bot.MSWordReportTaskHandler. Далее разработаем новый процесс с использованием данной бот задачи.

Краткий сценарий выполнения процесса:

Пользователь вводит данные (текстовое сообщение и сумма), далее срабатывает обработчик определяющий текущее время и дату, затем вызывается бот задание, результатом выполнения которого будет файл report.doc. В него будут записаны введенные пользователем данные и дата создания отчета. В следующем узле графа процесса пользователю будет предоставлена возможность скачать полученный отчет.

Создаем в localbotstation новый бот ReportBot, для этого перейдем на вкладку “Боты”, выделим бот станцию localbotstation (описание процесса импорта данной бот станции было представлено в предыдущем подпункте документации), вызовем контекстное меню, кликнув правой клавишей мыши, выберем пункт “Новый бот”

Ru bots st pic57.png

Вводим имя бота — ReportBot

Ru bots st pic58.png

Теперь добавим бот задание, для этого выберем “Новая задача бота с формальными параметрами”, в поле имени задачи вводим GenerateReport

Ru bots st pic59.png

Теперь необходимо выбрать класс обработчика – MSWordReportTaskHandler, а также добавить формальные входные и выходные параметры

Ru bots st pic60.png

Добавляем входные параметры:

  • ParamMsgString (тип Строка);
  • ParamSumDouble (тип Дробное число);
  • ParamCreaDate (тип Дата)

Добавляем выходной параметр FileOut (тип Файл), и переходим в редактирование конфигурации данного обработчика.

Ru bots st pic61.png

Здесь указываем путь к шаблону документа (процесс подготовки данного шаблона будет описан далее), название файла отчета, а также выходной формальный параметр FileOut.

Далее необходимо добавить соответствие переменных и закладок шаблона report-template.doc:

ParamMsgString – Msg
ParamSumDouble – SumDouble
ParamCreaDate – CreaDate

Сохраняем полученное задание и экспортируем его вместе с ботом на сервер wfe, для этого выделяем бот ReportBot в списке и вызываем “Экспорт бота”

Ru bots st pic62.png

Проверяем, что бот успешно экспортировался на сервер:

Ru bots st pic63.png

Теперь подготовим файл шаблона report-template.doc и сохраним его по следующему пути

(директория установки runa)/server/standalone/wfe.custom/bot , 

например в случае использования симулятора это будет:

C:\Program Files\RunaWFE\Simulation\standalone\wfe.custom\bot

Создаем doc файл report-template.doc следующего содержания:

Ru bots st pic64.png

Теперь необходимо создать в данном шаблоне закладки. Например, в MS Word для этого выделите текст (поочередно Msg, SumDouble и CreaDate) и вызовите меню “Вставка”/”Закладки”, в появившемся окне введите названия закладок, в нашем случае это CreaDate, Msg, SumDouble (имена должны совпадать с теми названиями закладок, которые используются в конфигурации ранее созданного задания GenerateReport)

Ru bots st pic65.png

На основе данного шаблона, обработчик MSWordReportTaskHandler создаст файл report.doc, в котором закладки будут заменены на значения соответствующим им переменным.

Создадим процесс WordReportProc следующего вида:

Ru bots st pic66 1.png

Добавим роли:

Ru bots st pic67.png

Для bot используем инициализатор:

Ru bots st pic68.png

В качестве исполнителя в узлах “Начало” и “Read Report” выбираем Роль1, в узле Task — роль bot.

Создаем переменные, которые будут переданы боту для создания отчета:

Ru bots st pic69 1.png

Для ввода переменных message и Sum будем использовать форму созданную в элементе “Начало”:

Ru bots st pic70 1.png

На переходе к узлу Task добавляем обработчик класса ExecuteFormulaActionHandker, с конфигурацией:

Ru bots st pic71.png

Таким образом в переменной CreationDate будет дата и время перехода в узел задачу бота

Выполним привязку бот задания, для этого выделите узел Task, и выберите “Задача бота/Привязать”

Ru bots st pic72 1.png

Выполняем привязку к задаче GenerateReport:

Ru bots st pic73.png

Устанавливаем соответствие переменных:

Ru bots st pic74.png

В узле Read Report создаем форму, на которой располагаем ftl тег “Скачать файл”

Ru bots st pic75.png

На этом процесс создания закончен, выполним экспорт и проверим работу:

Запускаем процесс WordReportProc, вводим данные, нажимаем “Запустить”

Ru bots st pic76.png

Управление переходит к боту ReportBot, выполняется задание GenerateReport

Ru bots st pic77.png

Получаем отчет:

Ru bots st pic78.png

Ru bots st pic79.png