Поделиться через


Метод QueueSystem.ReadJobStatus

Возвращает состояние указанного задания в очереди службы Project Server.

Пространство имен:  WebSvcQueueSystem
Сборка:  ProjectServerServices (в ProjectServerServices.dll)

Синтаксис

'Декларация
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/ReadJobStatus", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/",  _
    ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function ReadJobStatus ( _
    qsrDS As QueueStatusRequestDataSet, _
    includeWaitTime As Boolean, _
    sortColumn As SortColumn, _
    sortOrder As SortOrder _
) As QueueStatusDataSet
'Применение
Dim instance As QueueSystem
Dim qsrDS As QueueStatusRequestDataSet
Dim includeWaitTime As Boolean
Dim sortColumn As SortColumn
Dim sortOrder As SortOrder
Dim returnValue As QueueStatusDataSet

returnValue = instance.ReadJobStatus(qsrDS, _
    includeWaitTime, sortColumn, sortOrder)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/ReadJobStatus", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/", 
    ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public QueueStatusDataSet ReadJobStatus(
    QueueStatusRequestDataSet qsrDS,
    bool includeWaitTime,
    SortColumn sortColumn,
    SortOrder sortOrder
)

Параметры

  • includeWaitTime
    Тип: System.Boolean

    Если trueвключить поле время ожидания ожидается.

  • sortColumn
    Тип: WebSvcQueueSystem.SortColumn

    Указывает, какие поля для сортировки в списке заданий.

  • sortOrder
    Тип: WebSvcQueueSystem.SortOrder

    Указывает ли сортировка, а также в какой порядок.

Возвращаемое значение

Тип: WebSvcQueueSystem.QueueStatusDataSet
Состояние запрошенного заданий с данными QueueStatusDataSet.StatusRow для каждого задания.

Замечания

ReadJobStatus может возвращать данные состояния для определенного задания или группы заданий, имеющих же отслеживания GUID.

Методы PSI, использующие очереди начинаются с word очереди в имя метода. Чтобы установить для отслеживания идентификатор GUID для методов PSI, использующие очереди проекты или расписания, добавление отслеживания GUID заголовка SOAP каждой веб-PSI службы, которая используется для вызова метода очереди.

Разрешения Project Server

Разрешение

Описание

ManageQueue

Позволяет пользователю управлять очередей Project Server. Глобальное разрешение.

Примеры

В следующей процедуре показано, как изменять метод WebRequest для проекта веб-службы.

