如何查询里程碑的所有工件
How to query for all Artifacts of a Milestone
我正在尝试使用 App SDK 2.0 创建有关里程碑的报告,并希望找到已分配给里程碑的所有用户故事。
我尝试使用 getCollection 从里程碑中提取工件。
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'));
});
}
});
}
}
});
我收到以下错误:
Uncaught Rally.data.ModelFactory.getModel(): Could not find registered
factory for type: Artifact 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);
}
}
});
AppSDK2 中存在一个缺陷,它不适用于抽象类型,例如神器,用户权限。
您的第一个代码示例 运行 就是那个缺陷。
但是您的第二个代码示例必须有效。我怀疑如果它对您不起作用,那是范围界定的问题。也许您筛选的里程碑不在您限定的项目中。您可以在商店的上下文中对项目引用进行硬编码,以确保它在正确的项目中查找。我最初在我的默认项目中测试了你的代码,它按原样工作,然后我按如下方式修改它以确保它在非默认项目中找到一个里程碑:
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);
}
}
});
}
});
我正在尝试使用 App SDK 2.0 创建有关里程碑的报告,并希望找到已分配给里程碑的所有用户故事。
我尝试使用 getCollection 从里程碑中提取工件。
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'));
});
}
});
}
}
});
我收到以下错误:
Uncaught Rally.data.ModelFactory.getModel(): Could not find registered factory for type: Artifact 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);
}
}
});
AppSDK2 中存在一个缺陷,它不适用于抽象类型,例如神器,用户权限。 您的第一个代码示例 运行 就是那个缺陷。 但是您的第二个代码示例必须有效。我怀疑如果它对您不起作用,那是范围界定的问题。也许您筛选的里程碑不在您限定的项目中。您可以在商店的上下文中对项目引用进行硬编码,以确保它在正确的项目中查找。我最初在我的默认项目中测试了你的代码,它按原样工作,然后我按如下方式修改它以确保它在非默认项目中找到一个里程碑:
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);
}
}
});
}
});