Структура конвейеров
Где находятся классы конвейеров в движке, провайдерах и функциях и какие правила проверяет сборка.
Identica проводит игрока через конвейеры. Каждый конвейер состоит из групп, а каждая группа по порядку выполняет фазы. Провайдеры добавляют шаги, а функции — фазы через PipelineExtension. Все модули раскладывают пакеты конвейеров одинаково, поэтому по пакету класса видно, где он выполняется.
Конвейеры и их группы
| Конвейер | Когда выполняется | Группы |
|---|---|---|
prepare | пока подключение подготавливается, до начала сценария | context, handshake, policy, profile, finalize |
scenario | сценарий authentication, registration или migration | общие: preparation, journey, session, finalize; для отдельных сценариев: identity и session во всех трёх, а также policy в аутентификации и регистрации |
completion | после сценария, чтобы отправить игрока туда, где он должен оказаться | context, step |
Структура пакетов
В движке, в me.whereareiam.identica.engine.pipeline:
prepare/group/<group>/phase/иcompletion/group/<group>/...содержат фазы этих конвейеров.scenario/shared/group/<group>/содержит группы, которые выполняет каждый сценарий.scenario/type/<scenario>/group/<group>/phase/содержит группы и фазы одного сценария.
В провайдере, в <пакет провайдера>.pipeline:
PipelineExtensionпровайдера лежит прямо вpipeline/step/type/<scenario>/содержит шаги, которые относятся к одному сценарию, напримерstep/type/authentication/step/shared/содержит шаги, которые используют несколько сценариевstep/base/содержит абстрактные классы, от которых наследуются эти шаги
В функции, в <пакет функции>.pipeline:
PipelineExtensionфункции лежит прямо вpipeline/- фазы повторяют путь движка, к которому они подключаются, например
prepare/group/policy/phase/илиscenario/type/authentication/group/identity/phase/ phase/base/содержит абстрактные классы, от которых наследуются эти фазы
Правила, которые проверяет сборка
./gradlew validatePipelineStructure проверяет эти правила в основных исходниках модулей identica-*, а задача check каждого модуля запускает эту проверку:
- Пакета
pipeline/scenario/base/верхнего уровня нет. Код, общий для всех сценариев, относится кscenario/shared/. - Пакет
baseвнутриpipeline/содержит только абстрактные классы. - В провайдерах и функциях класс, который реализует
PipelineExtensionилиPipelinePhaseлибо реализуетStep, лежит внутриpipeline/.
При нарушении сборка завершается ошибкой и перечисляет пути проблемных файлов.
