Изменения

BugzillaORM

2807 байтов добавлено, 09:09, 24 июля 2012
м
Обновление модели
Таким образом наш трекер превратится, по сути, в модульное приложение, построенное вокруг очень прокачанного автоинтерфейса полей и объектов. Естественно, это уже не Bugzilla ни разу, но зато чем-то похоже на [http://roundup.sourceforge.net/ Roundup] — «конструктор трекеров». Однако и с ним различий много — roundup не умеет зависимых селект-полей, модель задаётся в коде, права доступа слабые, поиск слабый.
 
=== Обновление модели ===
 
Обновление базы багзильское (тупая последовательность операций):
* (+) Очевидный порядок обновлений, нет проблем с их зависимостями друг от друга (новые просто дописываются в конец, порядок всегда правильный)
* (-) Не проверяется, корректна ли схема БД после обновлений
* (-) Обновления задаются именно для SQL БД, а не для метамодели
* (-) Не очень красивая портянка в функции обновления БД
 
Обновление базы наше:
* AddType -> RenameFields -> AddFields -> ChangeFields -> DropFields
* ChangeFields с помощью функций обновления
* (???) Самый интересный вопрос - как сделать функции обновления не на SQL, в условиях когда модель в неконсистентном и вообще не знает, в каком состоянии?
* После каждого шага запуск хука
* Переименования задаются декларативно
* Возможность Dry Run, просмотра и проверки последовательности обновлений
* Зависимости обновлений в рамках каждого шага можно задать декларативно (хотя ситуация редкая)
*: А может, просто стоит задавать их в ассоциативном массиве по порядку
* Ещё может быть, что обновление одного типа зависит от обновления другого (причём это уже более частая ситуация)
=== Модель ===
** Canconfirm
** Editbugs
* Private комментарии — комментарии — видны только инсайдер-группе* Информация о таймтрекинге — таймтрекинге — видна только группе, списывающей время
* reporter_accessible, cclist_accessible на отдельных багах
* Опциональные группы на отдельных багах
* Права на правку отдельных групп
* Права editclassifications, editcomponents, editfields, editkeywords, editusers
 
=== Настройки оповещений о багах ===
 
Отношения:
* Assignee, QA, Reporter, CC
* Requestee или Setter флага (реально в Bugzilla прикручено сильно сбоку)
* По идее — также создатель аттачмента, коммента (если разрешать править)
* Watcher указанного выше
* Global Watcher
 
События:
* Добавлен/удалён из указанного выше
* Изменено одно из полей бага (м.б отдельные настройки, м.б вместе)
* Баг / блокирующий баг меняет статус с закрытого на открытый или обратно
* «Но кроме» UNCONFIRMED
* «Но кроме» своих изменений
== Что не так? ==