次の方法で共有


QueueSystem.GetJobGroupWaitTime メソッド

ジョブを処理するジョブ グループ内の指定した種類のキューの予想時間を決定します。

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

構文

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

パラメーター

  • trackingID
    型: System.Guid

    複数のジョブに割り当てられた GUID (JobGroupGUID) を追跡します。

戻り値

型: System.Int32
(秒) を同じtrackingIDを持つジョブを完了するには、指定した型の数が必要です。

注釈

ジョブの予定待機時間はおおよそのもののような種類のジョブの平均待機時間に基づいています。GetJobGroupWaitTimeも考慮のジョブがキューにジョブの相互関係の優先順位が位置します。

プロジェクトまたはタイムシート キューを使用する PSI メソッドの名前はQueueCreateProjectとQueueUpdateTimesheetなど、キューから始まります。プロジェクトまたはタイムシート キューを使用する 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;

次の例では、 GetExpectedGroupWaitTimeメソッドは、 QueueSystemUtilitiesという名前のクラスで。プロジェクトをレポート データベースに送信するデータを発行するための必要な待機時間が返されます。グループ内のジョブは、 trackingGuidパラメーターで指定します。QueueSystemWSは、任意のQueueSystemの Web 参照の名前です。

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

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

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

QueueCreateProjectとQueuePublishの両方の呼び出しを追跡、 ProjectDerivedオブジェクトでは、SOAP ヘッダーで設定されている GUID を使用します。QueuePublishメソッドは、レポート データベースに発行されたプロジェクトのデータを送信するなどの追加のキュー ジョブを生成します。jobGroupWaitTime値は、 ReportingProjectPublishジョブの予定待機時間のみを示します。

関連項目

参照先

QueueSystem クラス

QueueSystem メンバー

WebSvcQueueSystem 名前空間

その他の技術情報

How to: Use the QueueSystem Service