JIRA Structure基于列值的条件变量不生效及优化方案咨询
JIRA Structure 里程碑权重计算问题修复方案
问题根因
你当前使用的语法不符合JIRA Structure的Expr表达式规则:with关键字定义的是不可变常量,你在IF分支中写的weight1 = 0.2属于相等判断逻辑,并非赋值操作,因此权重不会按照Formal场景的规则变更。
最优实现方案
核心思路是提前在定义权重变量时就完成条件判断,直接根据Summary是否包含Formal返回对应权重值,无需后续修改常量。
可用代码
// 先判断是否为Formal类型任务 with isFormal = MATCH(Summary, "*Formal*"): // 根据任务类型定义对应里程碑权重 with weight1 = IF(isFormal, 0.2, 0.6): with weight2 = IF(isFormal, 0.4, 0.2): with weight3 = IF(isFormal, 0.0, 0.15): with weight4 = IF(isFormal, 0.4, 0.05): // 按最高完成里程碑累加计算完成率 IF( MATCH(milestone4, "*Done*"), weight1 + weight2 + weight3 + weight4, MATCH(milestone3, "*Done*"), weight1 + weight2 + weight3, MATCH(milestone2, "*Done*"), weight1 + weight2, MATCH(milestone1, "*Done*"), weight1, 0 )
额外优化建议
- 若里程碑的完成状态是固定枚举值(如确切等于
Done),建议替换MATCH为直接等于判断,计算效率更高,示例:milestone4 = "Done" - 可以新增权重总和校验逻辑,避免后续调整权重时出现比例错误,只需在代码中新增一行
with totalCheck = weight1 + weight2 + weight3 + weight4,测试阶段确认该值恒为1即可 - 如果后续需要新增更多任务类型的权重规则,可以将权重配置独立为嵌套的IF判断,或使用
CASE语句实现,可读性更强
内容的提问来源于stack exchange,提问作者Chris Moretti
相关产品推荐
相关产品推荐

