我正在尝试使用App SDK 2.0创建有关里程碑的报告,并希望找到已分配到里程碑的所有用户故事。
我尝试使用getCollection从里程碑中取出Artifacts。
Ext.create('Rally.data.wsapi.Store', {
model : 'Milestone',
filters : [ {
property : 'ObjectID',
operator : '=',
value : milestone.get("ObjectID")
} ],
fetch : [ 'Artifacts' ],
limit : Infinity,
autoLoad : true,
listeners : {
load : function(store, records) {
var record = records[0];
var info = record.get('Artifacts');
var count = info.Count;
record.getCollection('Artifacts').load({
fetch : [ 'ObjectID' ],
callback : function(records, operation, success) {
Ext.Array.each(records, function(artifact) {
console.log(artifact.get('ObjectID'));
});
}
});
}
}
});
我收到以下错误:
未捕获的Rally.data.ModelFactory.getModel():找不到已注册的 工厂类型:工件sdk-debug.js:7078
从https://rally1.rallydev.com/slm/doc/webservice/开始,似乎没有对用户故事或PortfolioItem查询里程碑。无论如何我使用Tasks语法尝试了它,它没有返回任何内容。
Ext.create('Rally.data.wsapi.Store', {
model : 'UserStory',
filters : [ {
property : 'Milestones',
operator : 'contains',
value : milestone.get("_ref")
} ],
fetch : [ 'ObjectID' ],
limit : Infinity,
autoLoad : true,
listeners : {
load : function(store, records) {
console.log(records);
}
}
});
答案 0 :(得分:0)
AppSDK2中存在一个缺陷,即它不适用于抽象类型,例如:神器,UserPermissions。 您的第一个代码示例遇到了该缺陷。 但是你的第二个代码示例必须有效。我怀疑它是否对你不起作用是一个范围问题。也许您过滤的里程碑不在您所限定的项目中。您可以在商店的上下文中对项目引用进行硬编码,以确保它正在查找正确的项目。我最初在我的默认项目中测试了你的代码,它按原样运行,然后我按如下方式修改它,以确保它在非默认项目中找到里程碑:
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function() {
Ext.create('Rally.data.wsapi.Store', {
model : 'UserStory',
context:{
project: '/project/16662089077'
},
filters : [
{
property : 'Milestones',
operator : 'contains',
value : "/milestone/33215216897"
}
],
fetch : [ 'ObjectID' ],
limit : Infinity,
autoLoad : true,
listeners : {
load : function(store, records) {
console.log(records);
}
}
});
}
});