Rally开发中如何获取Portfolio Item类型Feature的父级项?
实现方案
你现有代码已经正确筛选出了类型为Feature的项目组合项,之所以无法直接展示对应父级Initiative,是因为当前fetch配置仅拉取了Parent字段的基础引用,没有获取父级对象的具体展示属性,按以下步骤调整即可实现需求:
- 扩展Store的fetch字段列表:在原有fetch数组中补充需要展示的父级Initiative的嵌套属性,Rally的WSAPI支持在单次请求中返回关联对象的指定属性,不需要额外发起二次查询。如果需要展示父级的编号、名称,就添加
Parent.FormattedID、Parent.Name;如果还要展示父级的状态、负责人等信息,对应添加Parent.State、Parent.Owner这类嵌套字段即可。 - 在网格的列配置中新增父级项对应的展示列,绑定拉取到的父级属性完成渲染,注意处理父级为空的边界场景。
参考代码
var portfolioItemStore = Ext.create('Rally.data.wsapi.Store', { model: 'Portfolio Item', autoLoad: true, listeners: { // 保留原有监听逻辑即可 }, filters: [ { property: 'PortfolioItemType.Name', value: 'Feature' } ], // 补充需要的父级嵌套字段 fetch: ['Name', 'FormattedID', 'PortfolioItemType', 'Parent', 'Parent.FormattedID', 'Parent.Name'] }); // 网格列配置示例 Ext.create('Rally.ui.grid.Grid', { store: portfolioItemStore, columnCfgs: [ 'FormattedID', 'Name', // 新增父级Initiative展示列 { text: '所属Initiative', dataIndex: 'Parent', flex: 1, renderer: function(parentRecord) { if (!parentRecord) return '无'; return `${parentRecord.get('FormattedID')}: ${parentRecord.get('Name')}`; } } ], // 其余原有网格配置保持不变 height: 400, renderTo: Ext.getBody() });
补充说明:标准Rally项目组合项层级中,Feature的直接父级就是Initiative,不需要额外做类型校验。如果你所在环境配置了自定义PI层级,可以在fetch中额外加入
Parent.PortfolioItemType.Name,渲染时校验父级类型做适配即可。
内容的提问来源于stack exchange,提问作者Lisa
相关产品推荐
相关产品推荐

