如何找到项目中的任务?

时间:2015-06-11 08:50:55

标签: c# .net tfs servicenow

ServiceNow

我正在寻找一个项目编号 - PRJ0012345。但是如何找到与该项目相关的任务/用户。

我曾尝试过以下服务

https://xyz.service-now.com/pm_project.do?WSDL

对于数据检索,我使用了以下SOAP URL https://xyz.service-now.com/pm_project.do?displayvalue=true&SOAP

代码:

           private static string url = "https://xyz.service-now.com/pm_project.do?displayvalue=true&SOAP";
           private static ServiceNowPMProjectService.getRecordsResponseGetRecordsResult[] recordResults;
           var proxy = new ServiceNow_pm_project
            {
                Url = url,
                Credentials = new NetworkCredential(userName, password)
            };

            var objRecord = new ServiceNowPMProjectService.getRecords
            {
                number = "PRJ0012156"
            };

            recordResults = proxy.getRecords(objRecord);

recordResults开始,我无法弄清楚如何找到与此项目相关联的related tasks / userstories

注意:如果还使用了任何其他 服务网址 ,请在此处提及。我将尝试找出相关的用户/任务。

以上服务网址使用pm_project表。同样,如果也使用该URL中的其他表名,请提及。感谢。

1 个答案:

答案 0 :(得分:1)

在ServiceNow中使用ServiceNow的SOAP Web服务检索与项目相关的项目任务,您需要针对项目任务表发出请求(getRecords),查询其父项是您感兴趣的项目的项目任务(在您的项目中)案例PRJ0012345)。

这是因为在ServiceNow中,项目记录(pm_project)不引用项目任务(pm_project_task),因此项目不知道与之关联的项目任务,而是每个项目任务都引用了项目与项目任务记录中的“父母”字段相关。

例如PRJ0012345,其中PRJTASK0010002是一个孩子,与PRJ0012345的父母字段有关。

PRJ0012345
    PRJTASK0010002 (parent=PRJ0012345)
    PRJTASK0010003 (parent=PRJ0012345)
    PRJTASK0010004 (parent=PRJ0012345)
    PRJTASK0010005 (parent=PRJ0012345)

这是一个示例soap请求消息正文,它向pm_project_task SOAP Web服务发出请求并传递查询,以便结果集只包含父项为PRJ0010001的pm项目任务。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pm="http://www.service-now.com/pm_project_task">
   <soapenv:Header/>
   <soapenv:Body>
      <pm:getRecords>       
         <__encoded_query>parentSTARTSWITHPRJ0010001</__encoded_query>       
      </pm:getRecords>
   </soapenv:Body>
</soapenv:Envelope>

如果我知道sys_id(unique identifier of the parent project),我可以改变我的soap请求消息体,以便像这样使用sys_id:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pm="http://www.service-now.com/pm_project_task">
   <soapenv:Header/>
   <soapenv:Body>
      <pm:getRecords>       
         <__encoded_query>parent=91668b5e0ff842003a2d47bce1050e61</__encoded_query>       
      </pm:getRecords>
   </soapenv:Body>
</soapenv:Envelope>

根据您的示例,我建议您尝试修改代码以使用'__encoded_query',如下所示:

var objRecord = new ServiceNowPMProjectService.getRecords
            {
                __encoded_query = "parentSTARTSWITHPRJ0012345"
            };

希望有所帮助!