次の方法で共有


QueueSystem.GetJobGroupWaitTimeSimple メソッド

指定されたジョブ グループを処理する、プロジェクト、およびタイムシート キューの残り予想最長時間を指定します。

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

構文

'宣言
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/GetJobGroupWaitTimeSimple", 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 GetJobGroupWaitTimeSimple ( _
    trackingID As Guid _
) As Integer
'使用
Dim instance As QueueSystem
Dim trackingID As Guid
Dim returnValue As Integer

returnValue = instance.GetJobGroupWaitTimeSimple(trackingID)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/QueueSystem/GetJobGroupWaitTimeSimple", 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 GetJobGroupWaitTimeSimple(
    Guid trackingID
)

パラメーター

  • 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という名前のクラスで。このメソッドは、 QueueProjectPublishメソッドに関連するすべてのキュー ジョブの予定待機時間を返します。グループ内のジョブは、 trackingGuidパラメーターで指定します。QueueSystemWSは、任意のQueueSystemの Web 参照の名前です。

public int GetAllExpectedGroupWaitTime(QueueSystemWS.QueueSystem q, 
    Guid trackingGuid)
{
    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.GetAllExpectedGroupWaitTime(queueSystem, trackingGuid);
string waitTime = "After QueuePublish:\t\t" + jobGroupWaitTime.ToString() + " seconds for all related jobs";

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

関連項目

参照先

QueueSystem クラス

QueueSystem メンバー

WebSvcQueueSystem 名前空間

その他の技術情報

How to: Use the QueueSystem Service