Необходимо асинхронно запустить из одного БП другой. Использую элемент скрипт
var manager = context.UserConnection.ProcessSchemaManager; var processSchema = manager.GetInstanceByName("ProcessDealerClaim"); var process = processSchema.CreateProcess(context.UserConnection); process.SetPropertyValue("FlipId", Get<Guid>("FlipId")); process.Execute(context.UserConnection);
И всё бы было хорошо, если бы не версионность, а именно, у БП ProcessDealerClaim есть более новая версия ProcessDealerClaimNewBusiness1. Можно, конечно, вписать ее, но что будет, когда появится ProcessDealerClaimNewBusiness2 ? Переделывать?
В общем вопрос - как поддержать версионность, чтобы запускалась актуальная версия БП?
Нравится
Можно доработать метод, который будет получать и возвращать название самой последней версии бизнес-процесса, хотя, скорее всего, он уже реализован в базовой версии.
Посмотрите, как реализован вызов процессов в коробке, возможно, там найдете решение.
Алла Савельева пишет: Где именно посмотреть? ДЛЛ декомпилировать?
Зачем dll, посмотрите в коде схем, где запускают процессы.
Например, в LeftPanelTopMenuModule фильтруют список процессов по IsMaxVersion:
openProcessPage: function() { var vwSysProcessFilters = Terrasoft.createFilterGroup(); vwSysProcessFilters.name = "vwSysProcessFiler"; var sysWorkspaceFilter = Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "SysWorkspace", Terrasoft.SysValue.CURRENT_WORKSPACE.value); vwSysProcessFilters.addItem(sysWorkspaceFilter); var businessProcessTagFilter = Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "TagProperty", ConfigurationConstants.SysProcess.BusinessProcessTag); vwSysProcessFilters.addItem(businessProcessTagFilter); var isMaxVersionFilter = Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "IsMaxVersion", true); vwSysProcessFilters.addItem(isMaxVersionFilter); var config = { entitySchemaName: "VwSysProcess", isRunProcessPage: true, captionLookup: resources.localizableStrings.processLookupCaption, multiSelect: false, columnName: "Caption", filters: vwSysProcessFilters, hideActions: true }; var handler = function(args) { var activeItems = args.selectedRows.getItems(); if (!this.Ext.isEmpty(activeItems)) { Terrasoft.ProcessModuleUtilities.executeProcess({ sysProcessId: activeItems[0].Id }); } }; LookupUtilities.Open(this.sandbox, config, handler, this, null, false, false); },
Плюс есть сообщение ActiveProcessSchemaVersionChanged, на которое в некоторых схемах подписываются, например, в VwProcessLibSection.