← Цялата документация Документация · Актуализирана 2026-05-08

Матрьошка и регистри

Вложени процеси и системата за споделяне на персонализирани възли между потребители.

Матрьошка процеси

Матрьошка процес е процес, който съдържа други процеси. Името идва от руските вложени кукли. Отваряте външната, намирате друга вътре, отваряте тази, намирате друга. Платното на Flowzart работи по същия начин. Възел на външното платно може да бъде напълно оформен процес сам по себе си, със собствени възли, собствена логика и собствени изходи.

Всяко ниво на влагане е независимо. Външният процес не се интересува как е изграден вътрешният; той се интересува само какво влиза и какво излиза. И всяко ниво остава проверимо: отварянето на Матрьошка възел разкрива вътрешното му платно точно както ако беше горното ниво. Нищо не е скрито. Нищо не е непрозрачно.

Това има значение поради две причини:

  • Композиция без сложност. Процес от сто плоски възела е неподдръжаем. Същият процес, групиран на вложени части (една за извличане, една за преобразуване, една за доставяне), се побира в главата ви. Всяка част е единица, за която можете да разсъждавате изолирано.
  • Повторно използване без дублиране. Вложен процес може да бъде запазен като възел и пуснат в други процеси, третиран като една композируема единица вместо копи-пейстнати възли разпръснати из файлове. (Дали редакциите на вътрешния процес се разпространяват към всяко място, където се използва, е отворен въпрос; вижте “Работа с Матрьошка” по-долу.)

Регистри

Регистър е място, където потребителите на Flowzart публикуват възли за други потребители да инсталират. Някои възли са вградени, доставени от Flowzart. Други са създадени от общността: някой изгражда полезен Матрьошка процес, запазва го като възел и го публикува в регистър. Всеки с достъп до този регистър може да го изтегли в собственото си платно и да започне да го използва.

Три неща произтичат от това:

  • Персонализираните възли са от първи клас. Възел, който потребител е изградил, и възел, който Flowzart е доставил, се държат по същия начин на платното. Няма второ ниво.
  • Разпространението е по избор. Публикуването на възел е преднамерено действие. Възлите остават локални, докато авторът им не ги изпрати някъде.
  • Регистрите могат да са споделени или частни. Екип може да поддържа регистър, ограничен до себе си. Общността може да поддържа публични. Същият възел може да живее и в двата, при различни версии.

Споделяне на корекции нагоре по веригата

Това, което тази комбинация отключва, е необичайно. Когато потребител инсталира възел от общността и намери бъг в него, може да го отвори, да го поправи на собственото си платно и да предложи корекцията обратно на регистъра, от който го е получил. Поддръжникът преглежда промяната. Ако е добра, тя се слива. От този момент нататък всеки потребител на този възел получава корекцията при следващото си обновяване.

Това не е заобикалящо решение, наслоено отгоре; това е начинът, по който системата е изградена. Персонализираните възли са процеси, процесите са проверими и регистрите имат път за принос. Бъговете в споделените градивни елементи не седят там вечно, очаквайки първоначалния автор да ги забележи. Всеки може да ги поеме.

Работа с Матрьошка

От процес към възел: Матрьошка договорът. Матрьошка процес се превръща във възел чрез деклариране на Матрьошка договор — спецификация на публичния интерфейс на процеса (неговите входове и изходи), която останалата част от платното третира като повърхността на възела. След като договорът е деклариран, системата ImEx (Внос/Износ) се грижи за останалото: процесът може да бъде експортиран като Матрьошка възел, импортиран в други процеси и композиран наравно с всеки вграден възел.

Един процес може да декларира повече от един Матрьошка договор. Всеки договор се експортира като отделен Матрьошка възел. Така един добре проектиран процес може да произведе семейство свързани персонализирани възли — различни повърхностни API над споделен вътрешен граф. Полезно, когато няколко възела споделят повечето от логиката си, но се различават по това кои входове и изходи излагат.

Повторно използване без редеклариране. Във вътрешния процес, който стои зад Матрьошка договор, композирате със същата палитра от възли като всеки друг процес — включително възли, които вече сте дефинирали другаде или импортирали чрез ImEx. Не ги редекларирате; реферирате към тях. Матрьошка възел, който изградите, може да използва други Матрьошка възли, които вече сте изградили, изграждайки възможности от по-висок ред от такива от по-нисък ред, без дублиране на логика. Точно това прави Матрьошка регистрите мултипликативни, а не адитивни: всеки възел в регистъра може да композира с всеки друг възел, а получената графика остава толкова проверима, колкото и оригиналната.

Отваряне на Матрьошка възел. Двойно щракнете върху всеки Матрьошка възел на платното, за да слезете в неговия вътрешен процес. Вюпортът заменя текущия изглед с вътрешния; брошурата за навигация в горната част показва пътя обратно, а Esc връща едно ниво нагоре. Същият жест работи на всяко ниво на влагане — няма максимална дълбочина.

Работа с регистри

Публикуване на възел. Щракнете с десен бутон върху всеки възел, който притежавате на платното, и изберете „Публикувай в регистър…“ — модал ще попита кой регистър да бъде използван за качването и какъв етикет за версия да бъде приложен. Възелът се появява в регистъра, веднага щом качването приключи, и всеки с достъп за четене до този регистър може да го инсталира от този момент нататък.

Откриване на възли. Индексната страница на регистър изброява всеки публикуван възел с неговата категория, автор и текуща версия. Търсенето филтрира по име, етикет или автор; категориите могат да се преглеждат като дърво. Изгледът „Последни“ извежда напред възли, публикувани или обновени през последната седмица — полезен за забелязване на нови градивни елементи, които общността е споделила.

Принос на корекция. Инсталирайте възела като всеки друг. Когато намерите нещо за промяна, отворете го на собственото си платно — локалното копие е ваше да редактирате свободно. Когато корекцията е готова, „Предложи промени“ изпраща pull request обратно към източника на регистъра с diff на вашите редакции. Поддръжникът преглежда; ако се слее, всеки потребител на този възел получава обновлението при следващото си синхронизиране. Това е същият поток като в секцията „Споделяне на корекции нагоре по веригата“ по-горе; един път, изведен през платното.

Публични срещу частни регистри. Всеки може да създаде регистър от настройките на своя акаунт. Публичните регистри могат да се търсят и инсталират от всеки — така живее библиотеката на общността. Частните регистри изискват изрична покана за член; достъпът се управлява чрез списък с членове с роли четене, писане и админ. Един екип обикновено поддържа един частен регистър за вътрешните си възли и тегли от публичните за споделени градивни елементи.

Версиониране. Възлите в регистър следват SemVer (major.minor.patch). Patch и minor обновленията се прилагат автоматично при следващото ви синхронизиране — корекции на бъгове и обратно съвместими допълнения се появяват без намеса. Major обновленията изискват умишлено приемане; известие „налично обновление“ извежда новата версия с обобщение на changelog-а, така че да решите дали да поемете чупещата промяна. Можете също да закачите всеки възел към специфична версия за процес, ако трябва да заключите зависимостта.