Compartir a través de


del método QueueSystem.ReadJobStatus

Obtiene el estado de los trabajos especificados en el servicio de cola de Project Server.

Espacio de nombres:  WebSvcQueueSystem
Ensamblado:  ProjectServerServices (en ProjectServerServices.dll)

Sintaxis

'Declaración
<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

    Si true, incluyen el campo de tiempo de espera esperado.

Valor devuelto

Tipo: WebSvcQueueSystem.QueueStatusDataSet
Estado de los trabajos solicitados, con los datos de QueueStatusDataSet.StatusRow para cada trabajo.

Comentarios

ReadJobStatus puede devolver los datos de estado de trabajos específicos o para un grupo de proyectos que tengan el mismo GUID de seguimiento.

Métodos PSI que usan una cola comiencen con la palabra de la cola en el nombre del método. Para establecer el GUID de seguimiento de los métodos PSI que utilizan la cola de proyecto o partes de horas, agregue el GUID de seguimiento al encabezado SOAP de cada servicio Web de PSI que se utiliza para las llamadas al método cola.

Permisos de Project Server

Permiso

Descripción

ManageQueue

Permite al usuario administrar la cola de Project Server. Permiso global.

Ejemplos

El siguiente procedimiento muestra cómo modificar el método WebRequest para el servicio Web de proyecto.

Para agregar un GUID de seguimiento al encabezado SOAP para llamadas de PSI de Project:

  1. Establecer una referencia Web al servicio Web de proyecto (https://ServerName/ProjectServerName/_vti_bin/psi/project.asmx). Por ejemplo, el nombre de la Web de referencia ProjectWS.

  2. Agregar una clase que derive de la clase ProjectWS.Project . Por ejemplo, nombre de la clase ProjectDerived.

  3. Adición de un miembro privado de clase estática para un valor GUID. Por ejemplo, el nombre del miembro trackingUid.

    using System;
    using System.Net;
    
    namespace SomeNamespace.ProjectWS
    {
        class ProjectDerived : Project
        {
            private static Guid trackingUid = Guid.Empty;
            . . .
        }
    }
  4. Agregue un método público a la clase ProjectDerived que establece el valor de trackingUid, por ejemplo, el siguiente código.

    public static void SetTrackingGuid(Guid track)
    {
        trackingUid = track;
    }
  5. Reemplace el método GetWebRequest y agregue el GUID de seguimiento al encabezado SOAP.

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

    Nota

    El parámetro name en el método Headers.Add debe escribirse "PSTrackingGuid" exactamente como se muestra.

  6. En las otras clases de la aplicación, crear e inicializar un objeto ProjectDerived para las llamadas al servicio Web de proyecto, por ejemplo:

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

El método GetStatusOfQueueJobs en el siguiente ejemplo es en una clase denominada QueueSystemUtilities. GetStatusOfQueueJobs es una sobrecarga del mismo nombre de método en el ejemplo de ReadJobStatusSimple. El método devuelve el estado de todos los trabajos con el mismo identificador de seguimiento. Trabajos en el grupo se especifican mediante el parámetro trackingGuid . QueueSystemWS es un nombre arbitrario de QueueSystem referencia 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;
}

El siguiente fragmento de código hace que las llamadas normales a los métodos PSI donde el objeto Project agrega el GUID de seguimiento al encabezado SOAP, tal como se describe en el procedimiento 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);
. . .

Las llamadas de la QueueCreateProject y el QueuePublish usan el mismo GUID, que se establece en los encabezados SOAP por el objeto ProjectDerived de seguimiento. El método QueuePublish genera trabajos en cola adicionales como enviar los datos del proyecto publicado en la base de datos de informes. QueueStatusDataSet muestra el estado de todos los trabajos que tienen el mismo identificador de seguimiento y tener el procesamiento de cualquiera de los dos completado o se encuentran en la cola. En la siguiente tabla muestra algunos de los campos en la tabla QueueStatusDataSet.Status después de ejecutar el código anterior.

Queue

Id.

Mensaje

Tipo

Trabajo

Finalización

State

Queue

Posición

Porcentaje

Completada

Queue

Hora de entrada

Queue

Proceso

Time

Queue

Finalizado

Time

esperar

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 es ProjectCreate. El trabajo ya no está en la cola; JobState 4 es Success.

QueueMessageType 30 es PublishNotifications. El trabajo es el tercero en la cola; JobState 3 es QueueJobProcessing.

QueueMessageType 24 es ProjectPublish. El trabajo es el cuarto en la cola; JobState 1 es ReadyForProcessing. El tiempo de espera previsto es un segundo.

Vea también

Referencia

clase QueueSystem

Miembros QueueSystem

Espacio de nombres WebSvcQueueSystem

ReadJobStatusSimple

Otros recursos

How to: Use the QueueSystem Service