Я работаю над системой управления документами. Пример рабочего процесса будет выглядеть примерно так:
- Документ отправлен в систему по электронной почте
- Система выполняет ряд подготовительных действий к документу
- Документ передан пользователю для дальнейшей обработки
- После этого документ отправляется в отдел обеспечения качества
- После этого система выполняет ряд или постобработку документа
- Документ считается полностью обработанным и распространенным (например, отправлено по электронной почте тому, кто отправил документ в систему и т. Д.)
Поскольку громкость моего ввода будет варьироваться (но обычно будет большой громкостью), я очень сомневаюсь в масштабируемости.
Например, скажем, система уже загрузила вложения электронной почты. Если вложения являются документами PDF, система должна разбить PDF на отдельные страницы, затем преобразовать каждую страницу в миниатюры нескольких размеров и т. Д. Я планирую проверить работу cron (скажем, каждую минуту), чтобы проверить, есть ли PDF документы, которые необходимо обработать. Используя систему маркировки (например, «Документ PDF готов к обработке»), я могу проверить базу данных на наличие всех документов PDF, которые помечены для обработки. После того, как обработка PDF завершена, флаг может быть обновлен до «Обработка PDF завершена».
Однако, поскольку обработка каждого документа PDF занимает очень много времени, я обеспокоен тем, что при выполнении следующего задания cron это задание cron также попытается обработать PDF-файлы, которые все еще обрабатывает предыдущее задание cron.
Возможным решением является немедленная пометка документов PDF с помощью «Документ PDF обрабатывается в настоящее время». Таким образом, при выполнении следующего задания cron будут исключены уже обрабатываемые.
Таким образом, каждый шаг в рабочем процессе, вероятно, будет иметь 3 флага:
- PDF документ готов к обработке
- Документ PDF, который в настоящее время обрабатывается
- Обработка PDF завершена
То же самое для QA:
- Документ готов к QA
- Документ, являющийся в настоящее время QAd
- Документ QA Готово
Это хороший подход? Есть ли лучший подход? Буду ли я иметь эти флаги как один столбец таблицы «Документ PDF» в базе данных? Или флаги должны быть его собственной таблицей (например, особенно если документ может иметь несколько установленных флагов).
Я хотел бы получить предложения о том, как реализовать такую систему.