Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method NewKBBranch ( 
 | 
  internal[KBFullID] kbfullid, 
 | 
  Scenario scenario 
 | 
) id:Method_ApplicationLibMacroPlanner_NewKBBranch 
 | 
{ 
 | 
  #keys: '[11122.0.58944168]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Save as ... for a KnowledgeBase 
 | 
    saveid := kbfullid; 
 | 
     
 | 
    dlg := construct( dlgEditKBID ); 
 | 
    dlg.Data( saveid ); 
 | 
     
 | 
    if (saveid.Branch() = '' ) 
 | 
    { 
 | 
      edit := select (Domain.KnowledgeBaseDefinitions(),Elements,el,el.Name() = saveid.Name() and el.Domain().Domain() = saveid.Domain()); 
 | 
      dlg.EditorBranch().Text( edit.DefaultBranchName() ); 
 | 
      dlg.EditorVersion().Text( '1.0.0.0' ); 
 | 
    } 
 | 
     
 | 
    if ( dlg.DoModal( this ) > 0 ) 
 | 
    { 
 | 
      editor := CKBEditor::Create(); 
 | 
      componentmds := ComponentMDS::CreateForLoadedMDSsOnly( Application ); 
 | 
      mdsinstance := selectobject( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().Equals( scenario.DatasetMDSID() ) ); 
 | 
      mdshandle := mdsinstance.GetMDSHandle(); 
 | 
     
 | 
      if ( kbfullid.ChangeNr() = 0 ) 
 | 
      { 
 | 
        ckbhandle := editor.LoadMDSKB( mdshandle, kbfullid.KBID() ); 
 | 
        modelkb := editor.GetModelKB( kbfullid.KBID() ); 
 | 
        ckbhandle.CKB().Upgrade( modelkb.CKB() ); 
 | 
     
 | 
        editor.ApplyMDSKB( mdshandle,ckbhandle, true ); 
 | 
      } 
 | 
     
 | 
      editor.SaveMDSKBAs( mdshandle, saveid, 'New branch' ); 
 | 
      ScenarioManager.UpdateScenarioKBInfo( scenario, saveid.Name(), saveid.Branch(), saveid.ChangeNr(), scenario.State(), '' ) 
 | 
    } 
 | 
  *] 
 | 
} 
 |