Quintiq file version 2.0
|
#parent: #root
|
Method EditKBBranch (
|
Scenario scenario,
|
String kbname
|
) id:Method_ApplicationLibMacroPlanner_EditKBBranch
|
{
|
#keys: '[11122.0.58944389]'
|
Body:
|
[*
|
//Edit a kb branch with active dataset
|
componentmds := ComponentMDS::CreateForLoadedMDSsOnly( Application );
|
mdsinstance := selectobject( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().Equals( scenario.DatasetMDSID() ) );
|
mdshandle := mdsinstance.GetMDSHandle();
|
|
kbinfo := null( MDSObjectKB );
|
if ( scenario.istype( ScenarioMP ) )
|
{
|
kbinfo := select( mdsinstance.GetMDSHandle().AsMacroPlan().MDSMacroPlan(), MDSKBs, kb, kb.Name().ToUpper() = kbname.ToUpper() );
|
}
|
|
|
|
kbfullid := KBFullID::Create( kbinfo.Domain(), kbinfo.Name(), kbinfo.Branch(), kbinfo.Version(), kbinfo.ChangeNr() );
|
editor := CKBEditor::Create();
|
ckbhandle := editor.LoadNewestKBChange( kbfullid );
|
|
// lock
|
editor.LockKB( ckbhandle.CKB().ID(), mdshandle );
|
|
// edit
|
dlg := construct( dlgKnowledgeBaseEditor );
|
result := dlg.EditKnowledgeBase( mdshandle, ckbhandle, this );
|
if ( result > 0 and dlg.Data().NeedsSave() )
|
{
|
// save
|
editor.SaveMDSKB( mdshandle, kbfullid.KBID(), 'Edit branch' );
|
|
// delete old KB
|
infos := editor.GetKBStructure( kbfullid.KBID() );
|
traverse( infos, Elements.KBFullID, i, i.Branch() = kbinfo.Branch() and i.ChangeNr() < kbinfo.ChangeNr() )
|
{
|
editor.DeleteKBChange( i );
|
}
|
}
|
else
|
{
|
editor.UnlockKB( ckbhandle.CKB().ID(), mdshandle );
|
}
|
|
//give some time for kbinfo.ChangeNr() to get updated
|
Kernel.Sleep( 1000 );
|
ScenarioManager.UpdateScenarioKBInfo( scenario, kbinfo.Name(), kbinfo.Branch(), kbinfo.ChangeNr(), scenario.State(), scenario.KBDescription() )
|
*]
|
}
|