Share via


QueueSystem.ReadJobStatus-Methode

Ruft den Status der angegebenen Aufträge in der Project Server-Warteschlangendienst ab.

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

Syntax

'Declaration
<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
'Usage
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
)

Parameter

  • includeWaitTime
    Typ: System.Boolean

    Wenn true, umfassen das erwartete Wait Time-Feld.

Rückgabewert

Typ: WebSvcQueueSystem.QueueStatusDataSet
Status der angeforderten Aufträge, mit den QueueStatusDataSet.StatusRow Daten für jedes Projekt.

Hinweise

ReadJobStatus können Statusdaten für bestimmte Projekte oder für eine Gruppe von Aufträgen die haben die gleiche Überwachungs-GUID zurück.

PSI-Methoden, mit denen eine Warteschlange beginnen mit dem Wort Warteschlange in den Methodennamen. Wenn Sie die Überwachungs-GUID für PSI-Methoden festgelegt, die die Projekt- oder Arbeitszeittabellen-Warteschlange verwenden, fügen Sie die Überwachungs-GUID von jedem PSI-Webdienst, mit denen Sie für die Warteschlange-Methode ruft die SOAP-Header hinzu.

Project Server-Berechtigungen

Berechtigung

Beschreibung

ManageQueue

Ermöglicht dem Benutzer die Project Server-Warteschlange verwalten. Die globale Berechtigung.

Beispiele

Das folgende Verfahren zeigt, wie die WebRequest -Methode für den Project-Webdienst ändern.

Die SOAP-Header für Project PSI-Aufrufe Überwachungs-GUID hinzu:

  1. Legen Sie einen Webverweis auf den Project-Webdienst (https://ServerName/ProjectServerName/_vti_bin/psi/project.asmx). Beispielsweise Name im Web ProjectWSverweisen.

  2. Fügen Sie eine Klasse, die von der ProjectWS.Project -Klasse abgeleitet ist. Nennen Sie beispielsweise die Klasse ProjectDerived.

  3. Fügen Sie einen privaten statischen Klassenmember für einen GUID-Wert. Nennen Sie beispielsweise die Member trackingUid.

    using System;
    using System.Net;
    
    namespace SomeNamespace.ProjectWS
    {
        class ProjectDerived : Project
        {
            private static Guid trackingUid = Guid.Empty;
            . . .
        }
    }
  4. Fügen Sie eine öffentliche Methode der ProjectDerived -Klasse, die den Wert der trackingUidwie den folgenden Code festgelegt wird.

    public static void SetTrackingGuid(Guid track)
    {
        trackingUid = track;
    }
  5. Überschreiben der GetWebRequest -Methode, und fügen Sie die Überwachungs-GUID, den SOAP-Header.

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

    Hinweis

    Der Namensparameter in der Headers.Add -Methode muss "PSTrackingGuid" genau wie angezeigt geschrieben werden.

  6. Erstellen Sie in den anderen Klassen der Anwendung und initialisieren Sie ein ProjectDerived -Objekt für Aufrufe an den Project-Webdienst, beispielsweise:

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

Die GetStatusOfQueueJobs -Methode im folgenden Beispiel wird in einer Klasse mit dem Namen QueueSystemUtilities. GetStatusOfQueueJobs ist eine Überladung mit dem gleichen Methodennamen im Beispiel für ReadJobStatusSimple. Die Methode gibt den Status aller Aufträge mit der gleichen Tracking-ID. Aufträge in der Gruppe werden durch den Parameter trackingGuid angegeben. QueueSystemWS wird von der QueueSystem Webverweis einen beliebigen Namen.

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

Im folgenden Codefragment wird normal Aufrufe der PSI-Methoden, in denen das Project -Objekt hinzugefügt die Überwachungs-GUID der SOAP-Header, wie im vorherigen Verfahren beschrieben.

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

Aufrufe der QueueCreateProject und QueuePublish verwenden die gleiche Überwachungs-GUID, die in die SOAP-Header durch das ProjectDerived -Objekt festgelegt wird. Die QueuePublish -Methode erzeugt zusätzliche Warteschlangenaufträge beispielsweise das Senden der veröffentlichten Project-Daten auf die Berichtsdatenbank an. QueueStatusDataSet Listet den Status aller Aufträge, die die gleichen Tracking-ID und entweder abgeschlossenen Verarbeitung haben oder in der Warteschlange sind. In der folgenden Tabelle werden einige der Felder in der Tabelle QueueStatusDataSet.Status nach der Ausführung des vorherigen Codes.

Warteschlange

ID

Nachricht

Typ

Auftrag

Abschluss

State

Warteschlange

Position

Prozent

Vollständig

Warteschlange

Eintrittszeit

Warteschlange

Verarbeitung

Zeit

Warteschlange

Ausgeführt

Zeit

Wait

Zeit

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 ist ProjectCreate. Der Auftrag ist nicht mehr in der Warteschlange. JobState 4 ist Success.

QueueMessageType 30 ist PublishNotifications. Der Auftrag ist in der Warteschlange dritten; JobState 3 ist QueueJobProcessing.

QueueMessageType 24 ist ProjectPublish. Der Auftrag ist in der Warteschlange vierten; JobState 1 ist ReadyForProcessing. Die erwartete Wartezeit beträgt eine Sekunde.

Siehe auch

Referenz

QueueSystem Klasse

QueueSystem-Member

WebSvcQueueSystem-Namespace

ReadJobStatusSimple

Weitere Ressourcen

How to: Use the QueueSystem Service