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
)
参数
qsrDS
类型:WebSvcQueueSystem.QueueStatusRequestDataSetQueueStatusRequestDataSet.StatusRequestRow可以指定跟踪 GUID (JobGroupGUID)、 作业 GUID 和队列消息类型的作业完成状态。
includeWaitTime
类型:System.Boolean如果true,包括预期的等待时间字段。
sortColumn
类型:WebSvcQueueSystem.SortColumn指定要排序的作业列表中的字段。
sortOrder
类型:WebSvcQueueSystem.SortOrder指定是否为排序和在什么次序。
返回值
类型:WebSvcQueueSystem.QueueStatusDataSet
对于每个作业的QueueStatusDataSet.StatusRow数据的请求作业的状态。
备注
ReadJobStatus可以返回特定作业或一组具有的相同的跟踪 GUID 的作业的状态数据。
使用队列的 PSI 方法开头的单词队列中的方法名称。若要设置的跟踪 GUID 使用项目或时间表队列的 PSI 方法,将添加到的每个用于队列方法调用的 PSI Web 服务的 SOAP 标头的跟踪 GUID。
Project Server 权限
权限 |
说明 |
---|---|
允许用户管理 Project Server 队列。全局权限。 |
示例
下面的过程演示如何修改 Project Web 服务的WebRequest方法。
向 Project PSI 呼叫的 SOAP 标头中添加跟踪 GUID: |
---|
|
在以下示例中的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对象将跟踪 GUID 添加到的 SOAP 标头,其中一过程中所述。
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呼叫使用相同的跟踪的 SOAP 标头中设置由ProjectDerived对象的 GUID。QueuePublish方法生成如已发布的项目数据发送到报告数据库的其他队列作业。QueueStatusDataSet列出具有相同的跟踪 ID 和任一已完成的处理或队列上的所有作业的状态。下表显示的某些字段QueueStatusDataSet.Status表中运行前面代码之后。
队列 ID |
消息 类型 |
作业 完成 State |
队列 位置 |
百分比 完整 |
队列 进入时间 |
队列 处理 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。该作业已在队列中 ; 第三个JobState 3 是QueueJobProcessing。
QueueMessageType 24 是ProjectPublish。作业的第四个队列 ;JobState 1 是ReadyForProcessing。预期的等待时间为一秒。