Интересует такой вопрос, можно ли программно создать подчинённый процесс (который будет привязан к родительскому), аналогично элементу "Подпроцесс". У меня количество подпроцессов не является предопределённым заранее. Поэтому использовать несколько элементов не получится.
Нравится
С привязкой не получалось сделать, а вот как просто запустить процесс из кода можно в этой теме глянуть 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;
}Там же есть функция создания его параметров. Но с использованием этого всего вручную нужно быть осторожным, ничего не пропустить.
Может, проще, если подпроцессы запускаются последовательно и их не сильно много, сделать БП с циклом.