Интересует такой вопрос, можно ли программно создать подчинённый процесс (который будет привязан к родительскому), аналогично элементу "Подпроцесс". У меня количество подпроцессов не является предопределённым заранее. Поэтому использовать несколько элементов не получится.
Нравится
С привязкой не получалось сделать, а вот как просто запустить процесс из кода можно в этой теме глянуть https://community.terrasoft.ru/questions/mnogokratnyi-zapusk-bp-s-razny…
Пример, где SxRecalcPotentialInOppNeed название запускаемого процесса, в Dictionary параметры передаваемые процессы :
UserConnection.ProcessEngine.ProcessExecutor.Execute("SxRecalcPotentialInOppNeed", new Dictionary<string, string> { { "OpportunityId", opportunityId.ToString() } });
Трефилов Павел Сергеевич,
Это я знаю. Мне нужно именно с привязкой к основному это сделать.
Можно открыть код какого-нибудь компилируемого БП, где есть элемент ProcessSchemaSubProcess и посмотреть, как с ним работают в автогенерируемом коде. Например, в ContactAgeActualizationRunnerProcess подпроцесс определяется так:
ProcessSchemaSubProcess actualizecontactagesubprocess = CreateActualizeContactAgeSubprocessSubProcess(); FlowElements.Add(actualizecontactagesubprocess); ... protected virtual ProcessSchemaSubProcess CreateActualizeContactAgeSubprocessSubProcess() { ProcessSchemaSubProcess schemaActualizeContactAgeSubprocess = new ProcessSchemaSubProcess(this) { UId = new Guid("845629d7-6a9f-47ae-8c06-0703688e57ce"), ContainerItemIndex = 0, ContainerUId = new Guid("d0f0790b-45ea-4f02-b60d-7200272e0e16"), CreatedInOwnerSchemaUId = new Guid("bb4d6607-026b-4b27-b640-8f5c77c1e89d"), CreatedInPackageId = new Guid("524f976c-dc16-4613-afcd-8360daff9aa0"), CreatedInSchemaUId = new Guid("db59d752-4f9e-4fcf-b854-d2eaa0b1f259"), EntitySchemaUId = Guid.Empty, IsForCompensation = false, IsLogging = true, ManagerItemUId = new Guid("49eafdbb-a89e-4bdf-a29d-7f17b1670a45"), ModifiedInSchemaUId = new Guid("db59d752-4f9e-4fcf-b854-d2eaa0b1f259"), Name = @"ActualizeContactAgeSubprocess", Position = new Point(505, 166), SchemaUId = new Guid("51734939-e406-46f0-b832-0b87c66b860b"), SerializeToDB = true, Size = new Size(69, 55), TriggeredByEvent = false, UseBackgroundMode = false, UseLastSchemaVersion = false }; InitializeActualizeContactAgeSubprocessParameters(schemaActualizeContactAgeSubprocess); return schemaActualizeContactAgeSubprocess; }
Там же есть функция создания его параметров. Но с использованием этого всего вручную нужно быть осторожным, ничего не пропустить.
Может, проще, если подпроцессы запускаются последовательно и их не сильно много, сделать БП с циклом.