Формулировка проблемы: необходима ещё одна возможность создания интеграционных модулей, способная напрямую влиять на поведение процессов Synergy определённых типов.
Решение: необходимо реализовать возможность
устанавливать обработчик (handler) для процессов:
«согласование» (agreement-single);
«утверждение» (approval-single);
«ознакомление» (acquaintance-single);
«работа» (assignment-single);
«общий процесс при запуске по формам»
(common-process-by-form);
«отправка документа» (send-document);
«отправка документа по форме»
(send-document-by-form);
Обработчик представляет собой Java-класс, видимый из EAR-приложения
Synergy (например, он может быть оформлен в виде
jar-библиотеки и помещён в Synergy.ear/lib).
Экземпляр этого класса создаётся для каждого запущенного процесса
указанного типа и выполняется в первом этапе этого процесса.
Обработчик:
выполняется в контексте экземпляра процесса;
может получать данные, относящиеся к этому экземпляру процесса (например, идентификатор пользователя, запустившего маршрут);
может завершить успешно или неуспешно тот процесс, который обслуживает (последний случай прерывает весь экземпляр маршрута), записав что-либо в его комментарий хода выполнения.
Установка обработчика для процесса осуществляется с помощью
конфигурационного файла
${jboss.server.config.dir}/arta/process-handlers-configuration.xml,
имеющего следующий формат:
<?xml version="1.0" encoding="UTF-8"?>
<process-handlers-configuration
xmlns="http://www.arta.kz/xml/ns/ai"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.arta.kz/xml/ns/arta
http://www.arta.kz/xml/ns/ai/process-handlers-configuration.xsd">
<handlers>
<handler>
<process>agreement-single</process>
<handler-providers>kz.arta.ext.Trk</handler-providers>
</handler>
</handlers>
</process-handlers-configuration>
Процесс одного типа может быть указан в конфигурации только один раз
(только одна секция handler с каким-либо
process-ом). На каждый процесс может быть указано
несколько классов обработчиков
(handler-providers) (через пробел) — они будут
выполнены в указанном порядке.
В рамках данной задачи также необходимо составить документ —
инструкцию по написанию такого обработчика
(handler-а).