Использую для запуска БП 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 в свою схему, убрать ненужное и вызывать оттуда.
Зверев Александр,не уверен , что так сработает, я делал , что в калл бэеке показывал маску, а сообщением по заверешению бп ее скрывал
Если так, как Вы предлагаете, работает, то можно и таким способом. Только нужно учитывать, что процессы могут выполняться не мгновенно, а содержать таймеры, взаимодействие с пользователями и другие длительно выполняющиеся элементы. Если перед таким показать маску, то интерфейс пользователя просто заблокируется.