4

2つのタスクを同じユーザーストーリーに保存しようとしています。最初のリクエストは常に成功しますが、2番目のサービスリクエストは常に次のメッセージを応答で返します。

同時実行の競合:[このコンテキストで更新のために読み取られてからオブジェクトが変更されました]-ConcurrencyConflictException:更新時に読み取られてから変更されました:オブジェクトクラス:com.f4tech.slm.domain.UserStory:ObjectID:

JavaScriptSDKを使用してタスクを作成しています。私はこれを2回行います:

Rally.data.ModelFactory.getModel({          
    type : 'Task',
    success : function(task) {

        var record = Ext.create(task, {
            Name : taskName,
            State : 'Defined',
            TaskIndex : 1,
            WorkProduct : workProductId,
            Owner : userIdsTeam[owner],
            SyncDevelopmentTasktoAccuRev : accuSync,
            Estimate: hours,
            TargetDeployment: targetDeployment,
            context: {
                  project:'/project/' + currentProjectId,
                  projectScopeDown: true
            },
        });

        record.save({
            callback : afterSaveNewTaskCallback
        });

    }
});

このエラーを取り除き、2つのタスクを正常に保存するためにできることはありますか?

4

2 に答える 2

2

カイルの答えに加えて、を使用しRally.data.BulkRecordUpdaterて作成/更新をキューに入れることもできます。http://developer.rallydev.com/apps/2.0p5/doc/#!/api/Rally.data.BulkRecordUpdater

于 2013-01-07T21:16:31.620 に答える
1

あなたのタスクは両方とも同じ基礎となるユーザーストーリーに関連付けられているので、作成者は両方ともそれをロックして関連付けを設定しようとしています。そのため、2番目のタスクは失敗します。コールバックをチェーン化する必要があります。

Rally.data.ModelFactory.getModel({
    type : 'Task', 
    success : function(taskModel) {
        //Create first task
        var task1 = Ext.create(taskModel, {
            //...fields...
        });
        task1.save({
            callback: function() {
                //Create second task
                var task2 = Ext.create(taskModel, {
                    //...fields...
                });
                task2.save({
                    callback: afterSaveNewTaskCallback
                });
            }
        });
    }
});
于 2013-01-07T18:41:11.750 に答える