You can do this in one step by using FileManager.AddFile method. To get a better understanding of the FileAssocParam[] array, I suggest debugging a sample assembly file using GetLatestFileAssociationsByMasterIds. I recently created a sample doing this:
#region capture dependencies
//we need to return all relationships during later check-in
List<ACW.FileAssocParam> mFileAssocParams = new List<ACW.FileAssocParam>();
ACW.FileAssocArray mFileAssocArray = mWsMgr.DocumentService.GetLatestFileAssociationsByMasterIds(new long[] { mFile.MasterId },
ACW.FileAssociationTypeEnum.None, false, ACW.FileAssociationTypeEnum.All, false, false, false, true).FirstOrDefault();
if (mFileAssocArray.FileAssocs != null)
{
foreach (ACW.FileAssoc item in mFileAssocArray.FileAssocs)
{
ACW.FileAssocParam mFileAssocParam = new ACW.FileAssocParam();
mFileAssocParam.CldFileId = item.CldFile.Id;
mFileAssocParam.ExpectedVaultPath = item.ExpectedVaultPath;
mFileAssocParam.RefId = item.RefId;
mFileAssocParam.Source = item.Source;
mFileAssocParam.Typ = item.Typ;
mFileAssocParams.Add(mFileAssocParam);
}
}
#endregion capture dependencies
....
// checkin new file version
VDF.Currency.FilePathAbsolute vdfPath = new VDF.Currency.FilePathAbsolute(mLocalFileFullName);
FileIteration mUploadedFile = null;
try
{
if (mFileAssocParams.Count > 0)
{
mUploadedFile = mConnection.FileManager.CheckinFile(mNewFileIteration, "Created by Custom Job executing iLogic : " + mAllRulesTextWrp,
false, mFileAssocParams.ToArray(), null, true, null, mFileIteration.FileClassification, false, vdfPath);
}
else
{
mUploadedFile = mConnection.FileManager.CheckinFile(mNewFileIteration, "Created by Custom Job executing iLogic : " + mAllRulesTextWrp,
false, null, null, false, null, mFileIteration.FileClassification, false, vdfPath);
}
}
catch
.....
Markus Koechl
Solutions Engineer PDM, Autodesk Central Europe