Привет,

 

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

На данный момент код выполняется в бизнес процессе как script task.

теперь мне его надо сохранить в базу данных. как это сделать? 

Прочитав статью Добавить данные https://academy.terrasoft.ua/docs/user/biznes_processy/spravka_po_eleme… я не уверен что это то, что мне нужно. 

 

Спасибо!

Нравится

2 комментария
Лучший ответ

попробовать через c# скрипт достучатся до пропети веб сервиса где лежит результат и там уже через Entity/Insert/CustomQuery.

попробовать через c# скрипт достучатся до пропети веб сервиса где лежит результат и там уже через Entity/Insert/CustomQuery.

Стас Гаврилюк,

спасибо за помощь. получилось сделать с помощью Entity.

 

var warehouseSchema = UserConnection.EntitySchemaManager.FindInstanceByName(WarehouseTableName);
var entity = warehouseSchema.CreateEntity(connection);
 
var entityExists = entity.FetchFromDB(conditionColumnName: WarehouseRefColumn, conditionValue: instance.Ref);
 
entity.SetDefColumnValues();
entity.SetColumnValue(WarehouseCityColumn, instance.CityDescription);
entity.Save();

 

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

Возникла проблемы с передачей параметра из бизнес процесса в шаблон email. Параметр сохраняется в процессе как текст https://prnt.sc/13ikimi. Во время выполнения процесса параметр заполняется текстом и далее используется в письме https://prnt.sc/13ikpvd. Но при отправке письма параметр не подтянулся https://prnt.sc/13ikxuq. Что я делаю не так?)

Нравится

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

А у вас Service? Из опыта и обсуждения так может работать только там

Добрый день.

 

Если Вы формируете письмо программно, тогда макросы не будут срабатывать. В этом случае Вам нужно программно считать сохраненное значение параметра бизнес-процесса и подставить его в Ваш шаблон.

 

Макросы срабатывают только в случае использования уже преднастроенных шаблонов в элементе [Отправить email].

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

Как получить и обработать результирующие параметры при вызове БП из кода?

В версии 7.17.1 обещали получение параметров из интерпретируемого процесса, но примеров как и что нету. Запуск я проводил с помощью класса FlowEngine и метода RunProcess.

В sdk по классу flowengine ничего не добавилось.

Нравится

3 комментария
Лучший ответ

FlowEngine - устаревший класс и он не рекомендуется к использованию.

Для работы с процессами лучше использовать экземпляр IProcessExecutor который можно получить из UserConnection. Пример запуска процесса с получением одного параметра:

string processName = "UsrCustomProcess";
string paramName = "UserProcessParameter";
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
// Необходимо указание типа параметра
int result = processExecutor.Execute<int>(processName, paramName);

Пример запуска с получением нескольких параметров:

string processName = "UsrCustomProcess";
string[] paramNames = { "UserProcessParameter0", "UserProcessParameter1" };
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
// Второй аргумент - список входящих параметров
ProcessDescriptor processDescriptor = processExecutor.Execute(processName, new Dictionary<string, string>(), paramNames);
// Получение параметров
IReadOnlyDictionary<string, object> result = processDescriptor.ResultParameterValues;

 

FlowEngine - устаревший класс и он не рекомендуется к использованию.

Для работы с процессами лучше использовать экземпляр IProcessExecutor который можно получить из UserConnection. Пример запуска процесса с получением одного параметра:

string processName = "UsrCustomProcess";
string paramName = "UserProcessParameter";
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
// Необходимо указание типа параметра
int result = processExecutor.Execute<int>(processName, paramName);

Пример запуска с получением нескольких параметров:

string processName = "UsrCustomProcess";
string[] paramNames = { "UserProcessParameter0", "UserProcessParameter1" };
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
// Второй аргумент - список входящих параметров
ProcessDescriptor processDescriptor = processExecutor.Execute(processName, new Dictionary<string, string>(), paramNames);
// Получение параметров
IReadOnlyDictionary<string, object> result = processDescriptor.ResultParameterValues;

 

n.isaev,

А как передать в словарь <стринг, стринг> в качестве стринга коллекцию элементов как параметр? 

Андрей, Вы можете сериализовать коллекцию в JSON и передать как параметр.

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