2012-11-30 18 views
2

我一直在使用sdk 1.32来定制AgileEVM应用程序,我一直在使用偏好来存储用户将设置的各种值(多个收费率,非全职时间资源等)。下面是我如何创建喜好:Rally SDK 1.x - 获取偏好范围向上/向下项目

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

工作区的结构,其中父项目有多个轨道和这些曲目有多个团队。我希望应用程序在项目层次结构的每个级别上计算适当的EVM数据。我遇到了一个问题,我无法检索当前项目的偏好及其所有子项目。 PROJECT_SCOPING_DOWN设置为true。好像偏好是不是故事/任务/等处理方式不同..

这是我应得的优先(S):

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

_rallyDataSource.findAll(queryConf, preferencesRetrievedCallback); 

如果我在查询中包含的项目OID,我只能获得与该项目相关的偏好,而不是任何子项目。如果我从查询中删除项目oid,它将返回每个首选项,而不管层次结构如何。

我也尝试使用CreateAppPreference和GetAppPreferences来完成此操作,但它似乎表现出相同的行为。

我的问题是,我在这里做错了什么?如果不是,并且这是预期的功能,那么我该如何最好地存储这些变量,以便它们在项目结构的每个级别都能正确地累积起来?

在此先感谢您的帮助。

回答

0

的偏好端点WSAPI是有点独特之处在于它不使用任何工作区或项目范围界定在传递的url,除了明确的查询的信息就像你有以上:

(Project = /project/12345) 

您可以使用PROJECT_OIDS_IN_SCOPEhangman variable,构建一个大逻辑与的查询,但如果你有很多的范围项目的请求可能失败,因为它变得太大......

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); 

否则你可以像对待当前项目一样为每个项目的范围创建一个新的首选项请求。

另一种选择是保存PREF为工作区PREF代替并具有价值与键在项目的OID和值是值JSON对象...

+0

明知不会有大在范围内的项目数量,我去了你的第一个解决方案。完美工作。感谢您的快速和彻底的答案! –