Задать вопрос
@Gallismo

Делаю to do веб-приложение. Как реализовать логику повторения задач?

Доброго времени суток, я хочу сделать своё to do веб-приложение на Spring для опыта и хочу реализовать в нём максимальное количество функционала, нахожусь на стадии проектирования БД и не могу это сделать из-за того, что не знаю как можно реализовать логику повторения задач(функция "Повторять каждый день/неделю/месяц и т.д.").
Прилагаю Use Case диаграмму
64326fad46ead627899840.png
https://lucid.app/lucidchart/195cebd4-7753-4523-91...

Update: по моей задумке пользователь может создать задачу и запланировать ее повторение, почитав про quartz я предположительно понимаю что он схож с Cron на Linux. Но мне не он нужен.
  • Вопрос задан
  • 253 просмотра
Подписаться 2 Средний 8 комментариев
Решения вопроса 1
@alexalexes
В вашей структуре данных будет как минимум 3 схемы хранения данных, отвечающие за разные подсистемы:
1. Схема для подсистемы управления учетными данными пользователей
Подсистема отвечает за регистрацию пользователей, аутентификацию. То есть, позволяет пользователю при предъявлении своего токена (логина и пароля), как-то соотнести его с учеткой в системе. Или помочь восстановить доступ к этой учетке.
2. Схема для подсистемы прав доступа
Перечисленная структура таблиц позволяет создать шаблон роли пользователя с заранее оговоренными допустимыми действиями над определенными типами задач. И применить шаблон роли на пользователе - создав роль пользователя.
Данные из этой подсистемы позволяют проводить авторизацию пользователя, ограничивая его область привилегий.
Для этой подсистемы нужно уточнять требования, чтобы понять насколько вам нужен шаблон ролей, какие свойства в него должны входить и т.д. От этого будет зависеть структура таблиц.
3. Схема для подсистемы планировщика задач
В этой подсистеме можно создать шаблон задачи, назначить номинальных куратора и исполнителя (пока что по одному пользователю, если нужно больше, то расширяйте это таблицами со связями многим-ко-многим).
Есть возможность назначать задачу на конкретный календарный период (и не один раз) - с указанием фактических куратора и исполнителя (тоже по одной единице - надо больше расширяйте структуру таблиц). Наличие таблицы календарного планировщика позволяет зафиксировать параметры выполнения задачи во времени, если в ней будут непредвиденные изменения в кураторах и исполнителях, перенос на другое время.
Нужно определиться как генерировать задачу для таблицы-календаря - заранее накидать фактические даты выполнения на неделю, месяц, год, и потом их корректировать по обстоятельствам, или назначать следующую дату выполнения после истечения периода выполнения предыдущей.
Схема таблиц позволяет любой из этих вариантов.
Также из задач можно построить дерево задач и нанести каждую подзадачу в планировщик (есть связь таблицы по родителю).

4. Можно сделать схему подсистемы построения отчетности как по шаблонам задач, планировщику, так и по назначению прав доступа, кураторов, исполнителей.

----------------------------------------
Схема таблиц учетных данных пользователей

Пользователь
#* Код человека
*Дата регистрации
* ФИО
*Адрес электронной почты
* Хеш пароля

-----------------------
Схема таблиц прав доступа пользователей

Шаблон роли пользователя (модель роли)
#* Код шаблона
* Название роли

Действия прав доступа (справочник)
1. Код действия
2. Название действия (просмотр, назначение, отмены, удаления, переноса задачи, редактирования шаблонов задач, редактирования планировщика задач)

Cвойства шаблона прав доступа
1. Код свойства прав доступа
2. Код шаблона роли
3. Код действия прав доступа
5. Код типа задач
4. Дата создания свойства

Роль пользователя (реализация роли пользователя)
1. Код прав доступа пользователя
2. Код шаблона роли
3. Код пользователя

------------------
Схема таблиц планировщика задач пользователей

Тип задачи
1. Код типа задачи
2. Название типа задачи

Шаблон задачи (модель задачи)
1. Код шаблона задачи
2. Код типа задачи
3. Код родителя шаблона задачи (на сущность Шаблон задачи)
4. Наименование задачи
5. Описание задачи
6. Дата создания шаблона
7. Периодичность выполнения
8. Код пользователя (номинальный куратор)
9. Код пользователя (номинальный исполнитель)
10. Дата назначения номинального куратора
11. Дата назначения номинального исполнителя

Календарь задач (реализация задач, он же планировщик)
1. Код элемента
2. Код шаблона задачи
3. Дата начала выполнения задачи
4. Дата окончания выполнения задачи
5. Код пользователя (фактический куратор)
6. Код пользователя (фактический исполнитель)
7. Дата назначения фактического куратора
8. Дата назначения фактического исполнителя
---------------------

PS: Можете из этого перечня таблиц и их атрибутов нарисовать DFD диаграмму или диаграмму по Ричарду Баркеру. Правда, тут не обозначены явно связи, но можно догадаться по названию внешних ключей, как связаны таблицы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы