Обновление метаданных патчером#
Обновление метаданных докерным патчером вручную#
Структура каталогов#
Рекомендуется держать сам патчер (patcher) и слепки метаданных в одном каталоге. Например, /opt/PatcherDocker.
Папка Metadata содержит слепки метаданных и конфиг, описывающий точное расположение слепка метаданных для каждой схемы.
Шаги обновления#
Разместите новый слепок метаданных. Для этого можно сохранить файл .gmfull в редакторе метаданных (см. Как сохранять метаданные) и расположить его согласно структуре, описанной в файле конфига batch.json.
Перейдите в директорию, где расположен патчер, и запустите bash-скрипт на исполнение reload.sh.
Проверьте логи обновления метаданных по пути /var/log/gems/patcher.
Обновление метаданных консольным патчером#
Структура каталогов#
Консольный патчер можно использовать для обновления метаданных сразу на нескольких проектах.
Рекомендуется держать сам patcher и слепки метаданных в одном каталоге (например, /home/gems/MetaData). Рекомендуется создавать следующую структуру каталогов:
где:
папка patcher содержит приложение Patcher;
папка logs содержит логи обновления метаданных;
папка metadata содержит слепки метаданных, которые будут импортированы.
Для удобства папка metadata может содержать каталоги:
go – метаданные для конфигурации «Городской округ»;
mo – метаданные для конфигурации «Муниципальный округ»;
mr – метаданные для конфигурации «Муниципальный район»;
regiоn – метаданные для конфигурации «Регион».
Содержимое каталогов go, mo, mr, regiоn может быть следующим (пример для go):
где:
go.gmproj – файл проекта, который нужно создать. У этого файла должно быть следующее содержимое:
<?xml version="1.0"?> <Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> </Project>
!go.gmdiff – файл слепка метаданных. Файл можно получить путём сохранения .gmfull файла в редакторе метаданных (см. пункт Как сохранять метаданные).
Шаги обновления#
Разместите новый слепок метаданных. Для этого можно сохранить файл .gmfull в редакторе метаданных. Название и расширение файла .gmfull необходимо изменить на !*.gmdiff (восклицательный знак необходим, чтобы патчер взял данное изменение).
Актуализируйте содержимое файла update_meta.sh.
На файл update_meta.sh необходимы права
chmod 750 update_meta.sh
Содержимое файла update_meta.sh может быть следующим (в примере заливка на три проекта разной конфигурации):
#!/bin/bash
dotnet /home/user/GEMS/MetaData/patcher/Gems.Ui.Patcher.dll applypatch -x /home/user/GEMS/MetaData/metadata/region.gmproj -c 'Server=10.61.74.67;Port=5432;Database=nameDB;User Id=postgres;Password=admin;ApplicationName=Patcher;Timeout=800; Command Timeout=900;' -n schema_region -e > /home/user/GEMS/MetaData/logs/region.log
dotnet /home/user/GEMS/MetaData/patcher/Gems.Ui.Patcher.dll applypatch -x /home/user/GEMS/MetaData/metadata/go.gmproj -c 'Server=10.61.74.67;Port=5432;Database=nameDB;User Id=postgres;Password=admin;ApplicationName=Patcher;Timeout=800; Command Timeout=900;' -n schema_go -e > /home/user/GEMS/MetaData/logs/go.log
dotnet /home/user/GEMS/MetaData/patcher/Gems.Ui.Patcher.dll applypatch -x /home/user/GEMS/MetaData/metadata/mr.gmproj -c 'Server=10.61.74.67;Port=5432;Database=nameDB;User Id=postgres;Password=admin;ApplicationName=Patcher;Timeout=800; Command Timeout=900;' -n schema_mr -e > /home/user/GEMS/MetaData/logs/mr.log
Запустите скрипт на исполнение (в примере запуск в фоновом режиме):
nohup bash ./update_meta.sh &
Проверьте логи обновления метаданных. При необходимости очистите содержимое папки patches – в ней собираются последние версии импортированных метаданных.
Проверка синтаксиса правил#
В атрибуте Validation behavior (см. подробнее Логическая таблица) проводится проверка только следующих тегов:
<prop/>
<geometry/>
<file/>
<const/>
Ошибки со статусом «Error»
<const/> – должен иметь не пустое значение value.
Ключевая фраза в логе: “<const/> has not found value.”
<geometry/> – может быть только у объекта, с которым связана хотя бы одна GLV – проверка идет по алиасу текущего объекта (либо корневого, для которого указан ValidationPackage; либо ссылочного к которому перешли через ссылочное <prop/> – MR и др.).
Ключевая фраза в логе: “Entity with alias {алиас LT или LV, или справочника} has not geometry.”
<file/> – может быть только у объекта, у которого есть локальное свойство или глобальная связь, которые ссылаются на объект с алиасом File.
Ключевая фраза в логе: “Entity with alias {алиас LT или LV, или справочника} has not geometry.”
<prop/>:
В атрибуте <alias> может быть только field, MR, RRL, системное свойство, либо глобальные связи объекта MR и RRL, а также все эти перечисленные свойства и связи всех LVI, если текущий объект это LV (если текущий объект имеет LVI).
Ключевая фраза в логе: “Not found property {алиас свойства} of entity {алиас LT или LV, или справочника}.”
Внутри <prop/> может быть любой другой operand (<prop/>, <geometry/>, <file/>, <type/>), но если в <prop/> указана связь или field, которые не ссылаются на другой объект, то внутри <prop/> не может быть дочерних operand-ов.
Ключевая фраза в логе: “For <prop/> with alias {алиас свойства} of Entity with alias {алиас LT или LV, или справочника} has child operand <{Один из (prop, geometry, file, type)}/>. It is unacceptable.”
Если в <prop/> указана связь или field, которые ссылаются на другой объект, то объект на который они ссылаются должен существовать в проекте (проверка по алиасу).
Ключевая фраза в логе: “Not found Entity with alias {алиас LT или LV, или справочника}.”
Если <prop/> является не ссылочным полем, то в нем не может быть указан <filter/>.
Ключевая фраза в логе: “Not a reference <prop/> with alias {алиас свойства} of Entity with alias {алиас LT или LV, или справочника} has <filter/>. It is unacceptable.”
Ошибки со статусом «Warnings»
Это те проверки, которые подсвечиваются, но не блокируют процесс проливки метаданных. Такие проверки нужны, чтобы выделить места, которые могут вызвать противоречия.
Например, отсутствует возможность заполнить значение поля, так как оно не редактируемо, но проверить заполнено ли оно нужно, так как оно может заполняться отдельным процессом автоматически.
Проверки:
<prop/>:
В <prop/> недопустимо указывать алиас свойства, которое не редактируемо (стоит галочка IsReadonly).
Ключевая фраза в логе: “<prop/> with alias {алиас свойства} of Entity with alias {алиас LT или LV, или справочника} is readonly. It is unacceptable.”
Описание ключей
-n – имя схемы БД, в которую выполняется заливка;
-с – cтрока подключения к БД;
-x – путь до файла gmproj;
-e – пропуск ошибок загрузки метаданных;
-g – пропуск генерации структуры БД. Если этот ключ не задан, ключ -I не применяется;
--skipmigrationsaving – пропустить миграцию изменённых данных;
--pathtosaveinvalidviews – путь для сохранения некорректных представлений;
-I – пропустить обработку индексов;
-m – не выполнять скрипты миграции;
-s – задать название схемы в БД.
Конфигурирование через файл#
Патчер предусматривает возможность запуска с использованием файла конфигурации, в котором указываются псевдонимы целевых проектов и пути к gmproj-файлам с метаданными для импорта.
Пример запуска:
dotnet /home/user/GEMS/MetaData/patcher/Gems.Ui.Patcher.dll batch-patch -c "Server=10.4.1.200;Port=5432;Database=ias;User Id=ias;Password=4KSQV56cUr;ApplicationName=Patcher;" -b "D:\batch.cfg"
Описание параметров:
-c, --connection– строка соединения с базой данных;-b, --batch-config– полный или относительный путь к конфигурационному файлу.
Пример структуры файла конфигурационного файла:
{
"Projects": [
{
"Path": "D:\\repo\\metadata\\src\\Проекты\\Тюменская область\\Регион\\isogd_region.gmproj",
"Schemas": [
"tumen_region"
]
},
{
"Path": "D:\\repo\\metadata\\src\\Проекты\\Тюменская область\\Муниципальный район\\isogd_mr.gmproj",
"Schemas": [
"vikulovsky_mr",
"abatsky_mr"
]
}
],
"SkipStructGenerate": false,
"SkipMigration": false,
"SkipMigrationSaving": false,
"SkipIndexAnalyze": false,
"IgnoreError": false,
"ContinueOnFailProjects": false
}
Описание элементов конфигурационного файла:
Projects– список проектов с указанием пути к метаданным и перечня целевых проектов:Path– путь к файлу с проектом метаданных;Schemas– перечень псевдонимов целевых проектов.
SkipStructGenerate– пропуск генерации структуры проекта. По умолчаниюfalse.SkipMigration– пропуск миграции данных (перенос геометрии, связей MR, RRL), вызванной изменением модели. По умолчаниюfalse.SkipMigrationSaving– пропуск сохранения скриптов миграции данных. По умолчаниюfalse.SkipIndexAnalyze– пропуск обновления сведений об индексах. По умолчаниюfalse.IgnoreError– пропуск валидации метаданных. По умолчаниюfalse.ContinueOnFailProjects– продолжение работы при возникновении ошибок для проектов. По умолчаниюfalse.