CBPActivity
Описание
Все, что происходит в бизнес-процессе — это действия. Сам бизнес-процесс представляет собой составное действие, которое позволяет определять внутри себя дочерние действия. Действие в бизнес-процессе имеет уникальное в рамках этого бизнес-процесса имя.
Действие — это класс, который наследуется от абстрактного класса CBPActivity или его потомков. Название класса должно начинаться с подстроки "CBP" и может состоять из латинских букв и цифр.
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
class CBPMyActivity1
extends CBPActivity
{
. . .
}
?>
Непосредственно от абстрактного класса CBPActivity наследуются действия, которые не могут содержать внутри себя другие действия. Этот класс определяет набор базовых методов, которые необходимы любому действию. Некоторые методы, определенные в классе CBPActivity могут или должны быть переопределены в классе-наследнике.
Составные действия наследуются от абстрактного класса CBPCompositeActivity, который в свою очередь наследуется от класса CBPActivity. Класс CBPCompositeActivity обеспечивает поддержку возможности включать внутрь действия дочерние действия. Например, составным действием является стандартное действие CBPParallelActivity (параллельное выполнение), которое содержит в себе дочерние действия, соответствующие веткам параллельного выполнения.
Класс CBPCompositeActivity содержит член arActivities, с помощью которого можно обращаться к дочерним действиям.
Класс CBPActivity содержит следующие члены, которые можно применять в действиях-наследниках:
- workflow – содержит объект-оболочку типа CBPWorkflow для данного бизнес-процесса,
- parent – содержит родительское действие,
- executionStatus – статус выполнения действия,
- executionResult – результат выполнения действия.
Список методов
Метод | Описание | С версии |
---|---|---|
Execute | Этот метод вызывается исполняющей средой при выполнении действия. Он непосредственно реализует поведение действия и должен быть переопределен в каждом действии. | |
Initialize | Этот метод вызывается исполняющей средой для инициализации действия, которая происходит до запуска бизнес-процесса на выполнение. Большинство действий не переопределяют этот метод. | |
HandleFault | Этот метод вызывается исполняющей средой при возникновении ошибки выполнения действия. Метод может быть переопределен, если при возникновении ошибки выполнения действия необходимо выполнить какой-либо код. | |
AddStatusChangeHandler | Метод добавляет новый обработчик события изменения статуса действия. | |
GetName | Метод возвращает имя действия. Имя действия уникально в рамках бизнес-процесса. | |
GetRootActivity | Метод возвращает корневое действие бизнес-процесса. Корневое действие реализует интерфейс IBPRootActivity. | |
GetWorkflowInstanceId | Метод возвращает код бизнес-процесса. | |
RemoveStatusChangeHandler | Метод удаляет обработчик события изменения статуса действия. | |
WriteToTrackingService | Метод записывает в лог произвольное сообщение. Кроме того может быть записано, от имени какого пользователя отправляется это сообщение. |
Пример
<?
// Код класса действия, которое создаст файл с указанным в свойствах действия именем
class CBPMyActivity
extends CBPActivity
{
public function __construct($name)
{
parent::__construct($name);
// Определим свойство FileName, в котором будет содержаться имя файла
$this->arProperties = array("Title" => "", "FileName" => "");
}
// Исполняемый метод действия
public function Execute()
{
// Если свойство с именем файла задано, осуществим в него запись
// Обратите внимание, что для упрощения кода здесь не добавлены
// необходимые проверки безопасности
if (strlen($this->FileName) > 0)
{
$f = fopen($this->FileName, "w");
fwrite($f, "Какой-то текст");
fclose($f);
}
// Вернем указание исполняющей среде, что действие завершено
return CBPActivityExecutionStatus::Closed;
}
}
?>
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.