2.4. Проектное перекрытие

Проектное перекрытие (переопределение) прикладного кода позволяет выполнить замену классов, из базовой поставки решения, на классы, разработанные под нужды конкретного проекта.

Переопределены могут быть следующие классы:

Для объявления перекрытия, в ресурсах прикладного модуля необходимо создать файл META-INF/overrides.xml.

<?xml version="1.0" encoding="UTF-8"?>
<overrides xmlns="http://www.global-system.ru/xsd/global3-overrides-1.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.global-system.ru/xsd/global3-overrides-1.0">

    <replace-with class="{override_class_name}">
        <when-type-is class="{base_class_name}"/>
    </replace-with>

</overrides>

где:

  • {override_class_name} - каноническое имя перекрывающего класса.

  • {base_class_name} - каноническое имя базового (перекрываемого) класса.

Файлы META-INF/overrides.xml считываются сервером приложений в момент загрузки образа решения.

2.4.1. Приоритет перекрытия

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

В файлах META-INF/overrides.xml приоритеты указываются в атрибутах:

  1. <overrides default-priority="{int}" - значение по умолчанию для для всех вложенных <replace-with/>.

  2. <replace-with `priority="{int}" - значение для конкретного перекрытия.

  • {int} - значение приоритета

See also

2.4.1.1. Диапазоны приоритетов:

  • до 10 резерв

  • 10 по умолчанию

  • до 50 может быть использовано базовыми модулями

  • от 10 до 100 у партнеров x модули, если партнеры хотят гарантировано перекрывать базовые модули, они должны использовать приоритет 50 и выше.

  • 100 и выше у заказчиков z модули