Использую для запуска БП ProcessModuleUtilities.executeProcess
Нужно подавить уведомление об успешном запуске.
![]()
Каким штатным образом это можно сделать? Параметр передать?
Нравится
Эта функция выглядит так:
/**
* 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 в свою схему, убрать ненужное и вызывать оттуда.
Зверев Александр,не уверен , что так сработает, я делал , что в калл бэеке показывал маску, а сообщением по заверешению бп ее скрывал
Если так, как Вы предлагаете, работает, то можно и таким способом. Только нужно учитывать, что процессы могут выполняться не мгновенно, а содержать таймеры, взаимодействие с пользователями и другие длительно выполняющиеся элементы. Если перед таким показать маску, то интерфейс пользователя просто заблокируется.