110: Концепция/Адресация
- Требуется:
Это как веб-адрес (URL), но специально для поиска разных версий Идей в нашей системе. С помощью такой ссылки можно как попросить «дай мне самую новую подходящую версию», так и указать на одну конкретную, неизменную версию навсегда.
- Понятия Ветвей и Пути Поиска, по которым работает эта система адресов, подробно описаны в главе Видимость.
Система адресов idea: — это язык, на котором мы ориентируемся в мире Идей, полном разных версий и «ветвей», как в игре с разными сюжетными линиями. Она позволяет нам либо запрашивать Идеи, либо создавать постоянные, надёжные ссылки на их конкретные, определённые версии.
Из чего состоит ссылка idea:
Ссылка idea: может включать несколько частей:
- Схема: idea: — всегда начинается так.
- Домен: Необязательное «королевство», где живёт идея, начинается с
//
(например,//moy-proekt.com
). Если его нет, система ищет идею в текущем «королевстве». - Указатель ветки: Необязательное указание на конкретную ветку разработки (например,
~main/
). Символ/
в начале — это короткий способ написать~main/
. - Путь: Имя Идеи (например,
schemas/UserProfile
). - Запрос версии: Необязательное требование к версии (например,
?1.2
), которое означает «любая версия, начинающаяся с 1.2». - Найденная версия: В итоговой, «отвеченной» ссылке здесь будет точная версия, которая была найдена (например,
:1.2.3
). - Фрагмент: Указатель на определённую часть внутри Идеи (например,
#schema
).
Состояния ссылки
Ссылка idea: может быть в нескольких состояниях:
-
Относительный запрос («Просьба»):
idea:schemas/UserProfile?1.2
- Это просьба найти последнюю версию
UserProfile
, совместимую с1.2
. Поиск будет идти по специальному Пути Поиска в текущем «королевстве».
- Это просьба найти последнюю версию
-
Абсолютный запрос:
idea://moy-proekt.com/schemas/UserProfile?1.2
- Это точный запрос к конкретному домену. Он не зависит от того, в каком «королевстве» вы сейчас находитесь.
-
Запрос к конкретной ветке:
idea:~main/schemas/UserProfile
(илиidea:/schemas/UserProfile
)- Знак
~
означает, что нужно искать только в указанной Ветке. Этот запрос игнорирует Путь Поиска и идёт напрямую в веткуmain
в текущем (или указанном) «королевстве».
- Знак
-
Разрешённая ссылка («Ответ»):
idea://moy-proekt.com/:staging/schemas/UserProfile?1.2:1.2.staging.4
- Это постоянная и однозначная запись о результате поиска. Она говорит: «Запрос был выполнен в домене
moy-proekt.com
, в веткеstaging
, и была найдена точная версия1.2.staging.4
».
- Это постоянная и однозначная запись о результате поиска. Она говорит: «Запрос был выполнен в домене
Как это работает на практике
Эти правила позволяют нескольким людям безопасно работать над одним проектом одновременно.
-
Создание ветки: Разработчик начинает работу и создаёт новую ветку
feature/user-onboarding-v2
. Его Путь Поиска теперь настроен так: сначала искать в['feature/user-onboarding-v2', 'main']
(сначала в новой ветке, потом в главной). -
Разработка процесса: Разработчик создаёт новую Идею типа «Процесс» с адресом
idea:processes/onboarding
. Так как он работает в своей ветке, эта новая Идея и все её будущие версии автоматически сохраняются в этой ветке. Он может спокойно её менять и тестировать. -
Использование готовых частей: Новому процессу нужна стандартная команда «Отправить Email». Разработчик ссылается на неё по адресу
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
.