
При создании новая задача (инцидент) находится в виртуальном стартовом состоянии № 0 и должна быть переведена в какое-то нормальное состояние. Диаграмма по сути распадается на две - программистские задачи и прочие задачи. Нас в основном интересуют программистские задачи, но и прочие тоже важны - провести сеть в цех, к примеру, или выполнить тестирование базы 1С. Пусть для них будут свои состояния, но чтобы мы могли учитывать все задачи.
Программистские задачи. Бледно-желтые состояния это состояния ожидания, накопители. В них у задачи не может быть исполнителя. Руководитель проекта (разделение по проектам мы потом реализуем с помощью тегов) выдает задачи в работу конкретным исполнителям, задача переходит в активное состояние (ярко-зеленое). Нормальный путь - сделанная программистом задача передается на тестирование. Если все нормально, то с тестирования она переходит в финальное состояние "Выполнено". Финальные состояния различаются двух видов: положительные исходы (темно-зеленые) и отрицательные исходы (бордовые). Финальное состояние не имеет исполнителя и не может иметь исходящих стрелок.
На диаграмме изображены все возможные переходы между состояниями задачи (инцидента). К примеру, с тестирования задача может быть возвращена на доработку - сама диаграмма показывает, что признать задачу выполненной может только тот, кто проводил тестирование, не программист (теоретически; на практике эти роли могут совмещаться в одном человеке, но только потому, что нас мало). Жирной стрелкой показан переход, который предлагается по умолчанию. Т.е. из каждого нефинального состояния должна исходить ровно одна жирная стрелка.
В трекере не предусмотрено удаление задач; все переходы регистрируются в истории инцидента с указанием пользователя, который совершил это действие. Для единообразия смена исполнителя реализована как переход с совпадающими начальным и конечным состояниями. Добавление примечания регистрируется тоже как переход.
Исполнителей (программистов, тестеров) должны интересовать активные состояния (ярко-зеленые), а руководитель проекта в основном занят управлением инцидентами в пассивных состояниях - что передать в работу и когда это сделать. Отдельный вопрос - состояние № 9 "Help me!". Оно используется, если программист столкнулся с концептуальной проблемой, решение которой влияет на архитектуру системы. Тут важно, чтобы исполнитель распознал, что проблема не его уровня; выделение же таких проблем в отдельное состояние гарантирует, что руководитель проекта вовремя узнает о них.
Вот, вкратце, описание трекера. Он реализован в web-интерфейсе, работает в Опере и Мозилле.