Метод Archive.ReadArchivedProjectsList
Получает список архивных проектов; список содержит имя проекта и GUID.
Пространство имен: WebSvcArchive
Сборка: ProjectServerServices (в ProjectServerServices.dll)
Синтаксис
'Декларация
<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
'Применение
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()
Возвращаемое значение
Тип: WebSvcArchive.ArchivedProjectsDataSet
Замечания
Примечание
Этот метод извлекает проектов черновиков и опубликованных проектов.
Разрешения Project Server
Разрешение |
Описание |
---|---|
Позволяет пользователю удалить или переместить проектов. Глобальное разрешение. |
|
Позволяет пользователю планировать или выполнения резервного копирования сущности Project Server. Глобальное разрешение. |
|
Позволяет пользователю создать резервную копию сущности Project Server. Глобальное разрешение. |
Примеры
В следующем примере сохраняет копию указанного проекта из базы данных опубликованных проектов в базе данных архива и получение списка архивных проектов
For information about running this code sample, see Необходимые условия для примеров кода на основе WCF в Project 2013.
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;
}
}
}