
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.09.2007, 15:36
|
|||
|---|---|---|---|
|
|||
Проектирование БД для задач по расписанию |
|||
|
#18+
Нужно написать шедулер (выполнение задач по расписанию). Проектирую базу данных и... потерялся. Есть у меня таблица задач: TaskSheduler : [id (целое), Title (строковое), Enabled (логическое), Task_type (целое - внешний ключ)] Здесь: id-идентификатор задачи, Title-наименование, Enabled-доступна ли в настоящее время, Task_type - тип запуска. Под типом запуска понимается следующее. Задача может запускаться: 1. Ежедневно; 2. Еженедельно; 3. Ежемесячно 4. Один единственный раз. Для этого организована отдельная таблица TaskTypes : [id (целое), Title (строковое)], где и перечислены типы. Не знаю как организовать данные, относящиеся к задаче. Подробнее... 1. Для задачи, тип запуска которой 1 (ежедневно), нужно хранить информацию о времени и интервале запуска. 2. Для задачи, тип запуска которой 2 (еженедельно), нужно хранить информацию о времени запуска и днях недели. 3. Для задачи, тип запуска которой 3 (ежемесячно) - информацию о времени запуска и днях месяца. 4. Для задачи, тип запуска которой 4 (один раз) - дату и время. Подскажите, как мне это организовать. Если это хранить в одной таблице, то будет много пустых полей. Если разбить на четыре таблицы по типу запуска, то как связать с таблицей TaskSheduler (таблицей, где хранятся задачи). Как правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:37
|
|||
|---|---|---|---|
Проектирование БД для задач по расписанию |
|||
|
#18+
Как-то негибко. надо просто сделать таблицу подчиненную "времена запуска задачи", в которой будет ссылка на задачу и дата со временем, а также признак выполняемости (задача еще не выполнялась, сейчас выполняется, выполнилась удачно, выполнилась неудачно) и текстовое описание ошибки (если задача выполнилась неудачно). Данную табличку надо заполнять автоматически мастером без всяких TaskTypes.Может быть места много будет занимать,но уже сразу будет ясно когда все выполнится (фактически получается предрасчитанное расписание с логом выполнения), да и можно туда ручками особые данные вносить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:43
|
|||
|---|---|---|---|
|
|||
Проектирование БД для задач по расписанию |
|||
|
#18+
Мы сделали тупо, всегда храним таймштамп как начало события, а данные храним в виде строки типа: d - ежедневно w:1,3,5 - Пн,Ср,Пт и т.п. Т.е. для ежедневного, еженедельного события из таймштампа используется время. Для периодических событий есть период действия. Это как вариант, наверняка есть и другие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:55
|
|||
|---|---|---|---|
|
|||
Проектирование БД для задач по расписанию |
|||
|
#18+
И стандарты есть, и работающих реализаций куча. Читать лень? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.09.2007, 07:26
|
|||
|---|---|---|---|
|
|||
Проектирование БД для задач по расписанию |
|||
|
#18+
guest_20040621И стандарты есть, и работающих реализаций куча. Читать лень? Не лень. Опыта не много, а с подобной задачей столкнулся впервые. Срок - до конца недели представить тестовый вариант. Кроме этого еще и куча побочных задач. Вот потому и обратился за советом. Лопатить груду документации и примеров нет времени. Нужно пока сделать работающий вариант, а далее будет время все продумать и постепенно довести до ума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.09.2007, 07:46
|
|||
|---|---|---|---|
|
|||
Проектирование БД для задач по расписанию |
|||
|
#18+
ShtockКак-то негибко. надо просто сделать таблицу подчиненную "времена запуска задачи", в которой будет ссылка на задачу и дата со временем, а также признак выполняемости (задача еще не выполнялась, сейчас выполняется, выполнилась удачно, выполнилась неудачно) и текстовое описание ошибки (если задача выполнилась неудачно). Данную табличку надо заполнять автоматически мастером без всяких TaskTypes.Может быть места много будет занимать,но уже сразу будет ясно когда все выполнится (фактически получается предрасчитанное расписание с логом выполнения), да и можно туда ручками особые данные вносить. Что-то я о флагах исполнения не подумал совсем. Наверняка с этим позже столкнуться пришлось бы. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.09.2007, 07:54
|
|||
|---|---|---|---|
|
|||
Проектирование БД для задач по расписанию |
|||
|
#18+
Vladimir KiselevМы сделали тупо, всегда храним таймштамп как начало события, а данные храним в виде строки типа: d - ежедневно w:1,3,5 - Пн,Ср,Пт и т.п. Т.е. для ежедневного, еженедельного события из таймштампа используется время. Для периодических событий есть период действия. Это как вариант, наверняка есть и другие. В ситуации ежемесячно предполагаю дать пользователю возможность отмечать конкретные дни месяца. Если сделать так, то таким образом получится что-то вроде m:1,8,9,10... хотя с одной стороны - без лишней мороки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.09.2007, 07:57
|
|||
|---|---|---|---|
|
|||
Проектирование БД для задач по расписанию |
|||
|
#18+
ShtockКак-то негибко. надо просто сделать таблицу подчиненную "времена запуска задачи", в которой будет ссылка на задачу и дата со временем, а также признак выполняемости (задача еще не выполнялась, сейчас выполняется, выполнилась удачно, выполнилась неудачно) и текстовое описание ошибки (если задача выполнилась неудачно). Данную табличку надо заполнять автоматически мастером без всяких TaskTypes.Может быть места много будет занимать,но уже сразу будет ясно когда все выполнится (фактически получается предрасчитанное расписание с логом выполнения), да и можно туда ручками особые данные вносить. а если потребуется циклическое выполнение задач: через определенные промежутки времени? Вносить в означенную таблицу n-е количество дат? Но каким образом, ведь мы просто указываем: выполнять, например, каждую пятницу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.09.2007, 10:14
|
|||
|---|---|---|---|
Проектирование БД для задач по расписанию |
|||
|
#18+
Так а в чем проблема то?при вводе спрашиваете-на какой период ввести задания?там выбирает пользователь-на год,на два, на месяц. далее просто в коде (пока не придумаете как описать периодичность планировщика в БД,что для первого варианта пмсм не спешно-надо сделать ядро как раз на основе предложенной таблицы) вы прописываете варианты заполнения данной таблицы записями (например,для каждой пятницы). и далее просто сколько пятниц в этом заданном промежутке столько записей и добавляете. проблемы пмсм нет.делайте вначале ядро исполнения самих заданий,а уж потом параметризуйте способы задания параметров.пока что имеющийся вариант гибок и позволяет вводить любые периоды,поэтому среди вашего настроечного механизма всегда должна быть возможность именно ручного ввода.сделайте ее и решайте со всем остальным потом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.09.2007, 10:24
|
|||
|---|---|---|---|
|
|||
Проектирование БД для задач по расписанию |
|||
|
#18+
ShtockТак а в чем проблема то?при вводе спрашиваете-на какой период ввести задания?там выбирает пользователь-на год,на два, на месяц. далее просто в коде (пока не придумаете как описать периодичность планировщика в БД,что для первого варианта пмсм не спешно-надо сделать ядро как раз на основе предложенной таблицы) вы прописываете варианты заполнения данной таблицы записями (например,для каждой пятницы). и далее просто сколько пятниц в этом заданном промежутке столько записей и добавляете. проблемы пмсм нет.делайте вначале ядро исполнения самих заданий,а уж потом параметризуйте способы задания параметров.пока что имеющийся вариант гибок и позволяет вводить любые периоды,поэтому среди вашего настроечного механизма всегда должна быть возможность именно ручного ввода.сделайте ее и решайте со всем остальным потом. Понятно. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&mobile=1&tid=1544279]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 446ms |

| 0 / 0 |
