Compartilhar via


QueueSystem.GetJobGroupWaitTime método

Determina o tempo estimado para a fila de trabalhos de processo do tipo especificado em um grupo de trabalho.

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

Sintaxe

'Declaração
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/GetJobGroupWaitTime", 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 GetJobGroupWaitTime ( _
    trackingID As Guid, _
    messageType As QueueMsgType _
) As Integer
'Uso
Dim instance As QueueSystem
Dim trackingID As Guid
Dim messageType As QueueMsgType
Dim returnValue As Integer

returnValue = instance.GetJobGroupWaitTime(trackingID, _
    messageType)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/GetJobGroupWaitTime", 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 int GetJobGroupWaitTime(
    Guid trackingID,
    QueueMsgType messageType
)

Parâmetros

  • trackingID
    Tipo: System.Guid

    Controlando o GUID (JobGroupGUID) atribuído aos vários trabalhos.

Valor retornado

Tipo: System.Int32
Número de segundos para trabalhos com o mesmo trackingID e do tipo especificado para a conclusão de espera.

Comentários

O tempo de espera esperada para trabalhos só está aproximado, com base nos tempos de espera médio para trabalhos do tipo semelhante. GetJobGroupWaitTime também leva em consideração a posição que têm dos trabalhos em fila e a prioridade de correlação de trabalho.

Os nomes dos métodos PSI que usam essa fila de projeto ou quadro de horários começam com fila, por exemplo, QueueCreateProject e QueueUpdateTimesheet. 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 mostrado no 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 GetExpectedGroupWaitTime no exemplo a seguir está em uma classe denominada QueueSystemUtilities. O método retornará o tempo de espera esperada para o projeto publicar dados a serem enviados para o banco de dados de relatórios. Trabalhos no grupo são especificados pelo parâmetro trackingGuid . QueueSystemWS é um nome arbitrário de QueueSystem referência da Web.

public int GetExpectedGroupWaitTime(QueueSystemWS.QueueSystem q, 
    Guid trackingGuid, QueueSystemWS.QueueMsgType msgType)
{
    int wait = q.GetJobGroupWaitTime(trackingGuid, msgType);
    return wait;
}

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

// Try various wait times to see the effect of additional queue jobs 
// spawned by QueuePublish.
Thread.Sleep(500);

QueueSystemWS.QueueMsgType msgType = QueueSystemWS.QueueMsgType.ReportingProjectPublish;
int jobGroupWaitTime = queueSystemUtils.GetExpectedGroupWaitTime(queueSystem, trackingGuid, msgType);
string waitTime = "After QueuePublish:\t\t" + jobGroupWaitTime.ToString() + " seconds for the ReportingProjectPublish job";
. . .

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. O valor de jobGroupWaitTime mostra apenas o tempo de espera esperada do trabalho ReportingProjectPublish .

Ver também

Referência

QueueSystem classe

QueueSystem membros

WebSvcQueueSystem namespace

Outros recursos

How to: Use the QueueSystem Service