Partager via


QueueSystem.ReadJobStatus - Méthode

Obtient l'état des travaux spécifiés dans le Service de mise en attente de Project Server.

Espace de noms :  WebSvcQueueSystem
Assembly :  ProjectServerServices (dans ProjectServerServices.dll)

Syntaxe

'Déclaration
<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
'Utilisation
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
)

Paramètres

  • includeWaitTime
    Type : System.Boolean

    Si true, incluez le champ de délai d'attente attendue.

Valeur renvoyée

Type : WebSvcQueueSystem.QueueStatusDataSet
État des travaux demandé, avec les données QueueStatusDataSet.StatusRow pour chaque travail.

Remarques

ReadJobStatus peut renvoyer des données d'état des travaux spécifiques ou d'un groupe de projets qui ont le même GUID de suivi.

Méthodes PSI qui utilisent une file d'attente commencent par le mot en file d'attente dans le nom de la méthode. Pour définir le GUID de suivi pour les méthodes PSI qui utilisent la file d'attente projet ou feuille de temps, ajouter le GUID de suivi à l'en-tête SOAP de chaque service Web de la PSI que vous utilisez pour les appels de méthode en file d'attente.

Autorisations Project Server

Autorisation

Description

ManageQueue

Permet à l'utilisateur de gérer la file d'attente de Project Server. Autorisation globale.

Exemples

La procédure suivante montre comment modifier la méthode WebRequest pour le service Web de projet.

Pour ajouter un GUID de suivi à l'en-tête SOAP pour les appels PSI Project :

  1. Définissez une référence Web au service Web de projet (https://ServerName/ProjectServerName/_vti_bin/psi/project.asmx). Par exemple, le nom du site Web référence ProjectWS.

  2. Ajouter une classe qui dérive de la classe ProjectWS.Project . Par exemple, nommez la classe ProjectDerived.

  3. Ajouter un membre de la classe statique privée pour une valeur GUID. Par exemple, nommez le membre trackingUid.

    using System;
    using System.Net;
    
    namespace SomeNamespace.ProjectWS
    {
        class ProjectDerived : Project
        {
            private static Guid trackingUid = Guid.Empty;
            . . .
        }
    }
  4. Ajoutez une méthode publique à la classe ProjectDerived qui définit la valeur de trackingUid, tels que le code suivant.

    public static void SetTrackingGuid(Guid track)
    {
        trackingUid = track;
    }
  5. Substituez la méthode GetWebRequest et ajouter le GUID de suivi à l'en-tête SOAP.

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

    Notes

    Le paramètre name dans la méthode Headers.Add doit être orthographié "PSTrackingGuid" exactement comme indiqué.

  6. Dans les autres classes de votre application, créer et initialiser un objet ProjectDerived pour les appels vers le service Web de projet, par exemple :

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

La méthode GetStatusOfQueueJobs dans l'exemple suivant est dans une classe nommée QueueSystemUtilities. GetStatusOfQueueJobs est une surcharge portant le même nom de méthode dans l'exemple de ReadJobStatusSimple. La méthode renvoie l'état de tous les travaux avec le même ID de suivi. Les travaux du groupe sont spécifiés par le paramètre trackingGuid . QueueSystemWS est un nom arbitraire de la référence Web QueueSystem .

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

Le fragment de code suivant effectue des appels normales pour les méthodes PSI dans laquelle l'objet Project ajoute le GUID de suivi à l'en-tête SOAP, comme décrit dans la procédure précédente.

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

Les appels à la fois les QueueCreateProject et QueuePublish utilisent même GUID, qui est définie dans les en-têtes SOAP par l'objet ProjectDerived de suivi. La méthode QueuePublish engendre des travaux en file d'attente supplémentaires telles qu'envoyer les données de projet publié à la base de données de création de rapports. QueueStatusDataSet indique l'état de tous les travaux qui ont le même ID de suivi et ont un traitement terminé ou figurant dans la file d'attente. Le tableau suivant montre certains champs dans la table QueueStatusDataSet.Status après l'exécution du code précédent.

File d’attente

ID

Message

Type

Travail

Saisie semi-automatique

State

File d’attente

Position

%

Installation complète

File d’attente

Heure d’entrée

File d’attente

Traitement

Time

File d’attente

Effectuée

Time

Wait

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 est ProjectCreate. Le travail n'est plus dans la file d'attente ; JobState 4 est Success.

QueueMessageType 30 est PublishNotifications. Le travail est la troisième dans la file d'attente ; JobState 3 est QueueJobProcessing.

QueueMessageType 24 est ProjectPublish. Le travail est le quatrième sur la file d'attente ; JobState 1 est ReadyForProcessing. Le délai d'attente attendue est une seconde.

Voir aussi

Référence

QueueSystem classe

QueueSystem - Membres

WebSvcQueueSystem - Espace de noms

ReadJobStatusSimple

Autres ressources

How to: Use the QueueSystem Service