Добавление отслеживания GUID к заголовку SOAP для вызовов PSI проекта:

  1. Настройка веб-ссылки в проект веб-службу (https://ServerName/ProjectServerName/_vti_bin/psi/project.asmx). Например имя веб-сайта ссылку ProjectWS.

  2. Добавьте в класс, производный от класса ProjectWS.Project . Например имя класса ProjectDerived.

  3. Добавьте элемент закрытого статического класса для значения GUID. Например имя члена trackingUid.

    using System;
    using System.Net;
    
    namespace SomeNamespace.ProjectWS
    {
        class ProjectDerived : Project
        {
            private static Guid trackingUid = Guid.Empty;
            . . .
        }
    }
  4. Добавьте открытый метод в класс ProjectDerived , который задает значение trackingUid, например, следующий код.

    public static void SetTrackingGuid(Guid track)
    {
        trackingUid = track;
    }
  5. Переопределение метода GetWebRequest и добавление отслеживания GUID заголовка SOAP.

    protected override WebRequest GetWebRequest(Uri uri)
    {
        WebRequest webRequest = base.GetWebRequest(uri);
        webRequest.Headers.Add("PSTrackingGuid", trackingUid.ToString());
    
        return webRequest;
    }

    Примечание

    Параметр name в методе Headers.Add должно быть указано "PSTrackingGuid" так же, как показано.

  6. В других классах приложения создайте и инициализировать объект ProjectDerived для звонков в проект веб-службу, например:

    private static SomeNameSpace.ProjectWS.ProjectDerived projectDerived = 
        new SomeNameSpace.ProjectWS.ProjectDerived();
    . . .
        projectDerived.Url = "https://ServerName/ProjectServerName/_vti_bin/Project.asmx";
        projectDerived.Credentials = CredentialCache.DefaultCredentials;

В следующем примере метод GetStatusOfQueueJobs находится в классе с именем QueueSystemUtilities. GetStatusOfQueueJobs является перегрузка то же имя метода, в примере для ReadJobStatusSimple. Метод возвращает состояние всех заданий с одинаковым отслеживания. Заданий в группе указанного с помощью параметра trackingGuid . QueueSystemWS не является произвольным именем QueueSystem веб-ссылку.

public QueueSystemWS.QueueStatusDataSet GetStatusOfQueueJobs(
    QueueSystemWS.QueueSystem q,
    Guid jobGuid,
    Guid trackingGuid, 
    int jobState,
    int msgType,
    QueueSystemWS.SortColumn sortColumn,
    QueueSystemWS.SortOrder sortOrder,
    bool includeWaitTime)
{
    QueueSystemWS.QueueStatusRequestDataSet dsQStatusRequest = 
        new QueueSystemWS.QueueStatusRequestDataSet();
    QueueSystemWS.QueueStatusRequestDataSet.StatusRequestRow qStatusRow =
        dsQStatusRequest.StatusRequest.NewStatusRequestRow();

    qStatusRow.JobGUID = jobGuid;
    qStatusRow.JobGroupGUID = trackingGuid;
    if (jobState != 0) 
        qStatusRow.JobCompletionState = jobState;
    if (msgType != 0)
        qStatusRow.MessageType = msgType;
    dsQStatusRequest.StatusRequest.AddStatusRequestRow(qStatusRow);

    QueueSystemWS.QueueStatusDataSet dsQStatus = q.ReadJobStatus(dsQStatusRequest, 
        includeWaitTime, 
        sortColumn, 
        sortOrder);
    return dsQStatus;
}

В следующем фрагменте кода вызывает обычных методы PSI где объект Project добавляет отслеживания GUID заголовок SOAP, как описано в предыдущей процедуре.

using System.Threading;
using PSLibrary = Microsoft.Office.Project.Server.Library;
. . .
private static ProjectWS.ProjectDerived projectDerived = 
            new ProjectWS.ProjectDerived();
private static QueueSystemWS.QueueSystem queueSystem =
    new QueueSystemWS.QueueSystem(); 
private static QueueSystemUtils queueSystemUtils = new QueueSystemUtils();
. . .
ProjectWS.ProjectDataSet dsProject =
    new ProjectWS.ProjectDataSet();
ProjectWS.ProjectDataSet.ProjectRow projectRow =
    dsProject.Project.NewProjectRow();

Guid projectGuid = Guid.NewGuid();
projectRow.PROJ_UID = projectGuid;
projectRow.PROJ_NAME = "Name of Project";
projectRow.PROJ_TYPE =
    Convert.ToInt32(PSLibrary.Project.ProjectType.Project);

dsProject.Project.AddProjectRow(projectRow);

// Create the queue job and tracking GUIDs, and then set the tracking 
// GUID for SOAP calls to the derived Project object.
Guid jobGuid = Guid.NewGuid();
Guid trackingGuid = Guid.NewGuid();
SomeNameSpace.ProjectWS.ProjectDerived.SetTrackingGuid(trackingGuid);

bool validateOnly = false;
// Create and save project to the Draft database. 
projectDerived.QueueCreateProject(jobGuid, dsProject, validateOnly);
// Wait a few seconds, or create a WaitForQueue method.
Thread.Sleep(3000);

ProjectWS.ProjectRelationsDataSet dsProjectRelations =
    new ProjectWS.ProjectRelationsDataSet();
jobGuid = Guid.NewGuid();

string wssUrl = "" // Default SharePoint project workspace, 
bool fullPublish = true;

// Publish the project to the Published database.
dsProjectRelations = projectDerived.QueuePublish(jobGuid, projectGuid, fullPublish, wssUrl);

Thread.Sleep(500);

jobGuid = Guid.Empty;
int jobState = (int)QueueSystemWS.JobState.Unknown;
int msgType = (int) QueueSystemWS.QueueMsgType.Unknown;
bool includeWaitTime = true;
QueueSystemWS.SortColumn sortColumn = QueueSystemWS.SortColumn.Undefined;
QueueSystemWS.SortOrder sortOrder = QueueSystemWS.SortOrder.Undefined;

WebSvcQueueSystem.QueueStatusDataSet dsQStatus = 
    queueSystemUtils.GetStatusOfQueueJobs(queueSystem, jobGuid, trackingGuid,
        jobState, msgType, sortColumn, sortOrder, includeWaitTime);
. . .

Как QueueCreateProject , так и QueuePublish вызовы используют же отслеживания идентификатор GUID, который устанавливается в заголовках SOAP объектом ProjectDerived . Метод QueuePublish порождает задания дополнительные очереди, таких как отправка данных опубликованных проектов в базе данных отчетов. QueueStatusDataSet перечислены состояния всех заданий, которые имеют один и тот же идентификатор отслеживания и либо завершения обработки или в очереди. Ниже приведены некоторые поля в таблице QueueStatusDataSet.Status после выполнения предыдущего кода.

Очередь

Код

Сообщение

Тип

Задание

Завершение работы

State

Очередь

Должность (положение)

Процент

Полная

Очередь

Время занесения

Очередь

обработка;

Time

Очередь

Выполнено

Time

Wait

Time

1

22

4

-1

100

6/26/2011 г.

14:06

6/26/2011 г.

14:06

6/26/2011 г.

14:06

0

1

30

3

3

100

6/26/2011 г.

14:06

6/26/2011 г.

14:06

0

1

24

1

4

0

6/26/2011 г.

14:06

1

QueueMessageType 22 — ProjectCreate. Задание больше не находится в очереди; JobState 4 — Success.

QueueMessageType 30 — PublishNotifications. Задание третий в очередь; JobState 3 — QueueJobProcessing.

QueueMessageType 24 — ProjectPublish. Задание четвертой в очередь; JobState 1 — ReadyForProcessing. Время ожидания ожидаемый является одной секунды.

См. также

Справочные материалы

QueueSystem класс

Элементы QueueSystem

Пространство имен WebSvcQueueSystem

ReadJobStatusSimple

Другие ресурсы

How to: Use the QueueSystem Service