Скрипты конвертации, проверок и ручных этапов
<< Click to Display Table of Contents >> Разработка > Элементы разработки > Модуль > Публикация Скрипты конвертации, проверок и ручных этапов |
В среде разработки Directum RX используются скрипты конвертации, проверок и ручных этапов. Скрипты добавляются на вкладках модуля или решения в узле «Публикация».
Скрипты конвертации и проверок могут быть общими для всех СУБД и специфичными для конкретной поддерживаемой СУБД. Если есть СУБД-зависимый скрипт, и он соответствует текущей СУБД, то при публикации он будет выполнен. Иначе выполнится скрипт, общий для всех СУБД, если он есть. Имена файлов отличаются постфиксами. Например, скрипты конвертации могут называться так:
•convert_before.sql – общий скрипт для всех СУБД;
•convert_before_mssql.sql – скрипт для Microsoft SQL Server;
•convert_before_postgres.sql – скрипт для PostgreSQL/Postgres Pro/Jatoba/Tantor.
Скрипты конвертации делятся по времени выполнения: до публикации (convert_before.sql) и после публикации (convert_after.sql). Они предназначены для настройки конвертации данных модуля или решения с одной версии на другую.
Напишите скрипты конвертации, если нужно:
•в типе сущности заполнить свойство значением. Например, когда при добавлении нового логического свойства в справочнике с миллионом записей необходимо в половине записей указать значение True или False по определенному алгоритму;
•изменить тип свойства с сохранением данных, например, со строки на перечисление. Если данные сохранять не требуется, скрипт конвертации можно не писать;
•добавить новое обязательное свойство любого типа в тип сущности;
•изменить обязательность свойства для типа сущности;
•для свойства-ссылки изменить тип сущности, на который он ссылается. При этом новый тип является наследником старого абстрактного или другим типом сущности.
Подробнее см. примеры скриптов конвертации: появилось свойство логического типа, свойство стало обязательным, изменен тип свойства.
Добавлять скрипты конвертации не требуется, если:
•добавлен, переименован или удален тип сущности;
•увеличена длина строкового свойства;
•изменен тип сущности, на который ссылается свойство-ссылка, при этом новый тип меняется на предка. Пример: Contract изменился на ContractBase;
•изменен тип свойства с Целое на Идентификатор, с Целое на Вещественное, со Строка на Текст. Данные перечисленных типов конвертируются автоматически. Если используется СУБД Microsoft SQL Server и для колонки был создан индекс, то его нужно восстанавливать вручную;
•добавлено необязательное свойство или свойство удалено.
Рекомендуется писать многопроходные скрипты конвертации. Многопроходность означает, что скрипт может быть запущен множество раз, но конечный результат будет таким, как и при одном прогоне. Если скрипт не многопроходный, то при его повторном выполнении могут появиться ошибки и тогда публикация не выполнится.
Многопроходность достигается за счет фильтрации записей. Подробнее см. пример скрипта конвертации «Появилось свойство логического типа».
Примечание. При необходимости можно логически отделить один скрипт конвертации от другого или разделить структурные изменения данных (добавление, переименование, удаление свойств). В этом случае предварительно увеличьте последнюю цифру в номере версии решения вручную.
Предназначены для проверки того, что данные модуля или решения можно конвертировать.
Среди скриптов проверок выделяют:
•Критичные (critical_check.sql). Выполняются перед публикацией модуля. Если при проверке возникают ошибки, то публикация прерывается;
•Некритичные (noncritical_check.sql). Выполняются перед публикацией модуля, после критичных проверок. Если при проверке возникают ошибки, то выводится соответствующее предупреждение. При этом публикация продолжается.
В одном файле скриптов с проверками можно разместить несколько отдельных проверок, при этом каждая проверка должна быть записана в следующем виде:
/*#script#
Заголовок проверки, который появится при возникновении ошибки.*/
select * from Recipient
Предназначены для поддержки совместимости между разными базами данных. Например, в разработке для типа сущности добавили новое необязательное свойство и есть функция, которая синхронизирует его значение между базами данных. В базе данных Directum RX свойство появится после публикации, а в базе данных сторонней системы требуется создать свойство вручную. Для этого нужно написать соответствующий скрипт ручного этапа по созданию этого свойства в сторонней базе данных.
При публикации пакета разработки в продуктивную систему Directum RX с помощью DeploymentTool утилита останавливает публикацию, чтобы пользователь выполнил скрипт ручного этапа. При работе с локальной системой, а также при запуске утилиты DeploymentToolCore публикация не останавливается.
ВАЖНО. Утилита DeploymentTool является устаревшей, оставлена для совместимости. Для всех последующих публикаций используйте утилиту DeploymentToolCore.
Скрипты ручных этапов делятся по времени выполнения – До публикации и После публикации, где:
•manual_before.txt – файл с описанием ручного этапа, выполняемого до публикации версии модуля;
•manual_after.txt – файл с описанием ручного этапа, выполняемого после публикации версии модуля.
Порядок выполнения скриптов
При публикации скрипты выполняются последовательно в следующем порядке:
При публикации решения в нужной последовательности выполняются все скрипты публикации. При повторной публикации модуля выполняются только скрипты текущей версии (Current).
© Компания Directum, 2024 |