共用方式為


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可以傳回特定工作或一群具有相同的 tracking GUID 工作的狀態資料。

使用佇列的 PSI 方法的開頭的方法名稱的字佇列。若要設定的 PSI 方法使用的專案或時程表佇列追蹤 GUID,新增您使用的佇列方法呼叫每個 PSI Web 服務的 SOAP 標頭的追蹤 GUID。

Project Server 權限

權限

描述

ManageQueue

可讓使用者管理 Project Server 佇列。通用權限。

範例

下列程序示範如何修改 [Project Web 服務的WebRequest方法。

若要新增 Project PSI 呼叫 SOAP 標頭的追蹤 GUID:

  1. 設定 Project Web 服務 (https://ServerName/ProjectServerName/_vti_bin/psi/project.asmx) 的 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;
    }
    注意事項注意事項

    Name 參數中的Headers.Add方法必須拼法"PSTrackingGuid"與顯示內容完全相同。

  6. 在其他類別中的應用程式,建立和初始化ProjectDerived物件的通話至 Project Web 服務,例如:

    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多載。此方法會傳回具有相同的 tracking 識別碼的所有工作的狀態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);
. . .

QueueCreateProject和QueuePublish通話使用相同的 tracking ProjectDerived物件所設定的 SOAP 標頭中的 GUID。QueuePublish方法會產生額外的佇列工作,例如已發佈的專案資料傳送到報表資料庫。QueueStatusDataSet列出具有相同的 tracking 識別碼和 [已完成的處理或佇列上的所有工作的狀態。下表顯示的某些QueueStatusDataSet.Status表之後執行前述的程式碼。

佇列

識別碼

郵件

類型

工作

完成

State

佇列

位置

%

完成

佇列

進入時間

佇列

處理

Time

佇列

完成

Time

等待

Time

1

22

4

-1

100

6/26/2011

14 分 06 秒

6/26/2011

14 分 06 秒

6/26/2011

14 分 06 秒

0

1

30

3

3

100

6/26/2011

14 分 06 秒

6/26/2011

14 分 06 秒

0

1

24

1

4

0

6/26/2011

14 分 06 秒

1

QueueMessageType 22 是ProjectCreate。工作已不再佇列 ;JobState 4 是Success。

QueueMessageType 30 是PublishNotifications。「 工作 」 第三個佇列 ;JobState 3 是QueueJobProcessing。

QueueMessageType 24 是ProjectPublish。「 工作 」 第四個佇列 ;JobState 1 是ReadyForProcessing。預期的等候時間為一秒鐘。

請參閱

參照

QueueSystem 類別

QueueSystem 成員

WebSvcQueueSystem 命名空間

ReadJobStatusSimple

其他資源

How to: Use the QueueSystem Service