Archive.ReadArchivedProjectsList Method
Gets a list of archived projects; the list includes the project name and GUID.
Namespace: [Archive Web service]
Service reference: http://ServerName:32843/[Project Service Application GUID]/PSI/Archive.svc
Web service reference: http://ServerName/ProjectServerName/_vti_bin/PSI/Archive.asmx?wsdl
Syntax
'Declaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Archive/ReadArchivedProjectsList", 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 ReadArchivedProjectsList As ArchivedProjectsDataSet
'Usage
Dim instance As Archive
Dim returnValue As ArchivedProjectsDataSet
returnValue = instance.ReadArchivedProjectsList()
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Archive/ReadArchivedProjectsList", 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 ArchivedProjectsDataSet ReadArchivedProjectsList()
Return Value
Type: [Archive Web service].ArchivedProjectsDataSet
Remarks
Note
This method retrieves draft projects and published projects.
Project Server Permissions
Permission |
Description |
---|---|
Allows a user to delete or move projects. Global permission. |
|
Allows a user to schedule or perform a backup of Project Server entities. Global permission. |
|
Allows a user to perform a backup of Project Server entities. Global permission. |
Examples
The following example saves a copy of the specified project from the Published database to the Archive database, and retrieves the list of archived projects
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 Main(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);
// Assign the path where the output XML file will be saved.
outFilePath = OUTPUT_FILES + "ArchivedProjectsList.xml";
// Queue 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;
}
}
}