суббота, 4 февраля 2017 г.

9.История о том, как написать систему управления проектами (ERP) своими руками. Первые запуски плана. Отработка связей в задачах

Очередная суббота подходит к концу. Что мы имеем на данный момент

  1. Проект создается
  2. План может быть составлен
  3. План может быть запущен
  4. Работа с задачами
  5. Работа с файлами
  6. Переписки и события
  7. Управление группами и ролями всей системы
  8. Управление доступами ко вкладкам, управление стадиями (создание новых, редактирование существующих)
Что еще нужно сделать для публичное беты (если, конечно, она кому-то нужна 😌):
  • Передачу проекта по стадиям (на данный момент, это работает через лютый костыль для теста) во время выполнения плана.
  • Передачу проекта по стадиям при отключенном выполнении плана
  • Новый инсталлятор
  • Систему логирования, которая сейчас толком не сделана
Ну, с учетом выполненного, осталось допилить ~ 20% задуманного для бетки

Теперь о плане и выполнения.

Ранее, речь шла о заполнении плана и отображении оного в соотв. вкладке проекта. Основной принцип примерно такой: генерируем с помощью полученных данных и процедуры очередность задач/ стадий, а далее, при запуске новой стадии по плану запускаем "первую задачу" (она, буквально, помечается, как первая задача) и смотрим ее связи (как в проджекте): если есть задачи типа "начало-начало", тогда запускаем и их. По завершении задачи просто смотрим, какая есть следующая задача и есть ли связи "окончание-окончание", которые так же надо завершить. По сути, такую модель исполнения плана я бы назвал триггреной, так как с планом должны что-то делать(завершать задачи, в данном случае), чтобы он был актуальным. 

Можно было бы использовать шедулер и запускать задачи автоматически, НО вся проблема в том, что пришлось бы постоянно проверять, а завершились ли предыдущие задачи или нет + обслуживание этих шедулеров занятие не весело-утомительное, да и лишняя нагрузка на СУБД, без которой можно обойтись. Проще код - быстрее и легче его модифицировать и понять принцип, особенно, когда выполняющие задачи или набивавший задачи вдруг осознал, что накосячил. В этом случае, лучше заниматься греблей в ванной, чем в открытом море, если вы поняли о чем я 😎.

Так вот. С точки зрения стадий все совсем просто - выбираем первую по списку в очереди на проект и запускаем ее, а вот в задаче, при наличии связи "Завершение - завершение", появляется некий нюанс - в обязательном порядке нужно писать у подчиненной задачи, что она была завершена из-за того, что завершилась задача, от которой она зависела, а то могут возникнуть вопросы к исполнителю, который может даже не успеть на нее среагировать. Я пока не делал возможности продливать задачи, но планирую, так вот, с подобной связью функция продления малость бесполезна, по очевидной причине. 

Ну и получилось что-то вроде:
вкладка истории в проекте



Комментариев нет:

Отправить комментарий