0

そこで、変更セットのモデルを作成し、2 つの成果物を含む変更セットを取得して、Artifacts フィールドをフェッチしました。それをコンソール ログに記録すると、2 つの項目が表示されます。このフィールドにプッシュする別の項目 (タスク) があります。アーティファクト配列をコンソール ログに記録すると、3 つのアイテムが得られます。

しかし、直接または set() を使用してフィールドを設定すると、変更セットをコンソール ログに記録しても、まだ 2 つのアーティファクトしかないと見なされます。私は何を間違っているのでしょうか?

Rally.data.ModelFactory.getModel({
      type: 'Changeset',
      success: function(model) {
             model.load( '1234', {
                  fetch: [ 'Artifacts' ],
                  callback: function(result, operation) {
                            if ( operation.wasSuccessful() ){
                                var artifacts = result.get('Artifacts');
                                if ( ! artifacts ) {
                                    artifacts = [];
                                }
                                artifacts.push( item );
                                console.log( artifacts );

                                result.data.Artifacts = artifacts;
                                //result.set('Artifacts', artifacts);

                                console.log( result );
                                result.save( {
                                    callback: function( result, operation ) {
                                    console.log( "After saving: ", operation );
                                    }
                                    } );
                            }
                   }
             })
      }
});
4

2 に答える 2

1

同じ配列で設定するときにレコードをダーティとしてマークしないため、新しいアーティファクト配列を作成する必要があるようです (おそらく Rally コードまたは Ext コードのバグ)。また、アーティファクトのデータ オブジェクトを渡す必要があります (以下の例では、newUserStory.data)。

コードを微調整して、リポジトリ、変更セット、およびユーザー ストーリーを作成する例を作成しました。次に、そのユーザー ストーリーを変更セットの成果物コレクションに添付します。このコード全体を実行する場合は、各オブジェクトの作成を更新コードとは別に実行する必要があります。これは非同期ですが、相互に依存しています。もう 1 つのオプションは、各 save() 呼び出し内でコールバックを作成することです。

必要なドメイン オブジェクトを作成します。

   var newRepo, newChangeset, newUserStory;

Rally.data.ModelFactory.getModel({
      type: 'SCMRepository',
      success: function(model) {
          newRepo = new model({
            Name: 'Repo1',
            SCMType: 'SCM Type 1'   
          });
          newRepo.save();
      }
});

Rally.data.ModelFactory.getModel({
      type: 'Changeset',
      success: function(model) {
          newChangeset = new model({
            CommitTimestamp: '2012-06-20 01:00:00',
            Revision: 'revision1',
            SCMRepository: newRepo.data._ref
          });
          newChangeset.save();
      }
});


Rally.data.ModelFactory.getModel({
      type: 'UserStory',
      success: function(model) {
          newUserStory = new model({
            Name: 'Test story ' + new Date()
          });
          newUserStory.save();
      }
});

変更セットを更新します。

Rally.data.ModelFactory.getModel({
      type: 'Changeset',
      success: function(model) {
          model.load( newChangeset.data.ObjectID, {
                  fetch: [ 'Artifacts' ],
                  callback: function(result, operation) {
                      if ( operation.wasSuccessful() ){         
                            var artifacts = result.get('Artifacts'),
                                artifactsCopy = Ext4.Array.clone(artifacts);

                            artifactsCopy.push(newUserStory.data);
                            result.set('Artifacts', artifactsCopy);

                            result.save( {
                                callback: function( result, operation ) {
                                    if (operation.wasSuccessful()) {
                                        var artifactInUpdate = Ext4.Array.filter(result.data.Artifacts, function(artifact) {
                                            return artifact._ref === newUserStory.data._ref;
                                        });

                                        console.log('Userstory added to changeset:', artifactInUpdate.length > 0);
                                    } else { 
                                        console.log('update not successful');
                                    }
                                }
                            });
                        }
                  }
           });
      }
});
于 2012-06-20T17:30:27.423 に答える
0

これは、週末の SaaS リリースで修正されました。アーティファクトの配列を送信できるようになり、WSAPI の他の配列と同様に、その配列が元のリストを置き換えます。

于 2012-07-24T18:22:26.300 に答える