Бизнес процесс Bpmonline 7.7

Добрый день коллеги! Я столкнулся с проблемой при работе с бизнес процессом Bpmonline 7.7.0.2111. Ранне в 7.6 в блоке задачи сценарий была переменная UserConnection. В Bpmonline 7.7 этой переменной нет. когда я хочу передать UserConnection, выдает ошибку что являеть тип а не переменная. Как можно достать UserConnection на с# бизнес процесса Bpmonline 7.7 ? См. фото

Нравится

13 комментариев

UserConnection фото

Можно использовать context.UserConnection, хотя странно, в базовых процессах используется просто UserConnection.

Добрый день!

В версии 7.7 экземпляр типа UserConnection можно получить через метод Get. Например, var userConnection = Get(“UserConnection”);
Следует отметить, что для обращения к параметрам процесса следует также использовать методы Get и Set.
Пример работы с параметрами:
var parameter1 = Get("Parameter1");
Set("Parameter2", parameter1.ToString());
var parameter2 = Get("Parameter2");

Кроме того можно в свойствах элементе "Задание-сценарий" убрать признак [Для интерпретируемого процесса]. В таком случае можно работать с экземплярами аналогично версии 7.6.

Большое спасибо!

А как в исходном коде указать параметру тип UserConnection? Раньше можно было так:

public methodName(UserConnection userConnection, string stringParam, ...)
{
...
}

Здравствуйте!
В схемах сервисов принять так:

var userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];

Это уже есть в базовом сервисе, достаточно унаследоваться от BaseService и будет доступно свойство UserConnection:

public class TestDataService : BaseService

В хелпер класах (которые не сервисы) принято передавать в конструктор при создании:

new RightsHelper(userConnection); 

А внутри использовать тот, который передали

Спасибо, Алексей!

Подскажите пожалуйста, а как присвоить значение параметру типа Файл? Насколько я понимаю Set("Parameter2", "Parameter2"); работает только для строк..

Добрый день!
Конструкция Set("ProcessParameter", someVariable); подходит для всех типов. ProcessParameter – название параметра процесса. someVariable – переменная, созданная ранее в ScriptTask

Олег, здравствуйте!

Так не получается. Код

var webClient = new WebClient();
byte[] imageBytes = webClient.DownloadData("http://93.158.58.239:3333/someimage.jpg");
MemoryStream ms = new MemoryStream(imageBytes);
Set("scanParam", ms);

выдает ошибку

The best overloaded method match for 'Terrasoft.Core.Process.IProcessParameterStore.SetParameterValue(System.Guid, string, string)' has some invalid arguments

Параметр scanParam - типа Файл

Здравствуйте!

Какую задачу Вы решаете? Базовые элементы процесса не умеют работать с файлами.

Здравствуйте, Алексей.
Как видно из кода выше, я получаю файл по url. Затем нужно его записать в параметр, чтобы использовать далее по процессу.

"Демьяник Алексей" написал:

Базовые элементы процесса не умеют работать с файлами.

То есть я не смогу записать значение моего файлового параметра в базу, например, с помощью элемента "Изменить данные"?

Элемент "Изменить данные" не умеет работать с типом данных "BLOB". Вы можете добавить файл в бизнес процессе, однако для этого необходимо использовать элемент "Задание сценарий". В нем необходимо реализовать логику добавления файла на деталь. Пример Вы можете найти в схеме ImapClient, метод AddAttachmentToActivity

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