You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:21:24