1

如果我使用以下请求 https://example.com:8081/ccm/oslc/workitems/37702.json知道票证 ID,则可以获取工作项。我想查询 RTC 以获取 gievn 用户拥有或基于标签的所有 wrorkitems。

我正在使用以下查询来获取数据,但无法获取详细信息。

根据工作项的所有者搜索 https://example.com:8081/ccm/oslc?oslc_cm.query=dc:owner= "abc@gmail.com"

根据标签搜索 https://example.com:8081/ccm/oslc?oslc_cm.query=dc:subject= "mc"

4

3 回答 3

3

从爵士乐中获取数据的另一种方法是使用 SPARQL。您可以通过查找 jp06:query 从 rootservices (GET h_ttps://jazzserver:9443/ccm/rootservices) 找到 SPARQL 端点。

虽然我确信手动构建 SPARQL 是可能的,但使用新的 6.0 报告生成器,使用 LQE 作为数据源要容易得多转到格式-> 高级区域以查看生成的 SPARQL,如果您有编辑的冲动,尽管这样做时会丢失图形查询构建。只需单击几下即可创建一个 SPARQL 查询,该查询将返回 Fred(使用他的用户 ID fred)创建的所有 WI,例如:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX oslc_config: <http://open-services.net/ns/config#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX oslc: <http://open-services.net/ns/core#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX oslc_cm: <http://open-services.net/ns/cm#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX process: <http://jazz.net/ns/process#>

SELECT DISTINCT 
    ?rtc_cm_WorkItem1_projectArea
    ?rtc_cm_WorkItem1_shortId
    ?rtc_cm_WorkItem1_title
    ?rtc_cm_WorkItem1
    ?rtc_cm_WorkItem1_creator
WHERE {
  VALUES ( ?rtc_cm_WorkItem1_creator_enumValue )
  {
    ( <https://jazzserver:9443/jts/users/fred> )
  }
  ?rtc_cm_WorkItem1_uri rdf:type oslc_cm:ChangeRequest.
  ?rtc_cm_WorkItem1_uri dcterms:creator ?rtc_cm_WorkItem1_creator_enumValue.
  OPTIONAL {?rtc_cm_WorkItem1_creator_enumValue foaf:name ?rtc_cm_WorkItem1_creator_enumName.}
  ?rtc_cm_WorkItem1_uri dcterms:title ?rtc_cm_WorkItem1_title.
  OPTIONAL {
    ?rtc_cm_WorkItem1_uri process:projectArea ?rtc_cm_WorkItem1_projectArea_enumValue.
    OPTIONAL {?rtc_cm_WorkItem1_projectArea_enumValue rdfs:label|dcterms:title ?rtc_cm_WorkItem1_projectArea_enumName.}
  }
  OPTIONAL {?rtc_cm_WorkItem1_uri oslc:shortId ?rtc_cm_WorkItem1_shortId.}
  OPTIONAL {?rtc_cm_WorkItem1_ver dcterms:isVersionOf ?rtc_cm_WorkItem1_uri; rdf:type oslc_config:VersionResource.}
  OPTIONAL {?rtc_cm_WorkItem1_uri process:projectArea ?rtc_cm_WorkItem1_paUri.}
  FILTER( !bound(?rtc_cm_WorkItem1_paUri) || NOT EXISTS{ ?rtc_cm_WorkItem1_paUri oslc:archived true. })
  BIND( IF (bound(?rtc_cm_WorkItem1_ver), concat(str(?rtc_cm_WorkItem1_uri), "?oslc_config.context="), ?rtc_cm_WorkItem1_uri) as ?rtc_cm_WorkItem1)
  BIND( COALESCE(?rtc_cm_WorkItem1_creator_enumName, ?rtc_cm_WorkItem1_creator_enumValue) as ?rtc_cm_WorkItem1_creator)
  BIND( COALESCE(?rtc_cm_WorkItem1_projectArea_enumName, ?rtc_cm_WorkItem1_projectArea_enumValue) as ?rtc_cm_WorkItem1_projectArea)
}

然后,要将结果作为 Atom 提要获取,请使用参数 query=YourSPARQL 从 h_ttps:/jazzserver:9443/ccm/query 执行 GET,当然必须对其进行编码。

我确信手动构建这个简单的查询并不难,但是报表生成器使它变得微不足道,而且它还理解元模型,因此有助于选择关系和属性名称 - 更少的错误,因为你不必(错误)输入这些。您还可以发布/共享查询,并使用它们来填充仪表板:-)

希望这三种方法中的一种能满足您的需求。

于 2015-07-02T22:00:36.600 回答
2

补充:这里有更多关于 CCM 工作项的 OSLC 查询的详细信息https://jazz.net/wiki/bin/view/Main/ResourceOrientedWorkItemAPIv2#Querying_Work_Items

不确定您的示例,但我在下面显示的内容适用于 Jazz 6.0。可能还有其他方法可以做到这一点。您可能会在 jazz.net 上获得更多回复。

顺便说一句,我不得不混淆/破坏这篇文章中的网址,因为我没有足够的代表点。无论如何,它们都不是真正的 URL。通过从 h_ttps 中删除 _ 来修复。

CM 查询有一个 OSLC 规范:http: //open-services.net/bin/view/Main/OSLCCoreSpecQuery

要将查询应用于项目区域,首先您必须获取项目区域标识符,从项目列表中获取该标识符,然后通过查询根服务获取用于获取项目列表的 URL。

在此示例中,我的服务器位于 jazzserver:9443 上。所有 GET 都需要一个标头 Accept 值 application/xml。可能会得到 JSON 格式的结果。

所以它是这样的:

  1. 在继续之前,您可能必须向服务器验证您的客户端

  2. 获取https://jazzserver:9443/ccm/rootservices

XML 结果,提取标签 jp06:projectAreas 属性 rdf:resource 中项目区域列表的 url 例如<jp06:projectAreas rdf:resource="h_ttps://jazzserver:9443/ccm/process/project-areas"/>

  1. GET h_ttps://jazzserver:9443/ccm/process/project-areas

XML 结果,从 jp06:url 的文本内容中提取项目 URL 嵌套如下:

jp06:项目区域... jp06:项目区域... jp06:url

在我的情况下,这是 h_ttps://jazzserver:9443/ccm/process/project-areas/_pXsVsRmqEeWdnsGEjrjqng

_pXsVsRmqEeWdnsGEjrjqng 是项目标识符。

  1. 通过 GET 从工作项的项目区域列表中执行查询,例如 h_ttps://jazzserver:9443/ccm/oslc/contexts/_pXsVsRmqEeWdnsGEjrjqng/workitems?oslc.query=dc.owner="fred"

但是请注意,步骤 4 的 URL 已简化 - 具体而言,必须对参数值 dc.owner="fred" 进行编码,以便您的浏览器不会误解 " 和 = 就像您只是将该 URL 粘贴到浏览器中时那样地址栏 - 我在 POSTER 中通过将参数名称/值放入参数中进行了此查询。

高温高压

于 2015-07-02T21:02:34.007 回答
1

可报告的 REST API 可能会提供另一种获取所需信息的方式:https ://jazz.net/wiki/bin/view/Main/ReportsRESTAPI

例如,此查询返回 Fred 创建的工作项 ID 的 XML 列表:h_ttps://jazzserver:9443/ccm/rpt/repository/workitem?fields=workitem/workItem[creator/name=%27Fred%27]/id

注意 Fred 是用户名,而不是用户 ID(用户 ID 用于登录)。在我发布的 oslc 示例中,使用了用户 ID。

于 2015-07-02T21:26:45.157 回答