При работе над прикладными системами с использованием «Форсайт. Аналитическая платформа» для разделения процессов разработки, как правило, создаются несколько репозиториев - в контуре разработки, тестирования и промышленной эксплуатации. В процессе разработки проекта часто происходит изменение объектов прикладной системы, а также модификация состава системы (добавление или удаление объектов).
С помощью обновления можно внести изменения в клонированный репозиторий - целевой. Клонированный репозиторий создаётся посредством сохраненной копии. Клон репозитория создаётся средствами соответствующей СУБД.
Пример процесса обновления в два этапа:
Создание обновления в исходном репозитории, который содержится в контуре разработки.
Проведение обновления в целевом репозитории, который содержится в контуре тестирования.
Обновление представляет собой файл с расширением *.pefx (Platform Export File Extended), который содержит различную информацию по изменению объектов прикладных систем.
Каждому объекту репозитория в обновлении соответствует уникальный цифровой код, который идентифицирует объект. Эти коды хранятся в системных таблицах, которые также хранят полную информацию об объектах и связях между ними. В исходном и целевом репозиториях уникальные коды у одних и тех же объектов совпадают. Если репозиторий не является целевым, то внутренние коды у объектов обновления и объектов репозитория могут при обновлении не совпадать, а при добавлении и пересекаться, что приведёт к возникновению конфликтов.
Также в процессе установки обновления учитывайте проверку версий объектов, если в менеджере безопасности установлен флажок «Контроль версий объектов при обновлении».
Примечание. Обновление версий объектов рекомендуется производить только для целевых репозиториев.
Основные причины, по которым нельзя производить обновление для разных репозиториев:
совпадение внутренних кодов у объектов;
совпадение идентификаторов у объектов;
защита от создания новых объектов с внутренними кодами, которые уже существуют.
Исключением может быть случай, когда необходимо перенести объекты в пустой репозиторий.
В контуре промышленной эксплуатации рекомендуется производить установку обновлений в момент простоя системы при отсутствии активных пользователей. Большинство объектов репозитория после обновления не требуют каких-либо дополнительных действий и готовы к дальнейшему использованию. Также можно произвести очистку кеша и перезапустить BI-сервер.
Если созданная инфраструктура не позволяет останавливать работу системы и перезапускать BI-сервер, то необходимо учитывать ряд особенностей, связанных с работой кеша сборок и кеша системных таблиц. Кеш сборок используют все объекты среды разработки: сборки, модули, формы, веб-формы.
Кеш сборок:
изменения в Fore-коде, сделанные в момент работы пользователей, будут применены только после выгрузки и новой загрузки скомпилированных сборок. В случае с обработчиками событий, например, для применения нового кода потребуется закрытие всеми пользователями всех объектов, которые используют этот обработчик;
сборки/модули, в коде которых используются статические поля классов, выгружаются только при выходе из репозитория, поэтому необходимо повторно войти в систему, чтобы применились изменения в таком коде;
при установке обновлений объектов среды разработки без остановки системы запрещено использовать параметр «Устанавливать дату изменения объектов из обновления». Это связано с тем, что в кеше сборок хранится дата и время компиляции. Для перекомпиляции дата и время в кеше должны быть более ранними, чем дата и время изменения объекта в базе данных. А так как в базе данных сохранится время из обновления, то это условие может быть невыполнимо. Если необходимо выполнить обновление с установленным флажком «Устанавливать дату изменения объектов из обновления», то после применения обновления необходимо принудительно очистить кеш сборок на всех BI-серверах.
Кеш системных таблиц:
при установке обновлений в репозиторий, для которого включен кеш системных таблиц, необходимо обновить кеш системных таблиц. Методы для сброса существующего кеша и создания нового доступны в интерфейсе IMetabaseManager языка Fore;
если во время очистки и обновления кеша в системе работают пользователи, то запросы пойдут к системным таблицам в базе данных, пока кеш снова не будет собран.
См. также: