Docs
Справочник Preview DSL API FlowConsole

Справочник Preview DSL API FlowConsole

Справочник по типам сущностей, общим полям и flow-методам в текущем Preview DSL на `.fc.ts`.

.fc.ts API, описанный здесь, находится в Preview. Названия, формы и рекомендуемые паттерны могут измениться в следующих версиях SDK.

Этот справочник описывает текущий runtime DSL в .fc.ts, который используется в публичном примере eShop. Если вы хотите создавать диаграммы в FlowConsole сегодня, это самая релевантная API-поверхность.

Общие поля сущностей

Большинство сущностей поддерживают один и тот же набор базовых полей:

ПолеЗначение
idНеобязательный стабильный идентификатор, если вы не хотите, чтобы FlowConsole генерировал его из имени.
nameОтображаемое имя элемента на диаграмме.
descriptionЧеловекочитаемый контекст для элемента.
systemТекущий Preview shortcut для размещения верхнеуровневых Container внутри ComputerSystem.
belongsToРодительская граница или контейнер для вложенных элементов.
tagsПроизвольные теги для будущей фильтрации и классификации.
badgeНебольшой визуальный маркер на элементе.
toneВизуальный акцент: primary, muted, success, warning или danger.

Типы сущностей из eshop.fc.ts

Акторы и границы

  • User: внешний актор, который запускает поток, например Customer или Store Admin.
  • ComputerSystem: верхнеуровневая системная граница, например eShop Platform.
  • Container: архитектурная граница для группировки приложений, API, данных или messaging-компонентов внутри системы.

Приложения и сервисы

  • ReactApp: пользовательское frontend-приложение.
  • RestApi: backend-сервис или gateway с HTTP API.
  • BackgroundJob: асинхронный воркер, который потребляет события или выполняет фоновую обработку.

Данные и messaging

  • Postgres: реляционная база данных.
  • Redis: кеш или быстрое key-value хранилище.
  • KafkaTopic: event stream или topic.

Внешние зависимости

  • ExternalService: сторонняя интеграция, например Stripe или SendGrid.

Иерархия и вложенность

В текущем Preview DSL обычно используются два родительских поля:

  • system: помещает верхнеуровневый Container внутрь ComputerSystem
  • belongsTo: помещает приложения, API, воркеры, базы, кеши, топики и внешние сервисы внутрь контейнера или логической границы

Пример:

const eshop: ComputerSystem = { name: "eShop Platform" };
const services: Container = { name: "Backend Services", system: eshop };
 
const orderingApi: RestApi = {
  name: "Ordering Service",
  description: "Order processing & state machine",
  belongsTo: services,
};

Flow-методы

Текущий flow API является fluent и чувствителен к порядку шагов.

sendsRequestTo(target, label, options?)

Создаёт шаг потока от текущей сущности к target.

customer.sendsRequestTo(webApp, "open store");

sendsRequest(target, label, options?)

Алиас для sendsRequestTo(...). Используйте тот вариант, который лучше читается в вашей модели.

then(target)

Переносит flow cursor на другую сущность перед следующим шагом.

customer
  .sendsRequestTo(webApp, "checkout")
  .then(webApp)
  .sendsRequestTo(apiGw, "POST /orders");

getDataFrom(target, label, options?)

Описывает read/pull шаг. На практике полезен для баз данных, read-моделей и доступа к кешированным данным.

executesRequest(action, options?)

Описывает внутренний шаг, который остаётся на той же сущности.

notificationWorker
  .sendsRequestTo(orderEvents, "consume OrderPaid", { kind: "async" })
  .executesRequest("render email template");

inParallel(...branches)

Запускает несколько веток внутри одного родительского потока.

orderingApi.inParallel(
  () => orderingApi.sendsRequestTo(orderingDb, "INSERT order", { kind: "dependency" }),
  () => orderingApi.sendsRequestTo(orderEvents, "publish OrderCreated", { kind: "event" }),
  () => orderingApi.sendsRequestTo(basketApi, "clear cart")
);

ConnectionOptions

ConnectionOptions уточняет смысл отдельного шага потока.

ПолеЗначение
detailДополнительный текстовый комментарий к связи.
kindСемантический тип связи.
iconНеобязательная иконка для будущей визуализации.
mutedНеобязательное визуальное ослабление акцента.

ConnectionOptions.kind

В текущем Preview поддерживаются четыре типа связи:

ТипКогда использовать
syncПрямой request-response вызов. Это значение по умолчанию для sendsRequestTo.
asyncОтложенная работа, передача воркеру или неблокирующая обработка.
eventПубликация события или event-driven коммуникация.
dependencyДоступ к данным, dependency edge или техническая зависимость.

Runtime DSL и package SDK

Эта документация намеренно центрирована вокруг runtime .fc.ts файлов. Если вы используете import-based @flowconsole/sdk, рассматривайте его как смежную API-поверхность, а не как канонический контракт для этой Preview-документации.

Для полного walkthrough по публичному примеру переходите к руководству по eShop.