Extension API

ORBISMapServer позволяет изменять стандартное поведение системы не изменяя исходный код проекта. Для таких случаев применяется Extension API. Extension API реализован через плагины, которые позволяют изменять поведение любого метода всех классов системы.

С использованием плагинов возможно:

Для более наглядного представления рассмотрим на примере, как использовался Extension API для генерации PDF-документа.

Задача: Формировать PDF-документ в соответствии с макетом.

Что заставило использовать расширение: Базовое поведение системы предполагает, что в генерируемый PDF-документ будут попадать все заполненные значения объекта с учетом локализации, а значения группируются в блоки информации по заголовкам, которым они принадлежат. В утвержденном макете требовалось, чтобы выводились не все поля блока, а только определенные, некоторые значения, объединенные одним заголовком должны попадать в другой блок информации, некоторые заголовки со всеми значениями не должны попадать в генерируемый файл.

Реализация: При получении запроса на информацию по объекту в формате PDF, система ORBISMap выполняет следующую последовательность действий:

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

Для этого: Был создан файл plugins/v_2_0/Object.py В созданном файле определен метод instead__prepareColumnsToPdf() – данный метод выполняется вместо метода _prepareColumnsToPdf(). В методе выполняется код, который выбирает только те значения, которые необходимы для формирования PDF файла. В созданном файле определен метод after__prepareColumnsToPdf(), который выполнится после instead__prepareColumnsToPdf() и перегруппирует уже полученные значения в соответствии с утвержденным макетом.