Коллеги, доброго времени суток. Версия 7.11.
Хотелось бы прояснить вопрос с запуском бизнес-процесса из задания-сценария. Сразу оговорю, вариант с элементом "Подпроцесс" не подходит, т.к. планируется получение выборки данных запросов по нескольким условиям с дополнительными манипуляциями, что возможно делать только внутри Script Task.
Для теста, впрочем, был сделан простой процесс, который просто логирует текущую дату и параметр в справочник. Процесс называется, допустим UsrStartTestProcess, у него есть параметр UsrTestParameter.
Нашёл вот такую тему: https://community.terrasoft.ru/questions/zapusk-bp-iz-elementa-zadanie-…
Внутри другого процесса в скрипт таске вызываю следующий код:
var userConnection = Get("UserConnection");
/* тут всякие манипуляции */
Dictionary parameters = new Dictionary();
parameters["UsrTestParameter"] = UsrCaseId.ToString();
processExecutor = userConnection.ProcessEngine.ProcessExecutor;
processExecutor.Execute("UsrStartTestProcess", parameters);
При компиляции процесс выдаёт ошибку: The name 'processExecutor' does not exist in the current context на строчке processExecutor = userConnection.ProcessEngine.ProcessExecutor;
Что я делаю не так? Что ещё должно быть подключено?
Нравится
Денис, привет!
Я использую вот такой код для запуска подпроцессов в задании-сценарии. Попробуйте его, только сделайте ваш вызываемый подпроцесс тоже компилируемым.
var user = UserConnection; var processSchemaManager = (ProcessSchemaManager)user.GetSchemaManager(@"ProcessSchemaManager"); var processSchema = processSchemaManager.GetInstanceByName(@"ProcessName"); var process = processSchema.CreateProcess(user); process.SetPropertyValue(@"ContactId", ContactId); process.Execute(user);
Приветствую, Денис!
Запустить бизнес-процесс с элемента задания-сценария можно написав в текст сценария следующий код:
UserConnection userConnection = Get<UserConnection>("UserConnection"); var manager = userConnection.ProcessSchemaManager; var processSchema = manager.GetInstanceByName(@"UsrStartTestProcess"); var process = processSchema.CreateProcess(userConnection); if (processSchema.Parameters.ExistsByName(@"UsrTestParameter")) { //здесь выполняется передача параметров в БП, где parameters - коллекция в текущем БП, UsrTestParameter - коллекция в запускаемом БП process.SetPropertyValue(@"UsrTestParameter", parameters); } process.Execute(userConnection);
Если выполнить запуск не получится, рекомендую обратиться в службу технической поддержки, для более детальной консультации.
Кормильцев Андрей,
Андрей, спасибо! Похоже, работает.
Если ещё будут вопросы, я задам в Техподдержке.