0

我一直在尝试查询 Rally 只是为了通过其 ObjectID 获取某个对象,但在许多情况下我最终需要它的父对象。例如,对于一项任务,我需要其关联的用户故事和该故事的特征。它最终变成了一连串的回调(公平的警告,这很丑陋)——任何人都可以推荐一个更有效的解决方案吗?通过 OID 查询的能力很好,但太糟糕了,我需要的不仅仅是有关该 OID 的信息。(注意 - 解决方案必须使用 WSAPI,而不是 LBAPI)。

    Rally.data.WsapiModelFactory.getModel({
        type: 'Task',
        context: {
            workspace: Rally.util.Ref.getRelativeUri()
        },
        success: function(taskModel) {
            taskModel.load(oid, {
                scope: this,
                callback: function(taskRecord, op, success) {
                    if (taskRecord && taskRecord.data.WorkProduct && taskRecord.data.WorkProduct._type == "HierarchicalRequirement") {


                        // get User Story
                        Rally.data.WsapiModelFactory.getModel({
                            type: 'User Story',
                            context: {
                                workspace: Rally.util.Ref.getRelativeUri()
                            },
                            success: function(userStoryModel) {
                                userStoryModel.load(taskRecord.data.WorkProduct._ref, {
                                    scope: this,
                                    callback: function(storyRecord, op, success) {

                                        if (storyRecord && storyRecord.data && storyRecord.data.Feature) {

                                            // Get Feature
                                            Rally.data.WsapiModelFactory.getModel({
                                                type: 'PortfolioItem/Feature',
                                                context: {
                                                    workspace: Rally.util.Ref.getRelativeUri()
                                                },
                                                success: function(featureModel) {
                                                    featureModel.load(storyRecord.data.Feature._ref, {
                                                        scope: this,
                                                        callback: function(featureRecord) {
                                                            displayTask(oid, taskRecord, storyRecord, featureRecord);
                                                        }
                                                    });
                                                }
                                            });
                                        }
                                    }
                                });
                            }
                        });
                    }
                }
            });
        }
    });
4

1 回答 1

2

您可以在单个查询中直接拉入工作产品父项及其关联的功能。试试这个:

    Ext.create('Rally.data.WsapiDataStore', {
        model   : 'Task',
        fetch   : ['WorkProduct','Name','Feature'],
        filters : [{
            property : 'ObjectID',
            value    : OID
        }]
    }).load({
        callback : function(records, operation, success) {
            var task      = records[0];
            var userStory = task.get('WorkProduct');
            var feature   = userStory.Feature;
        }
    });
于 2014-07-01T16:59:55.713 回答