Split: IBProcessSplitStarter;
Метод Split возвращает объект, предназначенный для запуска нескольких экземпляров процесса с разделением по отметке.
Для выполнения примера в репозитории предполагается наличие процесса с идентификатором PROCESS. Процесс имеет один параметр.
Добавьте ссылки на системные сборки: BPM, Collections, Dimensions, Metabase. Также добавьте ссылку на сборку, которая необходима для работы с процессами.
Sub UserProc;
Var
Mb: IMetabase;
MObj: IMetabaseObjectDescriptor;
Process: IBProcess;
SplitStarter: IBProcessSplitStarter;
Param: IBProcessParam;
DInst: IDimInstance;
Sel: IDimSelection;
ParamValues: IBProcessParamValues;
SplitParamIds: IStringList;
Arr: IArrayList;
v: Variant;
Begin
Mb := MetabaseClass.Active;
MObj := Mb.ItemById("PROCESS");
Process := BProcessCollection.EditByKey(MObj.Key);
// Запуск с разделением по отметке
SplitStarter := Process.StarterFactory.Split;
SplitStarter.Deadline := DateTime.AddDays(DateTime.Now, 2);
SplitStarter.RoleSid := "PS-1-1"; // Admin
SplitStarter.CheckAllLevels := False;
// Формирование отметки для параметра процесса
Param := Process.Params.Item(0);
DInst := Param.Descriptor.Open(Null) As IDimInstance;
Sel := DInst.CreateSelection;
Sel.SelectElement(0, False);
Sel.SelectElement(1, False);
Sel.SelectElement(2, False);
// Установка отметки для параметра и указание параметра для разбивки экземпляров процесса
ParamValues := Process.Params.CreateDefaultValues;
ParamValues.Item(0).Value := Sel;
SplitParamIds := New StringList.Create;
SplitParamIds.Add(Param.Id);
SplitStarter.ParamValues.CopyFrom(ParamValues);
SplitStarter.SplitParamIds := SplitParamIds.Clone;
// Запуск экземпляра процесса
SplitStarter.Start;
// Просмотр результата запуска
Debug.WriteLine("Start Result = " + SplitStarter.StartResult.ToString);
Debug.WriteLine("Instance Ids:");
Debug.Indent;
Arr := SplitStarter.StartedInstanceIds;
For Each v In Arr Do
Debug.WriteLine(v);
End For;
Debug.Unindent;
Debug.WriteLine("Instance Guid's:");
Debug.Indent;
Arr := SplitStarter.StartedInstances;
For Each v In Arr Do
Debug.WriteLine((v As IBProcessInstance).Guid);
End For;
Debug.Unindent;
End Sub UserProc;
При выполнении примера будет получен объект, предназначенный для запуска нескольких экземпляров процесса с разделением по отметке. Будут заданы настройки запуска, отметка параметра, после этого будут запущены новые экземпляры процесса. Информация об экземплярах процесса будет выведена в консоль среды разработки.
См. также: