Бизнес-процессы
Бизнес-процессы для разработчика
Действия
Составные действия
Составные действия
Урок
232
из
251
Автор:
Марина Павлова
Сложность урока:
2 из 5
2 уровень - несложные понятия и действия, но не расслабляйтесь.
Просмотров:
23879
Дата изменения:
18.09.2025
Недоступно в лицензиях:
Старт, Стандарт, Малый бизнес
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Объединение действий в одно |
Составные действия наследуются от абстрактного класса CBPCompositeActivity, который, в свою очередь, наследуется от класса CBPActivity. Класс CBPCompositeActivity обеспечивает поддержку возможности включать внутрь действия дочерние действия. Например, составным является стандартное действие CBPParallelActivity (параллельное выполнение), которое содержит в себе дочерние действия, соответствующие веткам параллельного выполнения.
Класс CBPCompositeActivity содержит член arActivities, с помощью которого можно обращаться к дочерним действиям.
Например, при запуске действия необходимо запустить первое дочернее действие и дождаться его завершения. Для этого можно использовать следующий код:
class CBPMyActivity
extends CBPCompositeActivity // наследуем, так как составное действие
implements IBPEventActivity // обработка события завершения дочернего //действия
{
// Исполняемый метод действия
public function Execute()
{
// Возьмем первое дочернее действие
$activity = $this->arActivities[0];
// Подпишемся на событие изменения статуса дочернего действия
// (завершение)
$activity->AddStatusChangeHandler(self::ClosedEvent, $this);
// Отправим дочернее действие исполняющей среде на выполнение
$this->workflow->ExecuteActivity($activity);
// Вернем указание исполняющей среде, что действие еще выполняется
return CBPActivityExecutionStatus::Executing;
}
// Обработчик события изменения статуса интерфейса IBPEventActivity
// Параметром передается действие, изменившее статус
protected function OnEvent(CBPActivity $sender)
{
// Отпишемся от события изменения статуса дочернего действия
// (завершения)
$sender->RemoveStatusChangeHandler(self::ClosedEvent, $this);
// Дочернее действие завершено, выполняем другой необходимый нам код
// Например завершаем действие
$this->workflow->CloseActivity($this);
}
}
Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас
и Ваше мнение важно для нас
Курсы разработаны в компании «1С-Битрикс»