YouTrack Standalone 7.0 Help

Pomodoro Timer

This workflow supports the Pomodoro time management and time tracking technique. Pomodoro was created by Francesco Cirillo in the 1980s. For details, visit http://www.pomodorotechnique.com/.

File Namejetbrains-youtrack-pomodoroTimer
Auto-attachedno
RulesPomodoro states (state-machine)
Pomodoro countdown (schedule)
Don't change reason manually (stateless)

To enable this workflow:

  1. Enable and configure time tracking for your project.
  2. Add an enumerated field with the name Pomodoro state to your project. Add the values Timer's running, Not set, Timer finished, and On a break to the field.
  3. Add an enumerated field with the name Pomodoro interruption to your project. Add the values Boss interrupted, Facebook chat, Phone call, and Urgent email to the field.
  4. Add an integer-type field with the name Pomodoro countdown to your project.
  5. Attach the Pomodoro Timer workflow to your project.

Use Case

This workflow lets users follow the Pomodoro time management strategy. The Pomodoro technique works like this:

  • Periods of activity are divided into equal intervals of time, which are called "pomodoros."
  • A traditional pomodoro is 30 minutes long: 25 minutes of work plus a 5-minute break.
  • Every four pomodoros, you are allowed to take a longer break of 15 to 30 minutes.
  • A pomodoro cannot be interrupted or split up. It marks 25 minutes of pure work.
  • If interruptions occur, you stop your pomodoro and log the cause of the interruption.

Rules

This workflow includes three rules.

Pomodoro states

The first rule defines how a pomodoro transitions from state to state. The beauty of this rule is that for each finished or interrupted pomodoro, YouTrack automatically adds a new work item. It automatically logs your work on a particular issue!

statemachine Pomodoro states for field Pomodoro state { initial state Not set { on start[always] do { // The Pomodoro technique is a time management method created by Francesco Cirillo in the 1980s. For details visit http://www.pomodorotechnique.com/ } transit to Timer's running } state Timer's running { enter { Pomodoro interruption = null; message(l10n ( 25 minutes pomodoro is started. )); Pomodoro countdown = 25; } on interrupt [always] do { Pomodoro interruption.required(l10n ( Please specify the interruption cause. )); applyCommand("add work Today" + (25 - Pomodoro countdown) + "m" + l10n ( Pomodoro was interrupted. The cause: ' ) + Pomodoro interruption.name + "'."); Pomodoro countdown = null; } transit to Not set in 25 minutes[always] do {<define statements>} transit to Timer finished } state Timer finished { on take a break[always] do { message(l10n (5 minutes break. )); applyCommand("add work Today 25m" + " +1 pomodoro."); Pomodoro countdown = 5; } transit to On a break on discard[always] do { Pomodoro interruption.required(l10n ( Please specify the interruption cause. )); applyCommand("add work Today" + "25m" + l10n ( Pomodoro was discarded. The cause: ' ) + Pomodoro interruption.name + "'."); Pomodoro countdown = null; } transit to Not set } state On a break { on start[always] do { applyCommand("add work Today" + (5 - Pomodoro countdown) + "m" + l10n ( +1 short break. )); } transit to Timer's running in 5 minutes[always] do { applyCommand("add work Today 5m " + l10n( +1 break. )); } transit to Not set } }

Pomodoro countdown

The second rule runs the timer and invokes a 25-minute countdown.

schedule rule Pomodoro countdown every minute [Pomodoro countdown !=null && Pomodoro countdown !=0] { //The Pomodoro technique is a time management method created by Francesco Cirillo in the 1980s. For details visit http://www.pomodorotechnique.com/ if (Pomodoro state == {Timer's running} || Pomodoro state == {On a break}) { Pomodoro countdown = Pomodoro countdown - 1; } }

Don't change reason manually

The last rule prevents the user from changing the cause of an interruption (by entering a value in the Pomodoro interruption field) without stopping the timer.

rule Don't change reason manually when Pomodoro interruption.changed { //The Pomodoro technique is a time management method created by Francesco Cirillo in the 1980s. For details visit http://www.pomodorotechnique.com/ var causes = Pomodoro interruption == {Boss interrupted} || Pomodoro interruption == {Facebook chat} || Pomodoro interruption == {Phone call} || Pomodoro interruption == {Urgent email}; assert Pomodoro state.changed: l10n ( Cannot change the interruption cause without changing the timer state. ); }
Last modified: 2 February 2017