Compartilhar via


QueueSystem.ReadJobStatus método

Obtém o status do trabalho especificado no serviço de enfileiramento do Project Server.

Namespace:  WebSvcQueueSystem
Assembly:  ProjectServerServices (em ProjectServerServices.dll)

Sintaxe

'Declaração
<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
'Uso
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
)

Parâmetros

  • includeWaitTime
    Tipo: System.Boolean

    Se true, incluir o campo de tempo de espera esperado.

Valor retornado

Tipo: WebSvcQueueSystem.QueueStatusDataSet
Status dos trabalhos solicitados, com os dados QueueStatusDataSet.StatusRow para cada trabalho.

Comentários

ReadJobStatus pode retornar dados de status para trabalhos específicos ou para um grupo de trabalhos que possuem o mesmo GUID de rastreamento.

Métodos PSI que usam uma fila começam com a palavra fila no nome do método. Para definir o métodos PSI que usam essa fila de projeto ou quadro de horários do GUID de rastreamento, adicione o GUID de rastreamento ao cabeçalho SOAP de cada serviço Web de PSI que você usa para as chamadas de método de fila.

Permissões do Project Server

Permissão

Descrição

ManageQueue

Permite ao usuário gerenciar a fila do Project Server. Permissão global.

Exemplos

O procedimento a seguir mostra como modificar o método WebRequest para o serviço Web do projeto.

Para adicionar um controle GUID ao cabeçalho SOAP para chamadas de PSI do projeto:

  1. Defina uma referência de Web para o serviço Web de projeto (https://ServerName/ProjectServerName/_vti_bin/psi/project.asmx). Por exemplo, o nome da Web referenciar ProjectWS.

  2. Adicione uma classe derivada da classe ProjectWS.Project . Por exemplo, nomeie a classe ProjectDerived.

  3. Adicione um membro de classe estática privada para um valor GUID. Por exemplo, nomeie o membro trackingUid.

    using System;
    using System.Net;
    
    namespace SomeNamespace.ProjectWS
    {
        class ProjectDerived : Project
        {
            private static Guid trackingUid = Guid.Empty;
            . . .
        }
    }
  4. Adicione um método público para a classe ProjectDerived que define o valor de trackingUid, como o código a seguir.

    public static void SetTrackingGuid(Guid track)
    {
        trackingUid = track;
    }
  5. Substituir o método GetWebRequest e adicione o GUID de rastreamento ao cabeçalho SOAP.

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

    Dica

    O parâmetro name no método Headers.Add deve ser digitado "PSTrackingGuid" exatamente como mostrado.

  6. Em outras classes do seu aplicativo, criar e inicializar um objeto de ProjectDerived para chamadas para o serviço Web do projeto, por exemplo:

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

O método GetStatusOfQueueJobs no exemplo a seguir está em uma classe denominada QueueSystemUtilities. GetStatusOfQueueJobs é uma sobrecarga do mesmo nome do método no exemplo para ReadJobStatusSimple. O método retorna o status de todos os trabalhos com a mesma ID de controle. Trabalhos no grupo são especificados pelo parâmetro trackingGuid . QueueSystemWS é um nome arbitrário de QueueSystem referência da Web.

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

O fragmento de código a seguir faz com que as chamadas normais para os métodos PSI onde o objeto Project adiciona o GUID de rastreamento ao cabeçalho SOAP, conforme descrito no procedimento anterior.

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);
. . .

As chamadas de QueueCreateProject tanto o QueuePublish usar o mesmo GUID, que é definido pelo objeto ProjectDerived nos cabeçalhos SOAP de rastreamento. O método QueuePublish gera trabalhos em fila adicionais por exemplo, enviar os dados de projeto publicado no banco de dados de relatórios. QueueStatusDataSet lista o status de todos os trabalhos que possuem a mesma identificação de controle e o processamento concluído ou estão na fila. A tabela a seguir mostra alguns dos campos na tabela QueueStatusDataSet.Status após executar o código anterior.

[QUEUE]

ID

Mensagem

Tipo

Trabalho

Conclusão

State

[QUEUE]

Posição

Por cento

Completa

[QUEUE]

Hora da Entrada

[QUEUE]

Processamento

Time

[QUEUE]

Concluído

Time

Espera

Time

1

22

4

-1

100

26/6/2011

14:06

26/6/2011

14:06

26/6/2011

14:06

0

1

30

3

3

100

26/6/2011

14:06

26/6/2011

14:06

0

1

24

1

4

0

26/6/2011

14:06

1

QueueMessageType 22 é ProjectCreate. O trabalho não está mais na fila; JobState 4 é Success.

QueueMessageType 30 é PublishNotifications. O trabalho é a terceiro a fila; JobState 3 é QueueJobProcessing.

QueueMessageType 24 é ProjectPublish. O trabalho é o quarto na fila; JobState 1 é ReadyForProcessing. O tempo de espera esperada é um segundo.

Ver também

Referência

QueueSystem classe

QueueSystem membros

WebSvcQueueSystem namespace

ReadJobStatusSimple

Outros recursos

How to: Use the QueueSystem Service