Partager via


Archive.QueueArchiveProject - Méthode

Enregistre une copie du projet spécifié à partir de la base de données publiée à la base de données d'archivage et crée une version du projet.

Espace de noms :  WebSvcArchive
Assembly :  ProjectServerServices (dans ProjectServerServices.dll)

Syntaxe

'Déclaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Archive/QueueArchiveProject", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Archive/",  _
    ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Archive/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function QueueArchiveProject ( _
    jobUID As Guid, _
    projectUID As Guid, _
    archivedProjectUID As Guid, _
    versionDescription As String, _
    retentionPolicy As Integer, _
    permanentArchive As Boolean _
) As Guid
'Utilisation
Dim instance As Archive
Dim jobUID As Guid
Dim projectUID As Guid
Dim archivedProjectUID As Guid
Dim versionDescription As String
Dim retentionPolicy As Integer
Dim permanentArchive As Boolean
Dim returnValue As Guid

returnValue = instance.QueueArchiveProject(jobUID, _
    projectUID, archivedProjectUID, _
    versionDescription, retentionPolicy, _
    permanentArchive)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Archive/QueueArchiveProject", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Archive/", 
    ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Archive/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public Guid QueueArchiveProject(
    Guid jobUID,
    Guid projectUID,
    Guid archivedProjectUID,
    string versionDescription,
    int retentionPolicy,
    bool permanentArchive
)

Paramètres

  • jobUID
    Type : System.Guid

    Le GUID de la tâche de file d'attente.

  • projectUID
    Type : System.Guid

    GUID du projet à archiver.

  • archivedProjectUID
    Type : System.Guid

    Le GUID du projet archivé.

  • versionDescription
    Type : System.String

    Description de la version du projet.

  • retentionPolicy
    Type : System.Int32

    Spécifie la stratégie de rétention ; les valeurs peuvent être -2, -1, 0ou greater than 0.

  • permanentArchive
    Type : System.Boolean

    Définissez true à conserver une copie permanente et éviter la suppression accidentelle.

Valeur renvoyée

Type : System.Guid
Renvoie un GUID de la version du projet.

Remarques

QueueArchiveProject est une méthode asynchrone qui envoie un message vers le Service de mise en attente de Project Server.

Voici les valeurs de la stratégie de rétention.

Valeur de retentionPolicy

Description

>0

Définir la stratégie de rétention de projet ; remplacer la stratégie de rétention par défaut Project Server.

0

Rétention illimitée. Archiver le projet et ne pas vérifier les supprimer de rétention.

-1

Utilisez la stratégie de projet s'il est défini ; dans le cas contraire, utilisez la valeur par défaut de Project Server.

-2

Utilisez la stratégie de rétention par défaut Project Server et désactivez la stratégie de rétention de projet.

Enregistrer la version du projet renvoyée GUID à utiliser avec QueueRestoreProject.

Autorisations Project Server

Autorisation

Description

ManageProjectServerBackup

Permet à un utilisateur de planifier ou d'effectuer une sauvegarde d'entités de Project Server. Autorisation globale.

Exemples

Le code suivant enregistre une copie du projet spécifié à partir de la base de données publiée à la base de données archivée et récupère la liste des projets archivés.

For information about running this code sample, see Prerequisites for WCF-Based Code Samples.

using System;
using System.IO;
using System.ServiceModel;
using System.Text;
using PSLibrary = Microsoft.Office.Project.Server.Library;

namespace Microsoft.SDK.Project.Samples.ReadArchivedProjectsList
{
  class Program
  {
    private const string ENDPOINT = "basicHttp_Archive";
    private const string ENDPOINT_Q = "basicHttp_QueueSystem";
    private const string VERSION_DESCRIPTION = "2010-01-19 14:52:30";
    private const string PID = "56B5C90D-28C0-42A1-A2CF-8BC205F062BA";
    private const string OUTPUT_FILES = @"C:\Projects\Samples\Output\";

    private const int RETENTION_POLICY = -2;

    private static SvcArchive.ArchiveClient archiveClient;
    private static SvcQueueSystem.QueueSystemClient queueSystemClient;
    private static string outFilePath;

    private static int numProjects;

