На странице раздела, отловить сигнал завершения БП.

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

Подскажите, как отловить сигнал завершения БП со страницы раздела. БП запускается с этой же страницы. А после получения сигнала о завершении, выполнить произвольную функцию.

БП со страницы раздела вызываю следующим кодом:

                                       var processArgs = {
                                                sysProcessName: 'CollectionOfStatistics',
                                                parameters: {
                                                        CreatedById: CreatedById,
                                                        CalcForPeriod: forPeriod
                                                }
                                        };
                                        ProcessModuleUtilities.executeProcess(processArgs);

Нравится

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

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

Вы можете вызвать следующий web сервис:
http[s]://<адрес_приложения_bpm'online>/0/ServiceModel/ProcessEngineService.svc/CollectionOfStatistics/Execute?ResultParameterName=RESULTPARAMETERNAME&CreatedById=CreatedById&CalcForPeriod=forPeriod

В результате на клиент придет значение результирующего параметра RESULTPARAMETERNAME после получения которого, Вы можете выполнить произвольную функцию.

Более подробно о сервисе ProcessEngineService.svc Вы можете почитать по ссылке

RESULTPARAMETERNAME - параметр процесса с типом "Строка". В Вашем кейсе достаточно будет ограничить длину строки 50 символами.

Здравствуйте, Алексей. Спасибо за ответ. Возможно я что-то делаю не правильно. Воспользывался вашим советом. Вызываю БП со страницы раздела следующим методом:

var CreatedById = this.Terrasoft.SysValue.CURRENT_USER_CONTACT.value;
 
var Params = "ResultParameterName=ResultProcess&CreatedById=" + CreatedById + "&CalcForPeriod=false";
 
 
Terrasoft.AjaxProvider.request({
		url: "../ServiceModel/ProcessEngineService.svc/CollectionOfStatistics/Execute?" + Params,
		method: "POST",
		scope: this,
		jsonData: {},
		callback: function(request, success, response) {
			if (success) {
 
//Сюда приходит строка с возвращаемым параметром из БП
//Вида : 
//response.responseText =
//"<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">"ProcessEnd"</string>"
//Как ее правильно обработать? string.replace мне кажется не совсем верным решением
 
                      }
		}
	});

Как правильно обработать строку вида:

response.responseText = ""ProcessEnd""?

И второй вопрос: в БП есть преднастроенная страница. Соответственно, если она вызывается, то страница раздела ничего не ждет. Параметр response.responseText приходит со значением null и метод в котором вызывается БП завешается. Что не так?

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

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

Обработка полностью зависит от Вашей задачи. Так как всегда будет приходить один и тот же параметр, то string.replace, как по мне, очень даже корректное решение.

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