Документация для разработчиков
Темная тема

Command

Описание

abstract class Bitrix\Rpa\Command - базовый класс для выполнения изменений элементов.

Чтобы не нагружать лишней логикой сами элементы, все проверки, подготовки, запуск роботов и пр. вынесено в этот класс.

Это абстрактный класс, у него есть три наследника:

Константы

  • public const ERROR_CODE_ITEM_MOVE_PERMISSION = 'RPA_ITEM_MOVE_ACCESS_DENIED';
  • public const ERROR_CODE_ITEM_MODIFY_PERMISSION = 'RPA_ITEM_MODIFY_ACCESS_DENIED';
  • public const ERROR_CODE_WRONG_STAGE = 'RPA_ITEM_WRONG_STAGE';
  • public const ERROR_CODE_MANDATORY_FIELD_EMPTY = 'RPA_MANDATORY_FIELD_EMPTY';
  • public const ERROR_CODE_ITEM_USER_HAS_TASKS = 'RPA_ITEM_USER_HAS_TASKS';
  • public const ERROR_CODE_ITEM_TASKS_NOT_COMPLETED = 'RPA_ITEM_TASKS_NOT_COMPLETED';
  • public const ERROR_CODE_ITEM_DELETE_PERMISSION = 'RPA_ITEM_DELETE_PERMISSION'.

В этих константах лежат коды ошибок, которые могут вернуться в процессе выполнения команды

Методы

Метод Описание С версии
public function __construct(Item $item, array $data = []) Конструктор.

На вход принимает элемент и массив параметров $data

В $data может быть следующее:

  • userId идентификатор пользователя, который запускает команду. Если не передан, то будет взят текущий пользователь;
  • scope строковый идентификатор области, где производится изменение. Принимает значения как в Bitrix\Rpa\Model\ItemHistoryTable;
  • taskId идентификатор задания, которое запустило команду.

Для всех этих данных есть сеттеры и геттеры, не обязательно передавать в конструктор:

  • setUserId(int $userId): Command
  • getUserId(): int
  • setScope(string $scope): Command
  • getScope(): ?string
  • setTaskId(int $taskId): Command
  • getTaskId(): ?int
  • getItem(): Item
public function run(): Result Основной метод команды.

Этот метод выполняет следующее:

  1. Проверяет права доступа;
  2. Проверяет корректность указанной стадии;
  3. Проверяет корректность измененных полей;
  4. Проверяет существующие на элементе заданий;
  5. Производит сохранение изменений;
  6. Сохраняет данные в историю изменений;
  7. Создает запись в таймлайне;
  8. Отправляет пуш о создании записи таймлайна;
  9. Отправляет пуш об изменениях, произведенных над элементом;
  10. Запускает роботов.

При этом в момент запуска роботов над элементом могут производиться другие изменения, которые поднимут новый инстанс команды.

По умолчанию все проверки включены

Все проверки выполняются последовательно, если они не были отключены. Если во время одной из проверок возникла ошибка, то выполнение команды прерывается.

Для включения / отключения проверок есть отдельный набор методов

  • disableAllChecks(): Command отключает все проверки;
  • enableCheckAccess(): Command включает проверку прав;
  • disableCheckAccess(): Command отключает проверку прав;
  • isCheckAccessEnabled(): bool возвращает true, если проверка прав включена;
  • enableCheckTasks(): Command включает проверку заданий;
  • disableCheckTasks(): Command отключает проверку заданий;
  • isCheckTasksEnabled(): bool возвращает true, если проверка заданий включена;
  • enableCheckStage(): Command включает проверку стадии;
  • disableCheckStage(): Command отключает проверку стадии;
  • isCheckStageEnabled(): bool возвращает true, если проверка стадии включена;
  • enableCheckFields(): Command включает проверку полей;
  • disableCheckFields(): Command отключает проверку полей;
  • isCheckFieldsEnabled(): bool возвращает true, если проверка полей включена.

Кроме того, можно отключить автоматические действия, выполняемые после сохранения изменений:

  • enableSaveToHistory(): Command включает сохранение в истории изменений;
  • disableSaveToHistory(): Command отключает сохранение в истории изменений;
  • isSaveToHistoryEnabled(): bool возвращает true, если сохранение в истории изменений включено;
  • enableAutomation(): Command включает запуск автоматизации;
  • disableAutomation(): Command отключает запуск автоматизации;
  • isAutomationEnabled(): bool возвращает true, если автоматизация включена.
public function setPullEventId(string $eventId): Command Позволяет указать идентификатор события для \Bitrix\Rpa\Integration\PullManager.
abstract public function checkStage(): Result; Выполняет проверку стадии. Определен в наследниках.
abstract public function checkAccess(): Result; Выполняет проверку прав доступа. Определен в наследниках.
public function checkTasks(): Result Выполняет проверку запущенных заданий. По умолчанию не делает ничего, определен только в Bitrix\Rpa\Command\Update.
public function saveToHistory(ItemHistory $historyRecord): Result Выполняет сохранение данных в таблицу истории изменений.
public function checkFields(): Result Выполняет проверку полей. В Bitrix\Rpa\Command\Add этот метод пустой, а при удалении поля не меняются.
public function checkRequiredFields(UserFieldCollection $userFieldCollection): Result Проверяет, что все обязательные поля из коллекции $userFieldCollection заполнены.
public function resetNotEditableFields(UserFieldCollection $userFieldCollection): Result Сбрасывает значения пользовательских полей элемента из коллекции $userFieldCollection, которые недоступны для изменения.
public function isTerminated(): bool Во время выполнения метода checkTasks в Bitrix\Rpa\Command\Update может сработать режим автоматического выполнения задания.

В этом случае дальнейшее выполнение команды не имеет смысла, т.к. при выполнении задания элемент был изменен повторно. И выполнение команды надо прервать.

Этот метод возвращает true, если команда была прервана



© «Битрикс», 2001-2024, «1С-Битрикс», 2024