in src/Common/ProcessImporter.ts [209:243]
private async _importPage(targetLayout: WITProcessDefinitionsInterfaces.FormLayout, witLayout: IWITLayout, page: WITProcessDefinitionsInterfaces.Page, payload: IProcessPayload) {
if (!page) {
throw new ImportError(`Encountered null page in work item type '${witLayout.workItemTypeRefName}'`);
}
if (page.isContribution && this._config.options.skipImportFormContributions === true) {
// skip import page contriubtion unless user explicitly asks so
return;
}
let newPage: WITProcessDefinitionsInterfaces.Page; //The newly created page, contains the pageId required to create groups.
const createPage = Utility.toCreatePage(page);
const sourcePagesOnTarget = targetLayout.pages.filter(p => p.id === page.id);
try {
newPage = sourcePagesOnTarget.length === 0
? await Engine.Task(() => this._witProcessDefinitionApi.addPage(createPage, payload.process.typeId, witLayout.workItemTypeRefName),
`Create '${page.id}' page in ${witLayout.workItemTypeRefName}`)
: await Engine.Task(() => this._witProcessDefinitionApi.editPage(createPage, payload.process.typeId, witLayout.workItemTypeRefName),
`Edit '${page.id}' page in ${witLayout.workItemTypeRefName}`);
}
catch (error) {
logger.logException(error);
throw new ImportError(`Failed to create or edit '${page.id}' page in ${witLayout.workItemTypeRefName}, see logs for details.`);
}
if (!newPage || !newPage.id) {
throw new ImportError(`Failed to create or edit '${page.id}' page in ${witLayout.workItemTypeRefName}, server returned empty result.`);
}
page.id = newPage.id;
// First pass - process inherited groups first (in case a custom group uses inherited group name causing conflict)
await this._importInheritedGroups(witLayout, page, payload);
// Second pass - process custom groups and controls
await this._importOtherGroupsAndControls(witLayout, page, payload);
}