我正在使用Rally SDK1.33,因为我最终需要使用Rally之外的LoginKey来显示信息。我正在尝试查询有关PortfolioItem的信息,但看起来没有返回任何结果。 - 但是,如果我通过webservice doc页面查询,我会得到一个结果。
使用以下链接(将123456789替换为PortfolioItem的实际ObjectID,将工作空间987654321替换为真实工作区),我将返回PortfolioItem对象:
但是,如果我尝试从代码中查询它,我会在没有任何结果且没有任何错误的情况下返回查询结果(再次 - 使用真正的PortfolioItem ObjectID而不是123456789)。
ExternalPortfolio
<!--App information-->
<meta name="Name" content="App: ExternalPortfolio"/>
<meta name="Version" content="1.0"/>
<meta name="Vendor" content=""/>
<!--Include SDK-->
<script type="text/javascript" src="https://rally1.rallydev.com/apps/1.33/sdk.js?debug=true&apiVersion=1.43"></script>
<script type="text/javascript">
function onLoad() {
rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__',
'__PROJECT_OID__',
'__PROJECT_SCOPING_UP__',
'__PROJECT_SCOPING_DOWN__');
var objectId = 123456789;
var queryConfig = {
type: 'PortfolioItem',
key: 'portfolio',
fetch: 'FormattedID,Name',
query: '(ObjectID = ' + objectId +')'
};
rallyDataSource.findAll(queryConfig, showPortfolio, errorCallBack);
function showPortfolio(results) {
console.log(results);
}
function errorCallBack(response) {
console.log('Got problems!')
console.log(response.Errors);
console.log(response.Warnings);
}
}
rally.addOnLoad(onLoad);
</script>
<style type="text/css">
.externalPortfolio {
/* Add app styles here */
}
</style>
我已经创建了许多关于故事和缺陷的报告(大多数都在Rally之外运行),但从来没有用于PortfolioItem。 - 我在这里错过了什么吗?或者v1.xx SDK或v1.x API在处理投资组合项目时是否存在严重错误?
答案 0 :(得分:1)
这可能不是您遇到的问题,但如果您在拉力赛之外运行,请尝试设置两者工作区OID和项目OID:
rallyDataSource = new rally.sdk.data.RallyDataSource(
'12345678910',
'12345678911',
'__PROJECT_SCOPING_UP__',
'__PROJECT_SCOPING_DOWN__');
当我最初仅使用Workspace OID运行您的示例时,我发现像您一样,我没有收到任何结果,也没有返回任何错误。但是,请在Chrome的网络控制台中检查生成的查询网址:
https://rally1.rallydev.com/slm/webservice/1.43/adhoc.js?_method=POST&adHocQuery={"portfolio":"/portfolioitem?query=(ObjectID = \"152345647\")&pagesize=200&fetch=FormattedID,Name&workspace=/workspace/12345678910&project=${/user/userprofile/defaultProject}&projectScopeUp=false&projectScopeDown=true"}&jsonp=dojo.io.script.jsonp_dojoIoScript1._jsonpCallback
您可以看到用户的默认项目作为Project参数传递。但是,具有该特定ObjectID的PI位于不同的工作区中。结果,我收到了以下错误:
{
portfolio: {
_rallyAPIMajor: "1",
_rallyAPIMinor: "43",
Errors: [
"The specified project must be in the specified workspace. Project OID=12345678921 is in Workspace OID=1234569840 and the specified Workspace is OID=12345678910."
],
Warnings: [ ],
_ref: "/portfolioitem?query=(ObjectID = "152345647")&pagesize=200&fetch=FormattedID,Name&workspace=/workspace/12345678910&project=/project/12345678921&projectScopeUp=false&projectScopeDown=true",
TotalResultCount: 0,
StartIndex: 0,
PageSize: 0,
Results: [ ]
}
}
一旦我将项目OID包含在rallyDataSource
的新版本而不是刽子手中,我在控制台中获得了预期的结果:
Object {errors: Array[0], warnings: Array[0], portfolio: Array[1]}
errors: Array[0]
portfolio: Array[1]
0: Object
DirectChildrenCount: 0
FormattedID: "F10"
Name: "PI Feature 10"
_objectVersion: "7"
_rallyAPIMajor: "1"
_rallyAPIMinor: "43"
_ref: "https://rally1.rallydev.com/slm/webservice/1.43/portfolioitem/feature/152345647.js"
_refObjectName: "PI Feature 10"
_type: "PortfolioItem/Feature"
__proto__: Object
length: 1
__proto__: Array[0]
warnings: Array[0]
__proto__: Object