5.2.7 TODO dependencies

Org 文件的结构—层级与列表—便于定义待办依赖关系。 通常,父待办任务应在所有子待办任务标记为完成后,方可标记为完成。 有时子任务存在逻辑顺序,即某一子任务需在其上方所有同级任务完成后才能执行。 若自定义变量 org-enforce-todo-dependencies , Org 会阻止存在未完成子待办事项的条目切换至 DONE 状态。 此外,若条目设有 ‘ORDERED’ 属性,其每个待办子项 都会被阻塞,直至所有更早的同级项标记为完成。示例如下:

* TODO Blocked until (two) is done
** DONE one
** TODO two

* Parent
:PROPERTIES:
:ORDERED:  t
:END:
** TODO a
** TODO b, needs to wait for (a)
** TODO c, needs to wait for (a) and (b)

你可以通过 ‘NOBLOCKING’ 属性确保条目永远不会被阻塞(参见 Properties and Columns):

* This entry is never blocked
:PROPERTIES:
:NOBLOCKING: t
:END:
C-c C-x o (org-toggle-ordered-property)

切换当前条目的 ‘ORDERED’ 属性。 该行为使用属性实现,因为此设置应仅作用于当前条目, 而非像标签一样从上层条目继承(参见 Tags)。 不过,若你希望通过标签 跟踪(track) 该属性值以提升可见性, 可自定义变量 org-track-ordered-property-with-tag

C-u C-u C-u C-c C-t

强制修改待办状态,忽略所有状态阻塞规则。

若设置变量 org-agenda-dim-blocked-tasks , 因存在未标记子项而无法标记为完成的待办条目, 会以淡化字体显示,甚至在议程视图中完全隐藏(参见 Agenda Views)。

你也可以通过复选框阻塞待办状态的修改(参见 Checkboxes)。 若设置变量 org-enforce-todo-checkbox-dependencies , 存在未勾选复选框的条目将无法切换至 DONE 状态。

若需要更复杂的依赖结构,例如不同树形结构或文件中条目间的依赖, 可查阅 ‘org-contrib’ 仓库中的 ‘org-depend.el’ 模块。