通过OSLC查询Jazz RTC工作项

时间:2015-06-02 04:50:12

标签: rtc jazz ibm-jazz jazzylistview

如果我使用以下请求知道票证ID,我就可以获得工作项目 https://example.com:8081/ccm/oslc/workitems/37702.json。我想查询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"

3 个答案:

答案 0 :(得分:2)

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

虽然我确信可以手动构建SPARQL,但是更容易使用新建的6.0报表生成器,使用LQE作为数据资源。转到format-> Advanced区域以查看生成的SPARQL,如果您在执行此操作时丢失了图形查询,那么您是否应该感觉到可以在那里编辑的冲动。只需点击几下即可创建一个SPARQL查询,该查询将返回Fred创建的所有WI(使用他的用户ID fred),如:

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提要,请从h_ttps:/ jazzserver:9443 / ccm / query执行GET,参数query = YourSPARQL当然必须编码。

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

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

答案 1 :(得分:1)

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

例如,此查询返回Fred创建的工作项ID的XML列表: h_ttps:// jazzserver:9443 /立方厘米/ RPT /存储库/工作项字段=工作项/工作项目[创建者/名称=%27Fred%27] / ID

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

答案 2 :(得分:0)

附加:有关CCM上OSLC查询的更多详细信息,请参阅https://jazz.net/wiki/bin/view/Main/ResourceOrientedWorkItemAPIv2#Querying_Work_Items

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

BTW我不得不在这篇帖子中混淆/毁掉网址,因为我没有足够的重复点。无论如何,它们不是真正的URL。通过从h_ttps中删除_来修复。

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

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

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

所以它是这样的:

  1. 在继续

  2. 之前,您可能必须使用服务器对客户端进行身份验证
  3. 获取https://jazzserver:9443/ccm/rootservices

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

    1. GET h_ttps:// jazzserver:9443 / ccm / process / project-areas
    2. 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”
      2. 但是请注意,步骤4的URL已经过简化 - 具体而言,必须对参数值dc.owner =“fred”进行编码,以便“和=不会被您的浏览器误解为如果您只是粘贴该URL进入浏览器地址栏 - 我通过将参数名称/值放入参数中来在POSTER中执行此查询。

        HTH