以下是我正在使用的API版本:
script type="text/javascript" src="/apps/1.33/sdk.js?apiVersion=1.43"></script>
目标是在网格中显示项目组合项目/功能以及该功能的所有子用户故事。然后根据美国字段值,更新项目组合项/功能字段的值。
我可以使用rallydatasource.update
命令更新UserStory的发布字段,但相同的命令不适用于更新项目组合项/功能的字段
以下是我要为Feature
更新的字段。这些不起作用
rallyDataSource.update({_ref:ref, GroomingState: nfGroomingState},onUpdateComplete,onError);
rallyDataSource.update({_ref:ref, c_GroomingState: nfGroomingState},onUpdateComplete,onError);
rallyDataSource.update({_ref:ref, Ready: true},onUpdateComplete,onError);
rallyDataSource.update({_ref:ref, Notes: "This is test"},onUpdateComplete,onError);
rallyDataSource.update({_ref:ref, Architect: "XYZ ABC"},onUpdateComplete,onError);
以下是我要为UserStory
更新的字段。这确实有效。
rallyDataSource.update({
"_ref":sRef,
"Release": [
{
ref:relRef
}
]},
onUpdateComplete,onError);
有人可以帮助我理解我做错了什么吗? 是否在v 1.43中更新了投资组合项目?
答案 0 :(得分:0)
您正在使用技巧?apiVersion=1.43
将WS API版本设置为旧版AppSDK1早于和不支持的版本,并且它的工作范围但不足以使更新正常工作。
我建议AppSDK2
此外,由于PI类型的状态是完整对象(与State或ScheduleState of Defects或UserStories不同),因此必须在此代码中使用_ref:GroomingState: nfGroomingState
您可能正在使用该引用,但代码中并未明确分段。有Ruby example here可用于PI状态。 Rally Ruby工具包位于相同的WS API模型上,因此该示例并非完全不相关。
以下是我尝试将AppSDK1设置为使用WS API版本1.43的详细信息。
无论我如何使用src="/apps/1.33/sdk.js?apiVersion=1.43"
或rallyDataSource.setApiVersion("1.43");
设置版本,我都必须使用父类型:
PortfolioItem
而不是具体的PortfolioItem/Feature
类型:
function itemQuery() {
var queryObject = {
key: "pi",
//type: "PortfolioItem/Feature", //does not work
type: "PortfolioItem",
fetch: "FormattedID,Parent,State,Name",
query: "(Parent.FormattedID = I8)"
};
rallyDataSource.findAll(queryObject, populateTable);
}
这很好用,PortfolioItem / Initiative I8的所有子类型,其类型为PortfolioItem / Feature都会成功返回,如果我想做的就是构建一个网格,它可以工作:
function populateTable(results) {
var tableDiv = document.getElementById('aDiv');
for (var i=0; i < results.pi.length; i++) {
var config = { columns:
[{key: 'FormattedID', header: 'Formatted ID', width: 100},
{key: 'State.Name', header: 'State', width: 100},
]};
var table = new rally.sdk.ui.Table(config);
table.addRows(results.pi);
table.display(tableDiv);
};
返回两个功能,一个已设置State,另一个没有State:
但是,如果我尝试添加更新功能:
function populateTable(results) {
var tableDiv = document.getElementById('aDiv');
for (var i=0; i < results.pi.length; i++) {
if(results.pi[i].State === null){
console.log('state:',results.pi[i].State)
rallyDataSource.update({"_ref":results.pi[i]._ref, "State": "https://rally1.rallydev.com/slm/webservice/v2.0/state/12352608621"});
}
}
//...
返回 "Requested type name "feature" is unknown
错误:
OperationResult: ObjectErrors: Array[1]0: "Requested type name "feature" is unknown."length: 1__proto__: Array[0]Warnings: Array[1]0: "Please update your client to use the latest version of the API. You can find the latest version at https://rally1.rallydev.com/slm/doc/webservice/index.jsp?version=v2.0. No new projects should use this version of the API as it will be removed in the future."length: 1
AppSDK1适用于不再受支持的WS API。最后支持的1.43是今年6月20日。 AppSDK1在WS API的1.32处停止。这就是设置WS API版本的技巧的原因,因为PortfolioItems是在WS API的1.37中引入的。特别是当您使用AppSDK1不再更新后引入的功能时(请参阅WS API versioning),无法保证rallyDataSource.setApiVersion("1.43");
技巧在所有情况下均可使用。