Перейти к основному содержимому

Пользовательский режим обновления

В больших сетях клиник (например, государственных) можно создать собственную систему подготовки и распространения обновлений. Например, из областной больницы можно создать набор триггеров на БД районных ЛПУ.

Данные обновления напрямую никак не связаны с основными обновлениями, однако имеют единый интерфейс редактирования с модулем Система обновлений.

Для подготовки базы к работе с пользовательскими обновлениями необходимо запустить на этой базе Upgrade.exe с параметрами /u /p (из контекстного меню правой кнопки мыши опция "Запуск с параметрами").

Принципиально можно создавать неограниченное количество пространств для пользовательских обновлений. Для этого необходимо указать параметр workspace. Передача параметра workspace=u равносильна указанию параметра /u, но только в этом конкретном случае.

Каждое пространство пользовательских обновлений представляет собой аналогичный базовому набор таблиц и других объектов в базе данных, но с префиксом, который указывается в параметре workspace. Например, при указании параметра /u будут созданы следующие таблицы:

U_UPGRADE
U_UPGRADELOG
U_UPGRADEREVISIONS
U_UPGRADETERMLINKS
U_UPGRADETERMS
U_UPGRADEVERSIONS
REPL$U_UPGCHANGELOG
REPL$U_UPGCHANGELOGDET
REPL$U_UPGCHANGELOG_OLD
REPL$U_UPGCHANGELOGDET_OLD
text

Тоже самое касается триггеров, генераторов и хранимых процедур. При указании параметра /u обращение из интерфейса будет осуществляться именно к этим объектам базы данных и не затронет основных таблиц системы обновлений.

В пользовательском режиме доступны все функции базового режима.

При установке системы пользовательских обновлений в филиальной сети, необходимо на центральной базе данных с помощью мастера подготовки баз данных к репликации создать триггеры на следующих таблицах, указав в качестве таблицы лога REPL$U_UPGCHANGELOG:

execute procedure repl$create_triggers('U_UPGRADE', 'IUD', 'REPL$', 'REPL$U_UPGCHANGELOG');
execute procedure repl$create_triggers('U_UPGRADEREVISIONS', 'IUD', 'REPL$', 'REPL$U_UPGCHANGELOG');
execute procedure repl$create_triggers('U_UPGRADETERMLINKS', 'IUD', 'REPL$', 'REPL$U_UPGCHANGELOG');
execute procedure repl$create_triggers('U_UPGRADETERMS', 'IUD', 'REPL$', 'REPL$U_UPGCHANGELOG');
execute procedure repl$create_triggers('U_UPGRADEVERSIONS', 'IUD', 'REPL$', 'REPL$U_UPGCHANGELOG');
sql

После этого будет возможно добавлять и редактировать обновления в центральной базе данных, а затем синхронизировать и выполнять пользовательские обновления по всем базам данных филиальной сети.

После выполнения команды Upgrader.exe /p /u откроется окно менеджера обновлений

Если это первое использование данной функциональности, окно будет пустым. Признаком работы в пользовательском режиме является буква "U" в заголовке окна (выделено красным). Важно понимать, что вся функциональность, описанная в разделе "Система обновлений в Pro режиме" здесь сохраняется (т.е. рекомендуется внимательно изучить этот раздел).

Окно менеджера обновлений описано в разделе "Система обновлений в Pro режиме".

Исключительно для пользовательского режима используются две кнопки панели инструментов:

"Применить" - позволяет объединить одно или несколько обновлений в ревизию. Важно понимать, что пока эта операция не произведена, скрипт не является обновлением, которое можно применить к БД. При нажатии на эту кнопку открывается окно, в котором отображаются все обновления, не  включенные в какую-либо ревизию и созданные текущим пользователем. Нужно нажать кнопку "Применить" - все обновления будут включены в очередную ревизию (номер присваивается автоматически).

