Да, процесс компилируемый. Руководствуясь данной инструкции удалось выполнить процесс, передать параметры и получить результат используя метод GET. Но в инструкции написано, что так же можно использовать метод POST. Но у меня не вышло это сделать - процесс выполнился, но параметры в него не попали и результат соответственно не вернулся. Нет ли примеров POST запросов к методу Execute ?
Александр, спасибо конечно, но это метод RunProcess, который я привел в самом начале своего поста. А меня интересует вызов метода Execute, так как в нем есть возможность вернуть результат выполнения процесса в виде параметра процесса.
Есть БП с текстовым параметром (TextResult), целочисленным параметром (IntResult), идентификатор (AccountId). В БП я задаю им определенные значения, явно отличные от пустой строки, нуля и пустого Guid. После выполнения БП я хочу получить результирующее значение любого параметра.
Сейчас используют интерпретируемые процессы, компилируемые остались только старые. А в интерпретируемых возврат значения не предусмотрен. Для обмена информацией либо писать в какую-то таблицу, а потом извне читать по OData, либо вызывать в самом БП веб-сервис системы, с которой идёт интеграция.
Добрый день.К сожалению, передача параметров в потоке метода POST в текущих версиях bpm’online не реализована.
Скажите, пожалуйста, существует ли сейчас возможность передачи параметров в бизнес-процесс в теле post-запроса? И если существует, то очень хотелось бы посмотреть пример реализации, потому что у меня упорно не получается передать параметры (при этом, через GET всё работает)
Спасибо большое, сработало! Подскажите ещё, пожалуйста, как передать json в value? Обычный текст передается корректно, а json не ловится из бизнес-процесса.
А что указать в Body, чтобы в ответе получить значение параметра с именем "Result" (имя для примера указал)?
А теперь более подробно мой вовпрос.
Есть БП с текстовым параметром (TextResult), целочисленным параметром (IntResult), идентификатор (AccountId). В БП я задаю им определенные значения, явно отличные от пустой строки, нуля и пустого Guid. После выполнения БП я хочу получить результирующее значение любого параметра.
НО входящие значения параметров БП применяются и всё отлично.
Если из js делаю post запрос как вы предложили, то надеюсь получу результат, правда не знаю как указать ResultParameterName=TextResult...
Вот код
var bpUrl = Terrasoft.workspaceBaseUrl+'/ServiceModel/ProcessEngineService.svc/RunProcess';
var data ={"schemaName":"TestProcess",
"resultParameterName":"TextResult"//пробовал и с заглавной буквы ResultParameterName};
var result = Terrasoft.AjaxProvider.request({
url: bpUrl,
headers:{'Accept':'application/json',
'Content-Type':'application/json'},
method:"POST",
jsonData: data,
scope:this,
callback: function(request, success, response){
var responseObject = Terrasoft.decode(response.responseText);
debugger;//здесь останавливаюсь и получаю//см скриншот}});
Нет TextResult !!!
Помогите плиз, или может хоть кто знает почему GET запрос пустые параметры возвращает.
Если рассматривать метод Execute, то возможности отправлять параметры в теле POST запроса нет. Также, не рекомендуется отправлять POST запросы к методу Execute так как он устарел. Вместо этого стоит воспользоваться методом /RunProcess.
Каким образом при вызове процесса через ProcessEngineService.svc / RunProcess можно получить результат выполнения этого процесса в виде переменной этого процесса.
В теле запроса что и как прописать, чтобы получить значение параметра процесса после его выполнения?
Пробовал в тело запроса прописать значения переменной: "resultParameterName": "Result". Но к сожалению не возвращается значение параметра Result?
Web-cервис ProcessEngineService.svc позволяет запустить определенный бизнес-процесс и получить результат выполнения этого процесса через заданный параметр. Для этого необходимо вызвать метод Execute() в следующем формате:
PROCESSSCHEMANAME — название схемы процесса, экземпляр которого необходимо запустить на выполнение;
RESULTPARAMETERNAME — имя параметра процесса, который хранит результат выполнения процесса. Если этот параметр не задан, то web-сервис запустит указанный бизнес-процесс без ожидания результата его выполнения.
ВАЖНО
Если в вызываемом процессе отсутствует параметр с именем RESULTPARAMETERNAME, web-сервис вернет значение null.
Например, необходимо выполнить запуск бизнес-процесса CustomProcess. Результат выполнения процесса хранится в исходящем параметре процесса CustomProcessResult и возвращается в запросе. Дополнительно в процесс CustomProcess передается параметр incomeParam со значением "IncomeParamValue". Тогда строка GET-запроса будет следующей:
Результат выполнения метода Execute() возвращается в виде строки, содержащей JSON-объект (допустимо получение значения null). Десериализация JSON-объекта и приведение полученного результата к определенному типу данных должны выполняться в коде, вызывающем web-сервис.
Интересует получение результата POST запроса с передачей данных в теле запроса в JSON формате. Результат такого запроса хотим получить в формате JSON.
Из всего этого понимаю:
1. Что метод RunProcess можно вызвать и передать в него тело запроса, но сформированый результат он не вернет?
2. Для получения сформированного результата нужно еще будет сделать запрос методом Execute, который должен вернуть сохраненьй в системе результат процесса, который был вызван методом RunProces в 1-м пункте?
Если передаются большие объёмы, то и процесс, скорее всего, будет выполняться не мгновенно. Возможно, лучше не ждать его завершения, а пересмотреть архитектуру запуска сервиса. Например, из БП запускать вызов веб-сервиса (уже в противоположную сторону) или писать результаты в какую-то таблицу, а потом забирать по OData.
Запуск по урл бизнес-процессов из внешнего истчника не получает ответ от СРМ об успешном или неуспешном запуске БП. Просто пустая страница приходит в ответ. Из-за этого теряются данные, так как внешний источник отправил и думает, что СРМ получила данные, но иногда бывает, что процесс просто не запускался.