TaskJuggler设置固定结束日期的任务无法提前调度报错如何解决?
问题原因
TaskJuggler默认按任务在脚本中的声明顺序调度,不会主动推断任务优先级来匹配截止日期。你当前只有1个全职资源,默认优先调度先声明的wp1a(1个月工期),它会从2021-11-01排到2021-11-30,之后才会启动wp1b,自然无法满足wp1b设置的2021-11-19的截止要求,所以抛出报错。
你之前设置priority失效大概率是优先级数值设置错误:TaskJuggler中优先级数值越大优先级越高,默认所有任务优先级为500,你需要给wp1b设置比wp1a更高的数值才会生效。
解决方案
方案1:显式设置任务优先级
给有截止日期的任务设置更高优先级,调度时会优先安排高优先级任务,修改wp1任务块代码如下:
task wp1 "Task" { task wp1a "Subtask 1" { effort 1m allocate me } task wp1b "Subtask 2" { effort 2d allocate me end 2021-11-19 priority 1000 # 数值高于默认的500,调度优先级更高 } }
方案2:显式设置任务依赖(更推荐)
如果业务逻辑上确实需要先完成wp1b再做wp1a,直接给wp1a添加依赖规则,逻辑更清晰,不会出现调度顺序错乱的问题:
task wp1 "Task" { task wp1a "Subtask 1" { effort 1m allocate me depends wp1b # 明确要求wp1b完成后再启动本任务 } task wp1b "Subtask 2" { effort 2d allocate me end 2021-11-19 } }
两种方案都可以让wp1b先调度,2天工期可以轻松在2021-11-19前完成,之后再安排wp1a的工期,不会触发报错。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

