Формулировка проблемы: необходима ещё одна возможность создания интеграционных модулей, способная напрямую влиять на поведение процессов 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
-а).