Compartir a través de


del método Archive.QueueArchiveProject

Guarda una copia del proyecto especificado desde la base de datos publicados en la base de datos de archivo y crea una versión del proyecto.

Espacio de nombres:  WebSvcArchive
Ensamblado:  ProjectServerServices (en ProjectServerServices.dll)

Sintaxis

'Declaración
<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
'Uso
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
)

Parámetros

  • jobUID
    Tipo: System.Guid

    El GUID de la tarea de la cola.

  • projectUID
    Tipo: System.Guid

    GUID del proyecto que se va a archivar.

  • archivedProjectUID
    Tipo: System.Guid

    El GUID del proyecto archivado.

  • versionDescription
    Tipo: System.String

    Descripción de la versión del proyecto.

  • retentionPolicy
    Tipo: System.Int32

    Especifica la directiva de retención; valores pueden ser -2, -1, 0o greater than 0.

  • permanentArchive
    Tipo: System.Boolean

    Establecer true para mantener una copia permanente y para evitar la eliminación accidental.

Valor devuelto

Tipo: System.Guid
Devuelve un GUID de la versión del proyecto.

Comentarios

QueueArchiveProject es un método asincrónico que envía un mensaje para el servicio de cola de Project Server.

A continuación se muestran los valores de la directiva de retención.

Valor de retentionPolicy

Descripción

>0

Establecer la directiva de retención del proyecto; anular la directiva de retención predeterminada de Project Server.

0

Retención ilimitado. Archivar el proyecto y no comprobar para eliminar de la retención.

-1

Usar la directiva de proyecto si se establece; de lo contrario, use el valor predeterminado de Project Server.

-2

Usar la directiva de retención predeterminada de Project Server y desactive la directiva de retención del proyecto.

Guarde la versión del proyecto devuelto GUID para utilizar con QueueRestoreProject.

Permisos de Project Server

Permiso

Descripción

ManageProjectServerBackup

Permite a un usuario programar o realizar una copia de seguridad de las entidades de Project Server. Permiso global.

Ejemplos

El código siguiente guarda una copia del proyecto especificado desde la base de datos publicados en la base de datos archivados y recupera la lista de proyectos archivados.

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;
    }
  }
}

Vea también

Referencia

clase Archive

Miembros Archive

Espacio de nombres WebSvcArchive