Кастомизация
Переопределение логики
Модуль позволяет использовать свои классы вместо предустановленных (Bitrix\Rpa\Driver).
Таким образом можно изменить поведение модуля.
Чтобы это сделать, необходимо подписаться на событие onDriverCollectClasses
модуля rpa
.
В результате события должен прийти массив, где ключ - это имя класса, а значение - это ваш наследник.
Например, вы хотите использовать свою реализацию менеджера сценариев (например, чтобы добавить больше полей в черновик процесса).
Для этого создаете своего наследника:
class MyDirector extends Bitrix\Rpa\Director { public function getDraftTypeScenarios(): Bitrix\Rpa\Scenario\Collection { // MyDraftTypeScenario - ваш сценарий return new Bitrix\Rpa\Scenario\Collection([new MyDraftTypeScenario()]); } }
После этого в init.php
подписываетесь на событие:
Bitrix\Main\EventManager::getInstance()->addEventHandler( 'rpa', 'onDriverCollectClasses', static function(\Bitrix\Main\Event $event) { return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [ 'director' => MyDirector::class, ]); } );
Теперь Bitrix\Rpa\Driver::getInstance()->getDirector()
вернет инстанс вашего класса.
Классы, которые можно подменить, их имена и классы, которые надо наследовать:
[ 'factory' => Bitrix\Rpa\Factory::class, 'urlManager' => Bitrix\Rpa\UrlManager::class, 'director' => Bitrix\Rpa\Director::class, 'pullManager' => Bitrix\Rpa\Integration\PullManager::class, 'taskManager' => Bitrix\Rpa\Integration\TaskManager::class, ];
Переопределение адресов
Один из вариантов изменения адресов страниц - переопределить класс Bitrix\Rpa\UrlManager.
В своем классе можно переопределить все методы или только их часть и получить новые адреса.
Другой вариант - это указать свои шаблоны ссылок.
$templates['bitrix:rpa.panel'] = 'panel/'; \Bitrix\Rpa\Driver::getInstance()->getUrlManager()->saveCustomUrlTemplates($templates);
Теперь вместо старого адреса списка процессов будет открываться новый.
По новому адресу вы можете вставить свой компонент вместо стандартного, а со старого адреса на новый сделать редирект.