Autodesk Vault ProfessionalVault API

PromoteComponents Method

Autodesk.Connectivity.WebServicesItemService

Creates items on a component-by-component basis.

Required Permissions

FilePromote

Syntax

public void PromoteComponents(
   System.DateTime timestamp,
   System.long[] compIds
)
Public Sub PromoteComponents( _
   ByVal timestamp As System.Date, _
   ByVal compIds() As System.Long _
) 

Parameters

NameDescription
timestampThe timestamp value from the prior call to GetPromoteComponentOrder.
compIdsAn array of component IDs to generate Items from.

Remarks

This function is an alternate to PromoteFile which has poor performance on large BOMs. PromoteComponents fixes things by breaking the operation up into several smaller operations. This code must be called after AddPromoteComponents and GetPromoteComponentOrder. UpdateAndCommitItems needs to be called afterward to finalize the changes. See sample code below.

Example

using System;
using Autodesk.Connectivity.WebServices;
using Autodesk.Connectivity.WebServicesTools;

class VaultSDKSample
{
    public static void PromoteTest(WebServiceManager serviceManager, long[] fileIds)
    {
        Item[] items = null;
        try
        {
            serviceManager.ItemService.AddPromoteComponents(fileIds);

            DateTime timestamp;
            long[] compIds = serviceManager.ItemService.GetPromoteComponentOrder(out timestamp);

            foreach (long compId in compIds)
            {
                serviceManager.ItemService.PromoteComponents(timestamp, new long[] { compId });
            }

            ItemsAndFiles result = serviceManager.ItemService.GetPromoteComponentsResults(timestamp);
            items = result.ItemRevArray;
            serviceManager.ItemService.UpdateAndCommitItems(items);
        }
        catch (Exception)
        {
            if (items != null)
            {
                foreach (Item item in items)
                {
                    serviceManager.ItemService.UndoEditItems(new long[] { item.Id });
                }
            }
        }
    }
}
Imports System
Imports Autodesk.Connectivity.WebServices

Class VaultSDKSample
    Private Sub PromoteTest(serviceManager As Autodesk.Connectivity.WebServicesTools.WebServiceManager, fileIds As Long())
        Dim items As Item() = Nothing
        Try
            serviceManager.ItemService.AddPromoteComponents(fileIds)

            Dim timestamp As DateTime
            Dim compIds As Long() = serviceManager.ItemService.GetPromoteComponentOrder(timestamp)

            For Each compId As Long In compIds
                serviceManager.ItemService.PromoteComponents(timestamp, New Long() {compId})
            Next

            Dim result As ItemsAndFiles = serviceManager.ItemService.GetPromoteComponentsResults(timestamp)
            items = result.ItemRevArray
            serviceManager.ItemService.UpdateAndCommitItems(items)
        Catch generatedExceptionName As Exception
            If items IsNot Nothing Then
                For Each item As Item In items
                    serviceManager.ItemService.UndoEditItems(New Long() {item.Id})
                Next
            End If
        End Try
    End Sub
End Class

See Also