Я использовал противоположный подход при разработке этого приложения для собственного использования.
По моему опыту, самая большая проблема с приложениями для хронометрирования - это ввод данных. Поэтому я решил заставить свое приложение использовать самый простой и гибкий инструмент ввода данных: текстовый редактор. Я храню заметки в текстовом файле и смешиваю записи о времени, поэтому отрывок выглядит так:
Monday 5/10/09
release script ok this week
open a case on the whole code-table-foreign-key thing
- CUS1 2.0 Generate and release version 1.0.45.
need to get dma to spec out the RESPRB configuration, see case 810
MH section complete - one to go!
- CUS2 4.0 Configure and test Mental Health section.
Tuesday 5/11/09
... and so on
Я последовательно начинаю каждый день с правильного заголовка, и формат реальных записей времени, как вы можете видеть, довольно прост. Простой сканер и конечный автомат - это все, что нужно для извлечения данных - в основном, я просто ищу строки, которые начинаются с дня недели или дефиса, и игнорирую все остальное.
Чтобы программа не работала слишком медленно при разборе файлов заметок, я создаю новый файл заметок каждый год. (Даже в конце декабря процесс синтаксического анализа занимает не более 1/16 секунды.)
Я бы не стал делать это таким образом, если бы мне пришлось обрабатывать записи хронометража сотен людей, потому что пользователь должен иметь некоторую подсказку, и через некоторое время время разбора начнет складываться. С другой стороны, хранение этих данных в удобочитаемом текстовом файле, в котором я могу хранить другие материалы (и держать их под контролем версий, diff и т. Д.), Просто невероятно полезно.