Thanks for reply!
I created RunBaseBatch class with the above code and ran, Batch stays in Executing status always. I suspect it is because all version control synchronisation classes are set to run in client.
and as you said i tried startup cmd to run from powershell, It worked. So i can now set a task scheduler for it instead of batchjob.
Thanks again for the help :).
I used below code with some modification.
SysVersionControlSynchronization SysVersionControlSynchronization;
SysVersionControlSyncParameters syncParm;
SysVersionControllable controllable;
SysVersionControlSystemFileBased sysVersionControlSystem;
SysVersionControlTmpChange processedSyncElements;
SysVersionControlSynchronizeBatchNum batchNum;
Filename filename;
SysVersionControlSynchronizeCommand command;
boolean noInfo = false;
Set folderSetSelected;
Set folderSet;
SetEnumerator folderSetEnum;
Map resultMap;
MapEnumerator mapEnum;
boolean isVCSDefFile = true;
SysTreeNodeContainer contControllable;
RecordInsertList syncEntries;
SysVersionControlFilebasedBackEnd backend;
SysVersionControlRepositoryFolder folder;
int i;
container folderCon = ["modelNameToSync"]; // model names to be syn
;
SysVersionControlSynchronization = SysVersionControlSynchronization::construct();
if (!SysVersionControlParameters::isVCSEnabled())
{
throw error("@SYS135983" + ' ' + strFmt("@SYS120745", "@SYS85914"), '', SysInfoAction_Formrun::newFormname(formStr(SysVersionControlParametersDev)));
}
if (versioncontrol &&
versioncontrol.parmSysVersionControlSystem() &&
!versioncontrol.parmSysVersionControlSystem().supportSynchronization())
{
throw error("@SYS112528");
}
// one batchNum for the whole syn
batchNum = SysVersionControlSynchronizeLog::nextBatchNum();
// When client synchronizes the VCSDef must be synchronized as well for getting latest
// updates of models.
versioncontrol.init();
// Synchronize files for each folder
for (i = 1; i<= conLen(folderCon); i++)
{
sysVersionControlSystem = versioncontrol.parmSysVersionControlSystem();
if (sysVersionControlSystem)
{
// folder in the TFS client side
folder = SysVersionControlParameters::find().RepositoryFolder + "\\" + SysVersionControlParameters::find().AppRoot + "\\" + conPeek(folderCon,i);
syncParm = SysVersionControlSyncParameters::construct();
syncParm.parmSilent(false);
syncParm.parmForce(true); // To do , change here if "force" is required
syncParm.parmDeleteLocalObjects(false);
syncParm.parmSyncAll(true);
// Evaluate if controllable is special for setting additional parameters.
if (controllable && isVCSDefFile)
{
syncParm.parmSilent(true);
}
if (syncParm.parmSyncAll())
{
folderSet = new Set(Types::String);
folderSet.add(folder);
backend = sysVersionControlSystem.parmBackend();
resultMap = backend.folderSetSynchronize(folderSet, syncParm);
}
if (resultMap) //Sync succeeded
{
mapEnum = resultMap.getEnumerator();
syncEntries = new RecordInsertList(tableNum(SysVersionControlSynchronizeLog));
while (mapEnum.moveNext())
{
filename = mapEnum.currentKey();
command = mapEnum.currentValue();
controllable = SysVersionControlTmpItem::newControllable(sysVersionControlSystem.filename2ItemPath(filename), filename);
syncEntries.add(SysVersionControlSynchronizeLog::initLogEntry(
filename,
controllable,
command,
batchNum,
folder));
SysVersionControlTmpItem::releaseControllable(controllable);
}
syncEntries.insertDatabase();
if (resultMap.elements() && !syncParm.parmSkipImport())
{
SysVersionControlSynchronizeLog::processBatchNum(batchNum);
}
}
else
{
throw error("@SYS85688");
}
}
}