2

我正在使用应用程序 SDK 2.0。我有以下代码来检索项目的前 100 名团队成员的任务,以进行特定的迭代

                //getting the first 100 elements of the owners Array
                owners = Ext.Array.splice(owners,0,100);

                //Initial configuration of the filter object
                var ownerFilter = Ext.create('Rally.data.QueryFilter', {
                    property: 'Owner.DisplayName',
                    operator:'=',
                    value: owners[0]
                });

                /*Creating the filter object to get all the tasks for 100 members in that project*/
                 Ext.Array.each(owners,function(member){
                 ownerFilter = ownerFilter.or(
                 Ext.create('Rally.data.QueryFilter',{
                 property: 'Owner.DisplayName',
                 operator:'=',
                 value: member

                 }));
                 });

                //Iteration Filter for the Object
                var iterationFilter = Ext.create('Rally.data.QueryFilter', {
                    property: 'Iteration.Name',
                    operator:'=',
                    value: 'Iteration 4.2'
                });

                var filter = ownerFilter.and(iterationFilter);

                Rally.data.ModelFactory.getModel({
                type: 'Task',
                success: function(model) {
                    var taskStore = Ext.create('Rally.data.WsapiDataStore', {
                        model: model,
                        fetch:true,
                        limit:Infinity,
                        pageSize:200,
                        filters:[filter],
                        autoLoad:true,
                        projectScopeDown:true,
                        listeners:{
                            load:function(store,data,success) {
                                Ext.Array.each(data, function(record){
                                   console.log(record.data);
                                });
                            }
                        }

                    });

                }
            });

此代码给我一个 413 错误,因为查询的 URL 太大。请求 URL 包含项目所有 100 个成员的名称。我该如何解决这个问题?是否有任何有效的过滤选项可用?

4

1 回答 1

0

Team Membership 是一个难以过滤 Artifacts 的属性,因为它作为属性驻留在 Users 上,并且是一个不能在 Queries 中使用的集合。

在这种情况下,您最好做更多的过滤客户端。由于团队成员“近似”或关联到项目,您可能希望从过滤项目上的任务开始,即 (Project.Name = "My Project")。然后通过循环并确保每个任务由所有者集合中的团队成员拥有来缩小客户端的范围。

或者,您可能希望在您的任务上使用标签来反映团队名称。然后,您可以通过执行以下查询来过滤您的任务服务器端:

(Tags.Name 包含“我的团队”)

我知道这些不是理想的选择,也可能不是您正在寻找的答案,但是,它们是避免构建大量基于用户名的查询的一些想法。

于 2013-02-01T16:08:17.177 回答