Вопрос:

Интересует информация по следующему кейсу: удаление пункта из меню «Действия».

Например убрать «Синхронизировать контакты» в разделе «Контакты». 

На академии есть информация как добавлять действия, но будет полезна и информация о том как их убирать. Не хватает таких примеров.

Ответ:

Можно ограничить доступ к функциональности синхронизации контактов. Для этого перейдите в bpm'online в "дизайнер системы" - "Права доступа по операциям" -

Изображение удалено.

Так же, исходя из инструкции https://academy.terrasoft.ru/documents/technic-sdk/7-12/dobavlenie-deystviya-v-razdel



Для удаления записей с "Действия" необходимо переопределить метод getsectionItems из базовой схемы (см. инструкцию по добавлению) получить коллекцию и использовать один из методов remove, removebykaey или removeitem.

Нравится

Поделиться

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

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

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

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

                                       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, как по мне, очень даже корректное решение.

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

Добрый день,

Пытаюсь через БД подменить процесс привязанный к действию в разделе.
В [SysModuleAction] нашел свое действие, обновил поле [SysProcessSchemaId] на [SysSchemaId] из т.[SysSchemaInSolution].
Но действие продолжает выполняться старое. Смотрю в т.[SysProcess] там появляются данные с Id старой схемы.
Подскажите, что я не учел? Возможно кеш?

Нравится

1 комментарий

Антон, да, если запускали ранее это действие, то необходимо очистить значения ключей на сервере сессий (Redis).

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