Кастомизация
Переопределение логики
Модуль позволяет использовать свои классы вместо предустановленных (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);
Теперь вместо старого адреса списка процессов будет открываться новый.
По новому адресу вы можете вставить свой компонент вместо стандартного, а со старого адреса на новый сделать редирект.