IBProcessStarterFactory.Split

Синтаксис

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(NullAs IDimInstance;
    Sel := DInst.CreateSelection;
    Sel.SelectElement(0False);
    Sel.SelectElement(1False);
    Sel.SelectElement(2False);
    // Установка отметки для параметра и указание параметра для разбивки экземпляров процесса
    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;

При выполнении примера будет получен объект, предназначенный для запуска нескольких экземпляров процесса с разделением по отметке. Будут заданы настройки запуска, отметка параметра, после этого будут запущены новые экземпляры процесса. Информация об экземплярах процесса будет выведена в консоль среды разработки.

См. также:

IBProcessStarterFactory