如何查询里程碑的所有工件

时间:2015-04-01 19:11:16

标签: rally

我正在尝试使用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);
        }
    }
});

1 个答案:

答案 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);
                }
            }
        });
    }
});