Вопрос

Запуск бизнес-процесса из задания-сценария

Коллеги, доброго времени суток. Версия 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;



Что я делаю не так? Что ещё должно быть подключено?

Нравится

3 комментария

Денис, привет!

Я использую вот такой код для запуска подпроцессов в задании-сценарии. Попробуйте его, только сделайте ваш вызываемый подпроцесс тоже компилируемым.

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);

Если выполнить запуск не получится, рекомендую обратиться в службу технической поддержки, для более детальной консультации.

Кормильцев Андрей,

Андрей, спасибо! Похоже, работает.

Если ещё будут вопросы, я задам в Техподдержке.

Показать все комментарии