Необходимо асинхронно запустить из одного БП другой. Использую элемент скрипт
var manager = context.UserConnection.ProcessSchemaManager;
var processSchema = manager.GetInstanceByName("ProcessDealerClaim");
var process = processSchema.CreateProcess(context.UserConnection);
process.SetPropertyValue("FlipId", Get("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.