我无法理解如何管理重复性任务任务战士
我从一个空数据库开始:
$ task
[task next]
No matches.
我添加了一个每日重复的任务:
$ task add recur:daily due:later test
报告中显示:
$ task
[task next]
ID Age Recur Due Description Urg
2 - P1D 19.2y test 2.4
1 task
Creating recurring task instance 'test'
如果我像这样标记它完成:
$ task 2 done
Completed task 2 'test'.
Completed 1 task.
$ task
[task next]
No matches.
它从报告中消失了。我认为这是有道理的,因为“我今天完成了每日任务”。
问题是第二天及以后它再也没有出现。我做错了什么?
答案1
我正在处理重复的任务并弄清楚了:
一些背景知识:创建重复任务会创建一个parent
产生child
任务的任务。
来自:https://taskwarrior.org/docs/recurrence.html
经过一些测试,我发现使用此命令:
(ins)[>]task add "test" recur:5s due:30s
Created task 27 (recurrence template).
首先,due
影响第一个子任务。之后生成的每个子任务截止时间(我的例子里是 30 秒)然后到期重复时间(示例中为 5 秒)
(ins)[>]task
[task next]
ID Age Deps P Project Recur Due Description
22 - PT5S 30s test
#some time later...
(ins)[>]task
[task next]
ID Age Deps P Project Recur Due Description
22 60s PT5S -30s test
23 30s PT5S -25s test
24 25s PT5S -20s test
25 20s PT5S -15s test
26 15s PT5S -10s test
27 10s PT5S -5s test
28 5s PT5S - test
29 0s PT5S 5s test
然而due
还影响另外一件事:当第二个子任务产生时(第二个孩子的任务是在重复时间因此第三个子任务在重复时间等等)。
这就是为什么您看不到第二个子任务的原因,因为根据您的示例,您将截止日期设置为later
未来19.2 years
的时间;因此,第二个子任务将仅在19.2 years
一段时间后生成(此后每个子任务都会生成daily
)。
答案2
我之前回答过同样的问题在 unix 和 linux 上。再次发布答案,以供记录。
在我深入讨论工作细节之前,请注意,重复并不是精心设计。我带来的是经验观察,可能会随着修改而改变。
TLDR;如何使用和理解重复
task add recur:<duration> due:<first task due date> until:<delete first task by date> wait:<date when task will appear> "my task"
例子:
task add recur:daily due:9:00 until:12:00 wait:5:00 eat breakfast
- 上午 9:00 吃早餐
- 隐藏任务直至凌晨 5:00
- 午餐时间前删除任务
- 每天创造一个新的事件
细节
重复需要一个due
属性(通过验证检查)。如果存在until
和wait
属性,则重复也可以使用它们。重复不使用scheduled
。并且有一个mask
属性,用于跟踪任务是重复发生的哪个实例。
当创建新的循环实例时:
new task due
=parent due
+recur
*mask
until
两者的数学运算相同wait
scheduled
是从父任务中完全复制而来。实际上,这种意外行为不会破坏您的工作流程,只会影响过滤器并扭曲紧迫性。我之所以指出这一点,是因为我花了很长时间才发现它没有按预期工作。
每次taskwarrior
运行时,它都会检查是否该创建下一个事件了。伪方程为:
now >= due + recur * (mask + 1)`
请注意,有一个配置值,rc.recurrence.limit
可以用来告诉 taskwarrior 在更远的地方创建更多的事件。
您可以预期下一个事件将在前一个事件的到期日被创建。