次の方法で共有


QueueSystem.ReadJobStatus メソッド

Project Server キュー サービスでは、指定したジョブの状態を取得します。

名前空間:  WebSvcQueueSystem
アセンブリ:  ProjectServerServices (ProjectServerServices.dll 内)

構文

'宣言
<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
'使用
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
)

パラメーター

  • includeWaitTime
    型: System.Boolean

    場合true、予定待機時間フィールドを追加します。

戻り値

型: WebSvcQueueSystem.QueueStatusDataSet
各ジョブのQueueStatusDataSet.StatusRowデータを要求されたジョブの状態です。

注釈

ReadJobStatusは、特定のジョブまたは同じ追跡用 GUID を持つジョブのグループの状態のデータを返すことができます。

メソッド名のキューのキューを使用する PSI メソッドを開始します。プロジェクトまたはタイムシート キューを使用する PSI メソッドの追跡用 GUID を設定するには、キュー メソッド呼び出しに使用する各 PSI Web サービスの SOAP ヘッダーを追跡中の GUID を追加します。

プロジェクト サーバーのアクセス許可

権限

説明

ManageQueue

Project Server のキューを管理することができます。グローバル アクセス権。

次の手順は、プロジェクトの Web サービスのWebRequestメソッドを変更する方法を示します。

プロジェクトの PSI の呼び出しに SOAP ヘッダーに追跡用 GUID を追加します。

  1. (https://ServerName/ProjectServerName/_vti_bin/psi/project.asmx)、プロジェクトの Web サービスへの Web 参照を設定します。たとえば、Web の名前はProjectWSを参照します。

  2. ProjectWS.Projectクラスから派生するクラスを追加します。たとえば、名前、クラス、 ProjectDerived。

  3. GUID 値のプライベート静的クラス メンバーを追加します。たとえば、 trackingUidのメンバーの名前します。

    using System;
    using System.Net;
    
    namespace SomeNamespace.ProjectWS
    {
        class ProjectDerived : Project
        {
            private static Guid trackingUid = Guid.Empty;
            . . .
        }
    }
    
  4. trackingUid、次のコードなどの値を設定するProjectDerivedクラスにパブリック メソッドを追加します。

    public static void SetTrackingGuid(Guid track)
    {
        trackingUid = track;
    }
    
  5. GetWebRequestメソッドをオーバーライドし、追跡用 GUID を SOAP ヘッダーに追加します。

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

    注意

    Headers.Addメソッドは、name パラメーター綴る必要があります"PSTrackingGuid"と同じようにします。

  6. アプリケーションの他のクラスで作成し、たとえば、プロジェクトの Web サービスへの呼び出しは、 ProjectDerivedオブジェクトを初期化します。

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

次の例では、 GetStatusOfQueueJobsメソッドは、 QueueSystemUtilitiesという名前のクラスで。GetStatusOfQueueJobsは、 ReadJobStatusSimpleの例では、同じメソッド名のオーバー ロードです。同じ追跡 ID を持つすべてのジョブの状態を返しますグループ内のジョブは、 trackingGuidパラメーターで指定します。QueueSystemWSは、任意のQueueSystemの 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;
}

次のコードは PSI メソッドへの通常の呼び出しProjectオブジェクトは、SOAP ヘッダーに追跡用 GUID を追加で、前の手順で説明するようします。

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

GUID は、 ProjectDerivedオブジェクトによって、SOAP ヘッダー内に設定されている追跡をQueueCreateProjectとQueuePublishの両方の呼び出しに使用されます。QueuePublishメソッドは、レポート データベースに発行されたプロジェクトのデータを送信するなどの追加のキュー ジョブを生成します。QueueStatusDataSetは、追跡 id が同じとか、完了した処理またはキューには、すべてのジョブの状態を一覧表示します。次の表は、いくつかのフィールドのテーブルに表示、 QueueStatusDataSet.Status前のコードの実行後に。

キュー

id

メッセージ

プロパティ

ジョブ

完了

State

キュー

位置

Percent/パーセント

終了

キュー

エントリ時刻

キュー

処理

時刻型 (Time)

キュー

完了

時刻型 (Time)

wait

時刻型 (Time)

1

22

4

-1

100

2011/6/26

14:06

2011/6/26

14:06

2011/6/26

14:06

0

1

30

3

3

100

2011/6/26

14:06

2011/6/26

14:06

0

1

24

1

4

0

2011/6/26

14:06

1

QueueMessageType 22 は、 ProjectCreateです。ジョブがキューになったJobState 4 は、 Successです。

QueueMessageType 30 は、 PublishNotificationsです。ジョブがキュー上で 3 番目JobState 3 は、 QueueJobProcessingです。

QueueMessageType 24 は、 ProjectPublishです。ジョブがキュー上で 4 番目JobState 1 は、 ReadyForProcessingです。予定待機時間は 1 秒です。

関連項目

参照先

QueueSystem クラス

QueueSystem メンバー

WebSvcQueueSystem 名前空間

ReadJobStatusSimple

その他の技術情報

How to: Use the QueueSystem Service