110: Концепция/Адресация
- Требуется:
Схема URI для навигации по версионированной и разветвлённой реальности экосистемы Идей. Она предоставляет синтаксис как для простых, динамических запросов, так и для полностью разрешённых, постоянных ссылок.
- Концепции Веток и Пути Поиска, по которым осуществляется навигация с помощью этой схемы URI, подробно описаны в главе Видимость.
Схема URI idea: — это язык для навигации по версионированной, разветвлённой реальности, описанной в предыдущем документе. Она предоставляет надёжный синтаксис для запроса Идей и для создания постоянных, воспроизводимых ссылок на конкретные, разрешённые версии.
Анатомия ссылки idea:
Ссылка idea: может включать несколько компонентов:
- Схема: idea:
- Домен: Необязательное суверенное пространство имён, с префиксом
//
(например,//my-project.com
). Если опущено, путь считается относительным к текущему пространству имён. - Указатель ветки: Необязательная, явная ветка (например,
~main/
). Начальный символ/
является сокращением для~main/
. - Путь: Текстовый идентификатор Идеи (например,
schemas/UserProfile
). - Префикс версии: Необязательное ограничение версии (например,
?1.2
). - Разрешённая версия: В разрешённой ссылке — точная найденная версия (например,
:1.2.3
). - Фрагмент: Указатель на определённую часть Идеи (например,
#schema
).
Состояния ссылок
Ссылка idea: может находиться в нескольких состояниях:
-
Относительный Запрос («Просьба»):
idea:schemas/UserProfile?1.2
- Этот запрос ищет последнюю версию
UserProfile
, совместимую с префиксом1.2
, разрешаемую с помощью Пути Поиска в текущем суверенном пространстве имён.
- Этот запрос ищет последнюю версию
-
Абсолютный Запрос:
idea://my-project.com/schemas/UserProfile?1.2
- Это полностью определённый запрос, который нацелен на конкретный домен, игнорируя текущее пространство имён.
-
Запрос с явным указанием ветки:
idea:~main/schemas/UserProfile
(илиidea:/schemas/UserProfile
)- Префикс
~
указывает на явный запрос к Ветке. Это игнорирует Путь Поиска и напрямую обращается к веткеmain
в текущем (или указанном) пространстве имён.
- Префикс
-
Разрешённая ссылка («Ответ»):
idea://my-project.com/:staging/schemas/UserProfile?1.2:1.2.staging.4
Полный цикл разработки
Эти концепции обеспечивают безопасный и эффективный рабочий процесс для параллельной разработки.
-
Создание ветки: Разработчик начинает с создания новой ветки,
feature/user-onboarding-v2
. Его Путь Поиска устанавливается в['feature/user-onboarding-v2', 'main']
. -
Разработка процесса: Разработчик создаёт новую Идею типа
Process
,idea:processes/onboarding
. Поскольку он находится в веткеfeature/user-onboarding-v2
, эта новая Идея и все её последующие версии автоматически связываются с этой веткой. Он может свободно дорабатывать и тестировать процесс, создавая по мере необходимости Идеи типаInstruction
иRecord
. -
Использование существующих компонентов: Новому процессу
onboarding
требуется стандартнаяInstruction
«Отправить письмо». Разработчик ссылается на неё как наidea:activities/send-email
. Система разрешения сначала проверяет веткуfeature/user-onboarding-v2
. Так как в этой ветке она отсутствует, система обращается к веткеmain
и находит там стабильную версию. -
Переопределение компонента: Разработчик понимает, что ему нужен собственный шаблон «Приветственное письмо». Он создаёт новую версию
idea:records/email-templates/welcome
и сохраняет её. Эта новая версия сохраняется в веткуfeature/user-onboarding-v2
. Теперь, когда его процесс ссылается на эту Идею, система разрешения сначала находит его новую версию и использует её, оставляя исходную версию в веткеmain
нетронутой. -
Продвижение: По завершении разработчик «продвигает» свою работу. Идея версии
1.3.new-login.2
копируется, её версия «очищается» до1.4
, и теперь она также публикуется в веткеmain
. Она становится новой стабильной версией для всех. -
Контролируемый волновой эффект: Другой процесс ссылался на
idea:processes/onboarding?1
. Поскольку новая версия1.4
совместима с префиксом?1
, при следующем разрешении этого процесса он автоматически и безопасно подхватит новую версию1.4
. Чтобы предотвратить это и обеспечить стабильность, процесс может «закрепить» свою зависимость, запросив более конкретную версию, например,?1.3
.