22
Дек

simple test 2

Код в предыдущей записи действительно смахивает на WTF, но он таким, имхо, не является.

Итак, задание — сделать конфигурируемый планировщик, позволяющий:

  1. Иметь сколько угодно заданий
  2. Имеющий заданную точность (у нас 5 секунд)
  3. Конфигурация должна спокойно производится человеком, не имеющим технического образования и опыта программирования.
  4. Каждое событие должно иметь следующие признаки:
    1. Время запуска
    2. Количество срабатываний (как конечное, так и нет)
    3. Интервал запуска
    4. Возможность разрешить или запретить запуск в любой из дней недели или день года, т.е. события только на 31.12 или только по вторникам, или наоборот в любой день, кроме вторников — реальность.

Исходя из этого, было придумано то, что видно в записи по линку выше. Сериализуется это (класс был переименован в Period) вот в такой xml:

[cc lang=»xml»]

Monday Tuesday Wednesday Thursday Friday Saturday Sunday
January February March April May Juny July August September October November December
d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31

16:00:00
1.00:00:00

[/cc]

Соответственно, просто пишем через пробел нужные нам дни недели/месяцы/дни и радуемся жизни.

Вопрос: как сделать лучше, не ухудшая читабельность конфига? Конфиг необязательно, но желательно, должен быть xml.

Комментарии закрыты.