"Выгрузка" - позволяет выгрузить файл с обновлениями. Если эту операцию проделать в обычном (не пользовательском) менеджере обновлений, то по умолчанию предлагается выгрузить файл Upgrade.zip. В менеджере пользовательских обновлений так можно выгрузить тот файл, в котором в данной клинике собираются обновления (т.е. аналог файла Upgrade.zip). Затем этот файл на соотв. носителе (СД-диске или флеш-накопителе) можно доставить, например, в филиал.  Важно помнить, что эта функция нужна крайне редко. Проще выбрать в качестве исходной БД (подробнее об экранах мастера см. раздел "Мастер обновлений в Pro режиме"), а в качестве целевых те БД, которые интересуют пользователя - и выполнить пользовательское обновление таким способом.

Скрипты (обновления) создаются по кнопке "Добавить". Она имеет 3 опции в раскрывающемся меню.

  1. "Добавить". Открывается окно мастера

На основной панели набирается текст скрипта. Обязательным является указание версии (по кнопке "...", заполняется в "Справочнике версий") и модуля. "Критический статус" и признак "Не выполнять" можно указать здесь (проставив флаги в соответствующих полях). Либо эти действия можно выполнить позже - в "Менеджере обновлений" на панели "Скрипт" есть панель инструментов с кнопками аналогичного содержания (выделены зеленым).

По кнопке " Сохранить" скрипт будет сохранен и добавлен в таблицу, а окно мастера закрыто. По кнопке "Добавить" окно останется открытым и пустым - это позволяет сразу создавать следующее обновление.

  1. "Добавить из файла". Открывается окно проводника, тип файла по умолчанию SQL. Т.е. можно в любом текстовом редакторе подготовить тексты скриптов, а затем загрузить их в менеджер обновлений. Содержимое файла открывается в окне "Импорт обновлений" (см. описание в следующем параграфе).

  2. "Добавить из буфера обмена". Нужно выделить требуемый текст в любой программе и скопировать его (т.е. чтобы он попал в буфер обмена Windows). После этого выбрать эту опцию и нажать кнопку "Обновить"

Содержимое буфера будет автоматически "разобрано" на запросы. При этом поля "Дата" и "Пользователь" временно остаются пустыми. В этом окне нужно указать, к какой версии и какому модулю будут принадлежать эти обновления. По кнопке "Сохранить" можно выбрать несколько опций (из раскрывающегося меню). Это "Сохранить отдельными обновлениями" - тогда каждый запрос будет оформлен как отдельное обновление, например

Видно, что в мастере обновлений одна строка из окна "Импорт обновлений" составляет отдельный скрипт. При этом автоматически проставлены даты, код обновления и пользователь. На первом этапе подставляется текст (на рисунке выше admin (Не использовать)), однако затем (например, после нажатия на кнопку обновить), этот текст заменяется кодом сотрудника (из справочника персонала)

Вторая опция сохранения "Сохранить блоками обновлений". Используется при очень большом количестве обновлений для упорядочения.

Последняя опция - "Сохранить одним обновлением" позволяет сохранить все запросы как единственное обновление.

В окне "Импорт обновлений" можно пользоваться фильтрами. Панель фильтров открывается по кнопке "Поиск"

Отбирать обновления можно по дате и по тексту скрипта. Чтобы фильтр стал активным, вначале необходимо поставить флаг в поле слева от его названия.

Кнопка "Автофильтр": при включенной кнопке если в скрипте найдено несколько изменений одной хранимой процедуры или триггера, то автоматически будет показано только последнее изменение данной хранимой процедуры или триггера.

После того, как перечень скриптов сформирован в менеджере обновлений, их нужно объединить в ревизии (см. выше), а затем можно использовать по назначению. Мастер обновлений запускается по кнопке "Обновить БД", он описан в разделе "Система обновлений в Pro режиме".

Важно только помнить, что в данном случае речь идет об обновлениях, сгенерированных в данной клинике. Они не попадают в единый файл Upgrade.zip.

Была ли статья полезна?