    static void Main1(string[] args)
    {
      try
      {
        Guid jobUID = Guid.NewGuid();
        Guid projectUID = new Guid(PID);
        Guid archivedProjectUID = Guid.NewGuid();
        DateTime startTime = DateTime.Now;
        numProjects = 1;

        // Use the endpoints that are defined in app.config to configure the client.
        SetClientEndpoints(ENDPOINT_Q);
        ConfigClientEndpoints(ENDPOINT);

        // If the directory does not exist, create it.
        if (!Directory.Exists(OUTPUT_FILES))
        {
          Directory.CreateDirectory(OUTPUT_FILES);
        }
        // Assign the path where the output XML file will be saved.
        outFilePath = OUTPUT_FILES + "ArchivedProjectsList.xml";

        // Queue the archive project.
        Guid projectVersionUID = archiveClient.QueueArchiveProject(
          jobUID, projectUID, archivedProjectUID, VERSION_DESCRIPTION, RETENTION_POLICY, true);

        Helpers.WaitForQueue(SvcQueueSystem.QueueMsgType.ProjectArchive, numProjects,
          queueSystemClient, startTime);

        Console.WriteLine("Projects archived successfully");

        Console.WriteLine("Retrieving the list of archived projects...");

        // Create a dataset.
        SvcArchive.ArchivedProjectsDataSet archivedProjectsDs =
            new SvcArchive.ArchivedProjectsDataSet();

        // Assign the datasource to the dataset.
        archivedProjectsDs = archiveClient.ReadArchivedProjectsList();
        archivedProjectsDs.WriteXml(outFilePath);

        // Get the count of projects.
        Console.WriteLine("Number of archived projects: {0}",
            archivedProjectsDs.Projects.Count.ToString());
        archiveClient.Close();

        // Write the list of projects to an XML file.
        Console.WriteLine("\nSee XML output of the ArchivedProjectsDataSet at {0}",
            outFilePath);
      }
      catch (CommunicationException e)
      {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine("\n***System.ServiceModel.CommunicationException:");
        Console.WriteLine(e.ToString());
        Console.ResetColor();
      }
      finally
      {
        Console.Write("\r\n\r\nPress any key....");
        Console.ReadKey();
      }
    }

    // Configure the client endpoints.
    public static void ConfigClientEndpoints(string endpt)
    {
      archiveClient = new SvcArchive.ArchiveClient(endpt);
    }
    // Configure the client endpoints.
    public static void SetClientEndpoints(string qendpt)
    {
      queueSystemClient = new SvcQueueSystem.QueueSystemClient(qendpt);
    }
  }

  // Utility class.
  class Helpers
  {
    // Waits for the Project Server Queuing Service to finish archiving the project.
    public static bool WaitForQueue(SvcQueueSystem.QueueMsgType jobType,
      int numJobs, SvcQueueSystem.QueueSystemClient queueSystemClient, DateTime startTime)
    {
      const int maxSeconds2Wait = 50;
      SvcQueueSystem.QueueStatusDataSet queueStatusDs = new SvcQueueSystem.QueueStatusDataSet();

      int timeout = 0; // The number of secs waited.
      Console.WriteLine("Waiting for job" + jobType.ToString());

      SvcQueueSystem.QueueMsgType[] messageTypes = { jobType };
      SvcQueueSystem.JobState[] jobStates = { SvcQueueSystem.JobState.Success };

      while ((timeout < maxSeconds2Wait) && (queueStatusDs.Status.Count < numJobs))
      {
        System.Threading.Thread.Sleep(1000);

        queueStatusDs = queueSystemClient.ReadMyJobStatus(
          messageTypes,
          jobStates,
          startTime,
          DateTime.Now,
          numJobs,
          true,
          SvcQueueSystem.SortColumn.QueuePosition,
          SvcQueueSystem.SortOrder.LastOrder);

        timeout++;
        Console.Write(".");
      }
      Console.WriteLine();

      if (queueStatusDs.Status.Count == numJobs)
      {
        return true;
      }
      return false;
    }
  }
}

Voir aussi

Référence

Archive classe

Archive - Membres

WebSvcArchive - Espace de noms