simple test 2
Код в предыдущей записи действительно смахивает на WTF, но он таким, имхо, не является.
Итак, задание — сделать конфигурируемый планировщик, позволяющий:
- Иметь сколько угодно заданий
- Имеющий заданную точность (у нас 5 секунд)
- Конфигурация должна спокойно производится человеком, не имеющим технического образования и опыта программирования.
- Каждое событие должно иметь следующие признаки:
- Время запуска
- Количество срабатываний (как конечное, так и нет)
- Интервал запуска
- Возможность разрешить или запретить запуск в любой из дней недели или день года, т.е. события только на 31.12 или только по вторникам, или наоборот в любой день, кроме вторников — реальность.
Исходя из этого, было придумано то, что видно в записи по линку выше. Сериализуется это (класс был переименован в Period) вот в такой xml:
[cc lang=»xml»]
[/cc]
Соответственно, просто пишем через пробел нужные нам дни недели/месяцы/дни и радуемся жизни.
Вопрос: как сделать лучше, не ухудшая читабельность конфига? Конфиг необязательно, но желательно, должен быть xml.