首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过OSLC查询Jazz RTC工作项

通过OSLC查询Jazz RTC工作项
EN

Stack Overflow用户
提问于 2015-06-02 12:50:12
回答 3查看 6.7K关注 0票数 1

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

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

基于工作项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“

EN

回答 3

Stack Overflow用户

发布于 2015-07-03 06:00:37

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

虽然我确信可以手动构建SPARQL,但是使用6.0中新增的报表构建器要容易得多,因为它使用LQE作为数据源。转到format->Advanced区域查看生成的SPARQL,如果您感到迫切,您可以在那里进行编辑,尽管这样做会丢失图形查询构建。只需单击几下即可创建一个SPARQL查询,该查询将返回由Fred (使用他的用户ID fred)创建的所有WI,如下所示:

代码语言:javascript
复制
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 feed形式的结果,从h_ttps:/jazzserver:9443/ccm/query执行get,参数为query=YourSPARQL,当然,这个参数必须进行编码。

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

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

票数 2
EN

Stack Overflow用户

发布于 2015-07-03 05:02:34

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

不确定您的示例,但我在下面显示的内容在Jazz6.0中可以正常工作。可能还有其他方法可以做到这一点。你可能会在jazz.net上得到更多的回复。

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

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

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

在本例中,我的服务器在jazzserver:9443上。所有GET都需要一个头接受值application/xml。获得JSON格式的结果可能是可能的。

所以它是这样的:

在继续执行GET https://jazzserver:9443/ccm/rootservices

  1. 之前,您可能必须先向服务器验证客户端的身份

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

获取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来执行查询

但是请注意,步骤4的网址是简化的--具体地说,参数值“fred”必须经过编码,这样“dc.owner=”和“=”就不会像你简单地将网址粘贴到浏览器地址栏时那样被你的浏览器误解--我在POSTER中通过将参数名称/值放入参数中完成了这个查询。

HTH

票数 1
EN

Stack Overflow用户

发布于 2015-07-03 05:26:45

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30587567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档