Rallyプロジェクトの各ストーリーについて、改訂履歴で、DESCRIPTIONまたはACCEPTANCECRITERIAフィールドのいずれかに変更が加えられた回数をカウントできるようにしたいと思います。私たちは、プロジェクトで解約された要件の量を定量的に見積もろうとしています。
質問する
248 次
1 に答える
2
同僚が書いた簡単な例を次に示します。これは、リビジョン履歴コレクションを解析し、「DESCRIPTION changed」で照合し、結果を表に追加して表示します。リビジョンの概要の代わりにカウントを表示するように変更したり、承認基準フィールドと一致させたりするのは簡単です。おそらく、IterationDropdown やその他の機能も追加したいと思うでしょう。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Copyright (c) 2012 Rally Software Development Corp. All rights reserved -->
<html>
<head>
<title>Revision History Example</title>
<meta name="Name" content="App Example: Revision History" />
<meta name="Version" content="2012.2" />
<meta name="Vendor" content="Rally Labs" />
<script type="text/javascript" src="https://rally1.rallydev.com/apps/1.30/sdk.js?showHeader=false"></script>
<script type="text/javascript">
function revHistoryExample() {
var rallyDataSource = new rally.sdk.data.RallyDataSource(
'__WORKSPACE_OID__',
'__PROJECT_OID__',
'__PROJECT_SCOPING_UP__',
'__PROJECT_SCOPING_DOWN__');
function itemQuery() {
var queryObject = {
key: 'stories',
type: 'HierarchicalRequirement',
fetch: 'Name,ObjectID,FormattedID,RevisionHistory,Revisions,RevisionDescription,CreationDate,LastUpdateDate,Iteration'
query: '(Iteration.Name = "My Iteration")',
};
rallyDataSource.findAll(queryObject, populateTable);
}
function populateTable(results) {
var tableDiv = document.getElementById('aDiv');
var config = { columns:
[{key: 'FormattedIDLink', header: 'Formatted ID', width: 100},
{key: 'Name'},
{key: 'RevisionDescription', header: 'Revision Description'},
{key: 'CreationDate', header: 'Creation Date'}] };
var table = new rally.sdk.ui.Table(config);
// Revision condition to match/look for within Revision history
var revCondition = "DESCRIPTION changed";
for ( i=0 ; i<results.stories.length ; i++ ) {
for ( j=0 ; j<results.stories[i].RevisionHistory.Revisions.length ; j++ ) {
myStory = results.stories[i];
myRevision = myStory.RevisionHistory.Revisions[j];
if (myRevision.Description.indexOf(revCondition)>=0){
myFormattedID = myStory.FormattedID;
myDescription = myRevision.Description;
myCreationDate = myStory.CreationDate;
myFormattedIDLink = new rally.sdk.ui.basic.Link(
{item: myStory, text: results.stories[i].FormattedID}
)
// Clobber fields on Story with info from the matching Revision for easy inclusion in table
results.stories[i].CreationDate = myCreationDate;
results.stories[i].RevisionDescription = myDescription;
results.stories[i].FormattedIDLink = new rally.sdk.ui.basic.Link({item:results.stories[i], text: results.stories[i].FormattedID});
table.addRow(results.stories[i]);
}
}
}
table.display(tableDiv);
};
itemQuery();
}
rally.addOnLoad(revHistoryExample);
</script>
</head>
<body>
<div id="aDiv"></div>
</body>
</html>
于 2012-07-13T20:31:42.990 に答える