Тихий запуск БП из клиентского кода

Использую для запуска БП ProcessModuleUtilities.executeProcess

Нужно подавить уведомление об успешном запуске.

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

Каким штатным образом это можно сделать? Параметр передать?

Нравится

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

Эта функция выглядит так:

/**
 * Launches business process by identifier or name.
 * @param {Object} config Configuration object.
 * @param {String} [config.sysProcessName] Name of the process schema.
 * @param {String} [config.sysProcessId] Unique identifier of the process schema.
 * @param {Object} [config.parameters] Process parameters.
 * @param {Function} [config.callback] Callback function.
 * @param {Object} [config.scope] Callback scope.
 */
executeProcess: function(config) {
	const callback = config.callback || this._executeProcessCallback.bind(this, config);
	const scope = config.scope || this;
	if (config.sysProcessName) {
		this._executeProcessByName(config, callback, scope);
	} else {
		this._executeProcessById(config, callback, scope);
	}
},

Она вызывает вторую, которая и показывает сообщение:

/**
 * @private
 */
_executeProcessCallback: function(config, request, success, response) {
	if (!this.responseCallback(request, success, response)) {
		this.loadSchemaCaptionByName(config.sysProcessName, function(caption) {
	this._showSuccessfullyRunProcessPopup(caption);
		}, this);
	}
},

Насколько понимаю, в первой вызов второй со стандартным обработчиком включается только если не передан свой.

То есть можно попробовать передать в параметре callback пустую функцию или с какими-то своими действиями. 

Пример вызова процесса с добавлением обработчика есть в схеме SystemDesigner, где он выглядит: 

/**
 * Starts OpportunityManagement actualization process.
 * @private
 */
runActualizeOpportunityManagementProcess: function(callback) {
	var processUtils = this.getProcessModuleUtilities();
	this.showBodyMask();
	processUtils.executeProcess({
		sysProcessName: "ActualizeOpportunityManagement",
		callback: function() {
			this.hideBodyMask();
			callback.call(this);
		},
		scope: this
	});
},

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

Эта функция выглядит так:

/**
 * Launches business process by identifier or name.
 * @param {Object} config Configuration object.
 * @param {String} [config.sysProcessName] Name of the process schema.
 * @param {String} [config.sysProcessId] Unique identifier of the process schema.
 * @param {Object} [config.parameters] Process parameters.
 * @param {Function} [config.callback] Callback function.
 * @param {Object} [config.scope] Callback scope.
 */
executeProcess: function(config) {
	const callback = config.callback || this._executeProcessCallback.bind(this, config);
	const scope = config.scope || this;
	if (config.sysProcessName) {
		this._executeProcessByName(config, callback, scope);
	} else {
		this._executeProcessById(config, callback, scope);
	}
},

Она вызывает вторую, которая и показывает сообщение:

/**
 * @private
 */
_executeProcessCallback: function(config, request, success, response) {
	if (!this.responseCallback(request, success, response)) {
		this.loadSchemaCaptionByName(config.sysProcessName, function(caption) {
	this._showSuccessfullyRunProcessPopup(caption);
		}, this);
	}
},

Насколько понимаю, в первой вызов второй со стандартным обработчиком включается только если не передан свой.

То есть можно попробовать передать в параметре callback пустую функцию или с какими-то своими действиями. 

Пример вызова процесса с добавлением обработчика есть в схеме SystemDesigner, где он выглядит: 

/**
 * Starts OpportunityManagement actualization process.
 * @private
 */
runActualizeOpportunityManagementProcess: function(callback) {
	var processUtils = this.getProcessModuleUtilities();
	this.showBodyMask();
	processUtils.executeProcess({
		sysProcessName: "ActualizeOpportunityManagement",
		callback: function() {
			this.hideBodyMask();
			callback.call(this);
		},
		scope: this
	});
},

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

Зверев Александр,не уверен , что так сработает, я делал , что в калл бэеке показывал маску, а сообщением по заверешению бп ее скрывал

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

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