Запуск процесса с параметрами Действием в карточке

Создал действие в карточке объекта и прописал запуск процесса, как это описывается здесь:
http://www.terrasoft.ru/bpmonlinesdk/CreateActionForStandartSection.html
https://community.terrasoft.ru/forum/topic/10554

Но мне нужно запускать процесс с двумя параметрами. У меня получился такой код:

        this.methods.StartApplicationZP = function() {
                var ApplicationId = this.get('Id');
                var ContactId = this.get('ContactId');
                var processArgs = {
                sysProcessName: 'ProcessName',
                parameters: {
                        NewApplicationId: ApplicationId,
                        FoundContact: ContactId
                        }
                };
                this.runProcess(processArgs.sysProcessName, processArgs.parameters, this);
                };

Но процесс не запускается.
Что я сделал не так?

Нравится

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

для начала надо проверить журнал процессов - он вообще не запускается или запускается с ошибкой

Проверял, вообще не запускается.
Кстати, с одним параметром тоже не запускается.
Версия 7.2

В консоль смотрите. Там должно быть сообщение об ошибке. От этого и нужно отталкиваться.
Или обработчик нажатия на пункт меню "Действия" вообще не вызывается. Тогда ошибок не будет.

В консоль - это куда?
Обработчик действия срабатывает: если заменить вызов процесса на отображение информационного сообщения, всё ок.

D.T.

В консоль браузера (ниже скриншот чистой консоли Google Chrome без ошибок - вызывается через F12):

http://i66.fastpic.ru/big/2015/0203/1f/e38837eebbb8c5dfb3f8d6497631681f.png

В консоли такая ошибка:

: TypeError: undefined is not a function
message: "undefined is not a function"

Возникает в строчке
this.runProcess(processArgs.sysProcessName, processArgs.parameters, this);

Регистр и правильность написания параметров проверил, всё верно.

Эта ошибка означает, что в текущем контексте не определена функция runProcess.

Я так понимаю, она существует в какой-то стандартной библиотеке? Как её добавить в мою страницу?

Здравствуйте, D.T.

Подключите к Вашему замещающему клиентскому модулю ProcessModuleUtilities.

Подключил ProcessModuleUtilities (добавил в Dependencies, define, function).
Ошибка осталась.

D.T.

Попробуйте вот так:

ProcessModuleUtilities.runProcess (...)

Если написать так:

ProcessModuleUtilities.runProcess(processArgs.sysProcessName, processArgs.parameters, this);

То ошибка не меняется. Если так:

this.ProcessModuleUtilities.runProcess(processArgs.sysProcessName, processArgs.parameters, this);

То ошибка такая:
< exception > TypeError: Cannot read property 'runProcess' of undefined

Может быть есть другой доступный способ все-таки запустить процесс действием?
Ну или можно разобраться с этим? Ведь делаю всё по инструкции, должно работать, а не работает (

D.T.

Прошу прощения за задержку с ответом.

Пожалуйста, выложите целиком листинг кода замещающего клиентского модуля.

Спасибо.

define("ApplicationPage", [ "ext-base", "terrasoft", "sandbox", "Application", "ApplicationPageStructure",
	"ApplicationPageResources",
	"BusinessRuleModule", "ConfigurationConstants", "TSCConfigurationConstants", "TscApplicationHelperModule", "ProcessModuleUtilities", "jQuery"
],
function(Ext, Terrasoft, sandbox, Application, structure, resources, ConfigurationConstants, ProcessModuleUtilities) {
    structure.userCode = function() {
 
        this.methods.StartApplicationZP = function() {
			var ApplicationId = this.get('Id');
			var processArgs = {
                sysProcessName: 'ProcessName',
                parameters: {
                        ApplicationId: ApplicationId
                        }
                };
//		this.showInformationDialog(ApplicationId);
		ProcessModuleUtilities.runProcess(processArgs.sysProcessName, processArgs.parameters, this);
		};	
 
    var actions = this.actions ? this.actions : [];
 
    actions.push({
        caption: '',
        className: 'Terrasoft.MenuSeparator'
    }, 
	{
        caption: resources.localizableStrings.StartZPprocCaption,
        methodName: "StartApplicationZP" 
    });
 
    this.actions = actions;
};
    return structure;
}); 

D.T.

У Вас начиная с BusinessRuleModule начинается несоответствие псевдонимов подключаемых модулей.

Т.е. в качестве псевдонима "BusinessRuleModule" используется ConfigurationConstants и далее уже не верное соответствие.

Задайте корректный псевдоним для каждого подключаемого модуля.

Например, вот так:

define("ApplicationPage", [ "ext-base", "terrasoft", "sandbox", "Application", "ApplicationPageStructure",
        "ApplicationPageResources",
        "BusinessRuleModule", "ConfigurationConstants", "TSCConfigurationConstants", "TscApplicationHelperModule", "ProcessModuleUtilities", "jQuery"
],
function(Ext, Terrasoft, sandbox, Application, structure, resources, BusinessRuleModule, ConfigurationConstants, TSCConfigurationConstants, TscApplicationHelperModule, ProcessModuleUtilities, jQuery) {

Ошибка, всё равно осталась без изменений (

Всё таки удалось запустить процесс вот так:

ProcessModuleUtilities.executeProcess(processArgs);

Но всё равно непонятно почему runProcess не работает?
И еще проблема: процесс по executeProcess запускается всегда, но иногда индикатор загрузки крутится ооооочень долго. Можно ли это как-то исправить?

D.T.

Скорее всего это нюанс версии 7.2.

В последних версиях (7.4.1, 7.5) запуск процессов по действию происходит достаточно быстро (вносились коррективы в базовые пакеты, связанные с быстродействием работы процессов).

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