如果我使用以下请求知道票证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"
答案 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格式的结果。
所以它是这样的:
在继续
XML结果,提取标签jp06中项目区域列表的url:projectAreas属性rdf:resource例如<jp06:projectAreas rdf:resource="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是项目标识符。
但是请注意,步骤4的URL已经过简化 - 具体而言,必须对参数值dc.owner =“fred”进行编码,以便“和=不会被您的浏览器误解为如果您只是粘贴该URL进入浏览器地址栏 - 我通过将参数名称/值放入参数中来在POSTER中执行此查询。
HTH