1

ServiceNow中,

我有一个项目编号 - PRJ0012345。但是如何找到与这个项目相关的任务/用户故事。

我试过以下服务

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

对于数据检索,我使用了以下 SOAP urlhttps://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与该项目相关的。

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

以上服务网址使用pm_project表格。同样,如果该 url 中还使用了其他表名,请提及。谢谢。

4

1 回答 1

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(父项目的唯一标识符),我可以更改我的 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"
            };

希望有帮助!

于 2015-06-24T14:58:13.847 回答