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

使用PyRal创建关联SolutionCapability的Rally Feature失败求助

解决PyRal创建Feature时关联SolutionCapability的422解析错误

我之前也踩过PyRal关联Portfolio Item的这个坑!你碰到的422错误完全是因为构造Parent字段的格式不符合Rally REST API和PyRal的要求,不需要嵌套PortfolioItem_SolutionCapab这一层结构,PyRal对关联对象的引用有更简洁的写法。

错误原因分析

你之前写的"Parent": {"PortfolioItem_SolutionCapab": {"OID": ..., "FormattedID": ...}}这种嵌套字典格式,Rally API无法识别正确的对象引用。PyRal只需要直接提供目标对象的_ref属性值,或者直接传递获取到的Rally对象实例即可。

修改后的代码示例

@app.route("/createFeature", methods=['POST'])
def createFeature():
    # 获取目标SolutionCapability对象
    parent_query = rally.get('PortfolioItem/SolutionCapability', fetch=True, query='FormattedID = XXXXXX')
    try:
        parent_capability = parent_query.next()
    except StopIteration:
        return "Error: 未找到指定FormattedID的SolutionCapability"

    # 提取请求参数
    feature_name = request.args['name']
    desc = request.args['desc']
    acceptance_criteria = request.args['AcceptanceCriteria']
    plannedStartDate = request.args['PlannedStartDate']
    plannedEndDate = request.args['PlannedEndDate']
    productionDate = request.args['ProductionDate']
    notes = request.args['Notes']

    # 构造Feature数据,Parent字段用两种方式都可以
    feature_data = { 
        "Name": feature_name,
        "Description": desc,
        "AcceptanceCriteria": acceptance_criteria,
        "Notes": notes,
        "PlannedStartDate": plannedStartDate,
        # 方式1:直接使用获取到的Rally对象实例(推荐,PyRal会自动处理引用)
        "Parent": parent_capability,
        # 方式2:手动指定_ref属性
        # "Parent": {"_ref": parent_capability._ref},
        "PlannedEndDate": plannedEndDate,
        "ProductionDate": productionDate
    }

    try:
        response = rally.create("Feature", feature_data)
        return response.details()
    except RallyRESTAPIError as e:
        return f"创建Feature失败: {str(e)}"

关键修改点

  1. 简化Parent字段:要么直接传递获取到的parent_capability对象,要么用{"_ref": parent_capability._ref}的字典格式,两种方式PyRal都能正确转换成Rally API接受的引用格式。
  2. 增加异常处理:加了try-except捕获next()的迭代异常(防止找不到指定的SolutionCapability)和创建时的API异常,让代码更健壮。

额外验证提示

  • 确保你的PyRal版本是最新的,旧版本可能对关联对象的处理有bug。
  • 确认parent_capability确实包含有效的_ref属性,可以打印print(parent_capability._ref)检查是否是类似/portfolioitem/solutioncapability/12345的格式。

内容的提问来源于stack exchange,提问作者Vivek Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:38:34