ユーザーはRallyのオブジェクトであるため、アーティファクトの所有者属性をRallyユーザー名の文字列に設定することはできません。代わりに、所有者をrefの形式で有効なRallyユーザーへの参照に設定する必要があります/user/12345678910
。 integerは、対象のユーザーのオブジェクトIDです。rallyDataSourceとAppSDKを使用して、Rallyユーザー名の文字列値に対してクエリを実行し、必要な参照を取得できます。
電子メール形式のユーザー名を取得し、必要なUserオブジェクトへの参照をRallyに照会するというアイデアを示す基本的な例を含めました。この例では、単純なDOM<select>
コンポーネントを使用して、ユーザー名データの「外部」ソースをシミュレートします(この場合、YQL JSONを使用してJQueryを介して入力されます)。例では、AppSDK ObjectDropdownの代わりにこれを実行します。これは、これを実現する最も簡単な方法ですが、ユーザーセレクターのソースとして外部ソースをポーリングしているため、ニーズに適合しません。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Copyright (c) 2011 Rally Software Development Corp. All rights reserved -->
<html>
<head>
<title>Component Example: Add New User Story, "External" User Chooser</title>
<meta name="Name" content="Component Example: Add New User Story, 'External' User Chooser" />
<meta name="Version" content="2012.1" />
<meta name="Vendor" content="Rally Labs" />
<script type="text/javascript" src="https://rally1.rallydev.com/apps/1.26/sdk.js"></script>
<script type="text/javascript">
// Global variables to store Reference to selected User
var userRef = null;
var rallyDataSource;
var getUserRef = function(results) {
var user = results.users[0];
userRef = user._ref;
};
function userSelectChanged() {
var userChooser = document.getElementById("userChooser");
var strUser = userChooser.options[userChooser.selectedIndex].value;
queryString = '(UserName = "' + strUser + '")';
var userQueryConfig = {
type : 'user',
key : 'users',
fetch: 'UserName,DisplayName,Role',
query: queryString
};
rallyDataSource.findAll(userQueryConfig, getUserRef);
}
function onAddNewAdd(addNew, eventArgs){
var createdItem = eventArgs.item;
var createdFormattedId = createdItem.FormattedID;
alert("Created new User Story with Formatted ID: " + createdFormattedId);
}
function onAddNewPreCreate(addNew, eventArgs)
{
// Grab Rally ref of User selected in HTML dropdown
// set it as Owner attribute of created User Story
eventArgs.item["Owner"] = userRef;
}
function onLoad() {
rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__',
'__PROJECT_OID__',
'__PROJECT_SCOPING_UP__',
'__PROJECT_SCOPING_DOWN__');
var addNewConfig = {
types : ["HierarchicalRequirement"]
};
// Populate userRef from Rally for default selected user:
userSelectChanged();
var addNew = new rally.sdk.ui.AddNewArtifact(addNewConfig, rallyDataSource);
addNew.addEventListener("onAdd",onAddNewAdd);
addNew.addEventListener('onPreCreate', onAddNewPreCreate);
addNew.display("addNewDiv");
}
rally.addOnLoad(onLoad);
</script>
</head>
<body>
<div id="addNewDiv"></div>
<div id="userChooserDiv">
Select a Rally User as Story Owner:
<select id="userChooser" onChange="userSelectChanged()">
<option selected value="user1@company.com">user1@company.com</option>
<option value="user2@company.com">user2@company.com</option>
<option value="user3@company.com">user3@company.com</option>
</select>
</body>
</html>