Конфигурирование бот станций
Настройки работы бот-станции расположены в конфигурационном файле botstation.properties
С бот-станцией должен быть связан один из пользователей (параметр botstation.system.username). От имени этого пользователя бот станция будет обращаться к RunaWFE серверу для того, чтобы прочитать свои параметры. Логин и пароль этого пользователя необходимо ввести в конфигурационный файл botstation.properties.
С каждым ботом должен быть связан один из пользователей, от имени которого бот будет выполнять задания в системе. В настройках бота должны быть заданы логин и пароль данного пользователя. (Пароль бота обязательно должен совпадать с паролем, который установлен в свойствах исполнителя).
Права на работу с бот станциями устанавливаются в меню бот-станции по клику на ссылку «Владельцы прав»:
В частности, у пользователя – бот станции должны быть права на чтение бот станций:
Замечание: По умолчанию в botstation.properties в качестве пользователя с правами на работу с бот станцией указан Administrator.
Создание файла конфигурации обработчиков ботов
DatabaseTaskHandler
Конфигурация для DatabaseTaskHandler задается в виде xml файла, схема к которому находиться в репозитории в проекте bots (resources/bot/database-tasks.xsd).
Пример конфигурации используемой для вставки записи в таблицу базы данных и для вызова хранимой процедуры базы данных.
<?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:/wfebotds"> <queries> <query sql="insert into OVERTIMES(INSTANCE_ID, EMPLOYEE_CODE, FROM_DATE, TO_DATE, REASON, COMMENT, CHIEF_COMMENT) values(?, ?, ?, ?, ?, ?, ?)"> <param var="instanceId" /> <swimlane-param var="сотрудник" field="code" /> <param var="дата с" /> <param var="дата по" /> <param var="причина" /> <param var="комментарий" /> <param var="комментарий руководителя" /> </query> <query sql="{CALL sp_insertShift(?, ?, ?, ?, ?)}"> <param var="instanceId" /> <swimlane-param var="сотрудник" field="code" /> <swimlane-param var="подавший_заявку" field="code" /> <param var="воскресенье_обед" /> <param var="учитывать_праздничные_дни" /> <result var="commit" /> </query> </queries> </task> </database-tasks>
EmailTaskHandler
Формат конфигурации аналогичен обработчику.
StartProcessTaskHandler
Конфигурация для StartProcessTaskHandler задается в виде xml файла, схема к которому находиться в репозитории в проекте bots (resources/bot/process-start.xsd).
Пример:
<?xml version="1.0" encoding="UTF-8"?> <process-start xmlns="http://runa.ru/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://runa.ru/xml process-start.xsd"> <process name="NewSubProcess"> <variable from="X" to="XX"/> <variable from="Y" to="YY"/> <variable from="r" to="rr"/> <started-process-id variable-name="process1"/> </process> <process name="NewSubProcess"> <variable from="X" to="XX"/> <variable from="Y" to="YY"/> <variable from="r" to="rr"/> <started-process-id variable-name="process2"/> </process> </process-start>
StopProcessHandler
Конфигурация для StopProcessHandler задается в виде xml файла.
Пример:
<?xml version="1.0" encoding="UTF-8"?> <config> <input> <param name="processId" variable="VAR" /> </input> </config>
TextReportTaskHandler
Конфигурация к боту создания текстового отчета задается в виде xml файла, схема к которому находиться в репозитории в проекте bots (resources/bot/textreport.xsd).
Пример:
<?xml version="1.0" encoding="UTF-8"?> <config xmlns="http://runa.ru/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://runa.ru/xml textreport.xsd"> <template fileName="/bot/TextFileTemplate_demo.txt" fileEncoding="UTF8" /> <report fileName="textFile.txt" fileEncoding="UTF8" variableName="resultTextFile" contentType="plain/text" /> <replacements xmlFormat="true" applyToRegexp="false" /> </config>
Темплейт для отчета в данном случае должен находиться в кодировке «UTF8» в файле в $JBOSS_HOME/server/default/conf/bot/TextFileTemplate_demo.txt.
Как указано в строчке конфигурации:
<template fileName="/bot/TextFileTemplate_demo.txt" fileEncoding="UTF8" />
Пример темплейта из демо процесса TextFileCreation:
Report title: ${header}. number: ${number} date: ${date} Text: ${mainText}
Вместо ${имя_переменной_процесса} темплейта в текст результирующего файла вставляется значение указанной переменной.
Результирующий файл согласно конфигурации будет в кодировке «UTF8», будет назван textFile.txt и будет сохранен в переменную «resultTextFile».
<report fileName="textFile.txt" fileEncoding="UTF8" variableName="resultTextFile" contentType="plain/text" />
MSWordReportTaskHandler
Конфигурация к MSWordReportTaskHandler задается в виде xml файла, схема к которому находится в репозитории в проекте bots (resources/bot/msword-report-task.xsd).
Пример конфигурации:
<<?xml version="1.0" encoding="UTF-8"?> <msword-report-task xmlns="http://runa.ru/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://runa.ru/xml msword-report-task.xsd"> <report template-path="C:\Workflow\Templates\Word\sample-template.doc" output-variable="report" output- variable-file-name="report.doc"> <mapping bookmark="vacationDateFrom" variable="dateFrom" /> <mapping bookmark="employeeFullName" variable="fullName" /> </report> </msword-report-task>
Закладки в документе Word sample-template.doc будут заменены на отформатированные значения соответствующих переменных бизнес-процесса. После этого документ будет сохранен в файле report.doc и в переменной «report» бизнес процесса согласно строке конфигурации:
<report template-path="C:\Workflow\Templates\Word\sample-template.doc" output-variable="report" output-variable-file-name="report.doc">
Шаблон для отчета в данном случае находится в файле C:\Workflow\Templates\Word\sample-template.doc. Закладки в этом файле создаются и именуются стандартным способом через основное меню редактора Word.
Используется тип переменной, определенный в Среде разработки, для форматирования текста, вставляемого вместо закладки.
WebServiceTaskHandler
Бот предназначен для выполнения SOAP запросов к веб-сервисам и обработке ответов. Настройки бота задаются в виде xml файла.
Корневой элемент config содержит:
Элемент | Описание | Обязательный |
url | Задаёт URL, на который отправляется запрос | Обязательный, не более одного |
SOAPAction | Задаёт значение атрибута SOAPAction в отправляемом запросе | Необязательный, не более одного |
basic-authentication | Задаёт значение атрибута Authentication в отправляемом запросе. | Необязательный, не более одного |
request-method | Задаёт тип запроса (POST, GET, и т. п.) | Необязательный, не более одного |
errorAction | Задаёт поведение в случае, если запрос вернул ошибку. Может переопределяться в элементе interaction. | Необязательный, не более одного |
log | Если значение элемента равно true, то запрос и ответ к веб-сервису логируются с важностью debug. | Необязательный, не более одного |
interaction | Описывает одно взаимодействие веб-сервисом. | Обязательный, один и более |
Элементы interaction содержат:
Элемент | Описание | Обязательный |
request | Задаёт SOAP запрос, отправляемый веб-сервису. | Обязательный. |
response | Задаёт XSLT преобразование, применяемое к ответу, полученному от сервиса. Может содержать атрибуты:
|
|
errorAction | может принимать следующие значения:
|
Необязательный |
Во время обработки задания бот выполняет заданную в настройках последовательность запросов. Результат запроса сохраняется в переменную, заданную в атрибуте variable. (если атрибут не задан, то сохранение результата не происходит). Если запрос выполнился успешно, то к ответу на запрос применяется XSLT, заданное как текстовое содержимое элемента response. Если запрос вернул ошибку, то она сохраняется в переменную, заданную в атрибуте variable (если атрибут не задан, то сохранение запроса не происходит). После этого выполняется действие в соответствии со значением errorAction.
В теле XML запроса и XSLT, применяемого к ответу можно использовать специальные теги для доступа к данным Workflow:
- getProcessInstanceId – Возвращает идентификатор текущего экземпляра процесса.
- getVariable(String name) – Возвращает переменную из текущего экземпляра процесса с указанным именем.
- getProcessInstanceGraph(String processInstanceIdVariable)
- setNewVariable(String name, String value) – Установить значение переменной с указанным именем. Используется в XSLT, применяемом к ответу от веб-сервиса.