RPM階層のさまざまなレベルからリーフストーリーを選択するために使用できるRPMツリーの作成に取り組んでいます。
ここで説明する方法を使用することで、目的の機能に近づくことができましたが、RPMの各レベルで返されるリーフストーリーの数にいくつかの不一致があるようです。
次の画像はツリーを示しています(プライバシー保護の目的でプロジェクト名がカバーされています)。黄色のバッジは、RPM階層のそのレベルの下で見つかったリーフストーリーの数を示しています。画像からわかるように、数字は一貫していません。(イニシアチブの下には23枚のリーフストーリーが表示され、ロールアップの1つの下には44枚のリーフストーリーが表示されます。)実際、そのロールアップの下には44枚のリーフストーリーがあるため、問題はイニシアチブレベルでのクエリにあるように見えます。
これが私が書いた関数で、選択したRPMノードの下にあるリーフストーリーのすべてのOIDの配列を返すことを目的としています。
function getDescendants(OID, callback) {
Ext.create('Rally.data.lookback.SnapshotStore', {
autoLoad: true,
pageSize: 1000000,
fetch: ['ObjectID'],
filters: [
{ property: '_ItemHierarchy', value: OID },
{ property: 'Children', value: null },
{ property: '__At', value: new Date().toISOString() },
{ property: '_TypeHierarchy', value: 'HierarchicalRequirement' }
],
listeners: {
load: function(model, data, success) {
if (data && data.length && success) {
var descendants = [];
Ext.Array.each(data, function(story) {
descendants.push(story.get('ObjectID'));
});
callback(Ext.Array.unique(descendants));
} else {
callback([]);
}
}
}
});
}