Freigeben über


QueueSystem.GetJobGroupWaitTime-Methode

Bestimmt die erwartete Zeit, um den Prozess Aufträge des angegebenen Typs in einer Gruppe Auftrag für die Warteschlange.

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

Syntax

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

Parameter

  • trackingID
    Typ: System.Guid

    Nachverfolgen der GUID (JobGroupGUID), die mehrere Jobs zugeordnet.

Rückgabewert

Typ: System.Int32
Anzahl der Sekunden für Aufträge mit der gleichen trackingID und des angegebenen Typs für die Durchführung erwartet.

Hinweise

Die erwartete Wartezeit für Aufträge ist nur ungefähre, basierend auf der durchschnittlichen Wartezeiten für Aufträge mit entsprechenden Typ. GetJobGroupWaitTime berücksichtigt auch die Position der Aufträge in der Warteschlange und die korrelationspriorität Auftrag haben.

Die Namen der PSI-Methoden, mit denen die Projekt- oder Arbeitszeittabellen-Warteschlange mit Warteschlange, beispielsweise QueueCreateProject und QueueUpdateTimesheetzu starten. 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 ProjectDerived-Klasse.

  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 trackingUid, legt fest, wie im folgenden Code gezeigt.

    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 GetExpectedGroupWaitTime -Methode im folgenden Beispiel wird in einer Klasse mit dem Namen QueueSystemUtilities. Die Methode gibt die erwartete Wartezeit für das Projekt zu veröffentlichen Daten an die Berichtsdatenbank gesendet werden. Aufträge in der Gruppe werden durch den Parameter trackingGuid angegeben. QueueSystemWS wird von der QueueSystem Webverweis einen beliebigen Namen.

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

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

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. Der Wert jobGroupWaitTime zeigt nur die erwartete Wartezeit des Auftrags ReportingProjectPublish .

Siehe auch

Referenz

QueueSystem Klasse

QueueSystem-Member

WebSvcQueueSystem-Namespace

Weitere Ressourcen

How to: Use the QueueSystem Service