Формулировка проблемы: во время одновременного внесения обновлений БД несколькими разработчиками возможна ситуация, когда для различных веток будет указан один номер обновления БД. Из-за этого могут возникать конфликты слияния веток.
Используется: Администрирование -> Обслуживание системы -> Управление БД
Решение: необходимо изменить принцип обновления БД: вместо единой версии БД выделять и применять отдельные классы (апдейты).
Требуется реализовать единый корневой конфигурационный xml-файл, где
будут перечислены все апдейты по порядку. В нем должны быть указаны
классы, содержащие сведения об обновлениях БД. Файл должен
располагаться в модуле synergy-ejb
, внутри
каталога kz.arta.synergy.db.updates
. Там же
должны находиться классы, указанные в файле.
Классы, не указанные в конфигурационном файле, будут игнорироваться.
Сведения о наличии/отсуствии должны быть отображены на панели информации страницы "Управление БД". В случае наличия непримененных обновлений требуется выводить сообщение:
Ваша версия БД неактуальна.
Следующие обновления еще не применены:
%id% - %comment%
...
%id% - %comment%
Если в списке обновлений содержится более 5 обновлений, которые надо
применить, то должны отображаться первые 5 (в порядке перечисления
классов в конфигурационном файле). В этом случае требуется
дополнительно отображать подпись: "и еще обновлений:
%count%
", где %count%
равен общему количеству непримененных обновлений без учета
отображенных в списке (илл. "Вид окна при наличии непримененных
обновлений").
В случае невозможности применения обновлений БД должны быть выведены сведения возникших ошибках (илл. "Вид окна в случае ошибок во время обновления"):
%ГГГГ-ММ-ДД ЧЧ:ММ%: "Обновление
прервано со следующей ошибкой:
%текст_ошибки%
Обновления, произведенные до возникновения ошибки, считаются примененными. После возникновения ошибки процесс обновления останавливается, и оставшиеся обновления считаются непримененными.
Если все обновления, указанные в конфигурационном файле, применены в БД, то требуется выводить сообщение (илл. "Вид окна при отсутствии непримененных обновлений"):
Ваша версия БД актуальна