Управление зависимостями

Автозагрузка плагинов происходит на этапе инициализации ядра Аксиомы.ГИС (Core). При этом многие сервисы, которые требуются для работы плагинов еще не созданы. Для оповещения о готовности этих сервисов существует механизм управления зависимостями.

Интерфейс базового класса HasDependencies позволяет регистрировать и получать доступ к зависимостям с помощью метода createDependencyGetter().

Например:

from axioma.core.plugin import *

# Объявляем свой класс-расширение
class MyExtension(axioma.core.plugin.Extension):
        def __init__(self):
                super().__init__()
                # Регистрируем зависимость от axioma.gui.Gui:
                self.gui = self.createDependencyGetter(axioma.gui.Gui)

        def createMyMapView(self, mymap):
                # Используем зависимость:
                mapView = self.gui().createMapView(mymap)
                ...
                return mapView

# Регистрируем расширение для разрешения зависимостей
ext = MyExtension()
axioma.app.gui.prependExtension(ext)
...
mapView = ext.createMyMapView(map)

Зарегистрировать сервис, к которому можно получить доступ через механизм разрешения зависимостей, можно с помощью метода registerService().

Зарегистрировать созданное расширение можно с помощью метода prependExtension().

На данный момент механизм управления зависимостями оповещает о создании следующих сервисов:

Для Аксиома.ГИС и Аксиома.Runtime:

Только для Аксиома.ГИС: