2

SDK 1.32 を使用して AgileEVM アプリのカスタマイズに取り組んでおり、プリファレンスを使用して、ユーザーが設定するさまざまな値 (複数の請求可能な料金、フルタイム以外のリソースなど) を保存しています。設定を作成する方法は次のとおりです。

_rallyDataSource.create("preference",
{
    Name: 'BillableRate',
    Project: '/project/__PROJECT_OID__',
    Value: 0
}, function(results) { isTeamLevel = results; } );

ワークスペースは、親プロジェクトに複数のトラックがあり、それらのトラックに複数のチームがある構造になっています。プロジェクト階層のすべてのレベルで適切な EVM データを計算するアプリが必要です。現在のプロジェクトとそのすべての子プロジェクトの設定を取得できないという問題が発生しています。PROJECT_SCOPING_DOWNが true に設定されています。設定は、ストーリー/タスク/などとは異なる方法で処理されるようです..

設定を取得する方法は次のとおりです。

var queryConf = {type: 'Preference',
                 key :'billableRate',
                 query:'(Project = "/project/__PROJECT_OID__")',
                 fetch:true};

_rallyDataSource.findAll(queryConf, preferencesRetrievedCallback);

プロジェクト oid をクエリに含めると、そのプロジェクトに関連付けられた設定のみが取得され、子プロジェクトは取得されません。クエリからプロジェクト oid を削除すると、階層に関係なく、すべての設定が返されます。

CreateAppPreference と GetAppPreferences を使用してこれを達成しようとしましたが、同じ動作を示すように見えました。

私の質問は、ここで何か間違ったことをしていますか? そうでない場合、これが意図された機能である場合、これらの変数を保存して、プロジェクト構造のすべてのレベルで適切にロールアップするにはどうすればよいでしょうか?

よろしくお願いします。

4

1 に答える 1

0

Preference WSAPIエンドポイントは、上記のような明示的なクエリを除いて、URLで渡されたワークスペースまたはプロジェクトのスコープ情報を使用しないという点で少しユニークです。

 (Project = /project/12345)

PROJECT_OIDS_IN_SCOPE hangman 変数を使用して、大きなORのクエリを作成できますが、スコープ内に多数のプロジェクトがある場合、リクエストが大きくなりすぎて失敗する可能性があります...

var queries = [];
var projectOids = '__PROJECT_OIDS_IN_SCOPE__'.split(',');
rally.forEach(projectOids, function(projectOid) {
    queries.push('Project = /project/' + projectOid);
});
var query = rally.sdk.util.Query.or(queries);

それ以外の場合は、現在のプロジェクトで行っているのと同じように、スコープ内のプロジェクトごとに新しい設定要求を行うことができます。

別のオプションは、代わりに設定をワークスペース設定として保存し、値をプロジェクトOIDであるキーと値である値を持つjsonオブジェクトにすることです。

于 2012-12-01T15:52:15.910 に答える