Add(StepGroup: IBProcessStepGroup);
StepGroup. Группа шагов, которую необходимо добавить в коллекцию.
Метод Add добавляет указанную группу шагов в конец коллекции.
По умолчанию в коллекции присутствует одна группа шагов. Новые группы шагов могут быть добавлены, если для этапа включен шлюз.
Для выполнения примера в репозитории предполагается наличие процесса с идентификатором PROCESS. В процессе создан минимум один этап.
Добавьте ссылки на системные сборки: BPM, Metabase. Также добавьте ссылку на сборку, которая необходима для работы с процессами.
Sub UserProc;
Var
Mb: IMetabase;
MDesc: IMetabaseObjectDescriptor;
Process: IBProcess;
Stage: IBProcessStage;
DefaultStepGruop, StepGroup: IBProcessStepGroup;
Step_: IBProcessStep;
Duration: IBPDuration;
Begin
Mb := MetabaseClass.Active;
MDesc := Mb.ItemById("PROCESS");
// Получение структуры процесса
Process := BProcessCollection.EditByKey(MDesc.Key);
// Получение этапа и группы шагов по умолчанию
Stage := Process.Stages.Item(0);
DefaultStepGruop := Stage.StepGroups.Item(0);
// Шлюз для этапа
Stage.GatewayType := BProcessGatewayType.Parallel;
// Создание нового шага
Step_ := New BProcessManualTaskStep.Create("Ручное действие", Process);
Step_.Description := "Сбор данных";
Duration := Step_.MaxDuration;
Duration.Type := DurationType.Day;
Duration.Amount := 2;
Duration.IsAbsoluteLag := True;
Duration.AbsoluteLag := TimeSpan.FromHours(21).ToDouble;
// Добавление шага в первую группу шагов
DefaultStepGruop.Steps.Add(Step_);
// Создание новой группы шагов и шагов для неё
StepGroup := New BProcessStepGroup.Create(Process);
Step_ := New BProcessManualTaskStep.Create("Ручное действие 1", Process);
Step_.Description := "Подготовка материалов";
StepGroup.Steps.Add(Step_);
Step_ := New BProcessManualTaskStep.Create("Ручное действие 2", Process);
Step_.Description := "Передача материалов на следующую стадию обработки";
StepGroup.Steps.Add(Step_);
// Добавление группы шагов в этап
Stage.StepGroups.Add(StepGroup);
// Сохранение изменений
Process.Save;
End Sub UserProc;
При выполнении примера для первого этапа будет включено использование параллельного шлюза. В этап будет добавлен шаг с ручным действием, для которого будет настроен срок выполнения. Для выполнения параллельно этому шагу будет создана группа шагов, состоящая из двух шагов с ручным действием.
См. также: