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

                    });

                }
            });

クエリの URL が大きすぎるため、このコードで 413 エラーが返されます。リクエスト URL には、プロジェクトの 100 人のメンバー全員の名前が含まれています。この問題を解決するにはどうすればよいですか? 利用可能な効率的なフィルタリング オプションはありますか?

4

1 に答える 1

0

チーム メンバーシップは、ユーザーの属性として存在し、クエリで使用できないコレクションであるため、アーティファクトをフィルター処理するのが難しい属性です。

この場合、クライアント側でより多くのフィルタリングを行う方がよい場合があります。チーム メンバーシップはプロジェクトに「近似」または関連するため、プロジェクトでタスクをフィルタリングすることから始めることをお勧めします (Project.Name = "My Project")。次に、ループして各タスクが所有者コレクション内のチームのメンバーによって所有されていることを確認することにより、クライアント側を絞り込みます。

または、チーム名を反映するタスクでタグを使用するなどの方法を検討することもできます。次に、次のようなクエリを実行して、Tasks サーバー側をフィルタリングできます。

(Tags.Name に「My Team」が含まれています)

これらは理想的なオプションではなく、おそらくあなたが探している答えではないことはわかっていますが、大規模なユーザー名ベースのクエリを作成する必要がないようにするためのいくつかのアイデアです.

于 2013-02-01T16:08:17.177 に答える