Перейти к содержимому

Приложение C: Виды стандартной библиотеки

Стандартная библиотека поставляет два пакета видов. Введите их в область видимости через:

use * from arch.modules
use * from arch.kinds

Оба пакета автоматически разрешаются против стандартной библиотеки, входящей в набор инструментов, — запись в dependencies не нужна.

Виды модулей (arch.modules)

ВидОбязательные пустые слотыЗначения по умолчаниюВиджет по умолчанию
servicerequired cascade team, required labels.domainarch-service
frontendrequired cascade team, required labels.domainarch-frontend
databaserequired cascade team, required labels.data.classificationarch-database
componentcascade teamarch-component
systemcascade teamarch-system
external_systemrequired ext.vendor, required ext.contract.urlarch-external-system
actorarch-actor

Чтение таблицы:

  • Обязательные пустые слоты должны быть заполнены или сброшены каждым экземпляром.
  • Значения по умолчанию — это предзаданные поля, которые экземпляр наследует (с семантикой каскада там, где она указана).
  • Виджет по умолчанию — тег пользовательского элемента, которым отрисовывается экземпляр (каскадируется через cascade widget: ...).

Проект, делающий use * from arch.modules, получает рабочие визуалы бесплатно — собственный widgets: скрипт не требуется.

Виды фасетов

Стандартная библиотека определяет один вид фасета: facet (обобщённый базовый вид, без значений по умолчанию, без обязательных пустых слотов). Пользовательские виды фасетов (resource, capability, endpoint_group) обычно объявляются для каждого проекта. См. главу 6 и главу 16.

Виды интерфейсов (arch.kinds)

ВидРодительСемантика
syncinterfaceОбобщённый синхронный интерфейс
asyncinterfaceОбобщённый асинхронный интерфейс
commandsyncОперация, изменяющая состояние
querysyncОперация только на чтение
eventasyncPub/sub-широковещание
streamasyncДолгоживущий поток данных

Два родительских вида (sync, async) управляют стилизацией рёбер: синхронные рёбра сплошные, асинхронные пунктирные. Четыре дочерних вида (command, query, event, stream) наследуют эту стилизацию и передают конкретную семантику.

Только event и stream (и всё, что от них наследуется) — осмысленные цели для подключения subscribes:.

Виды, локальные для проекта

Объявляйте собственные виды, когда предметный словарь предпочтительнее обобщённых видов. См. главу 16.

// В файле kinds.arch вашего проекта
export type service internal_service {
required cascade team
labels {
security.zone: Internal
}
}

Затем используйте вид где угодно в пакете:

internal_service Authorize {
team: Platform
command Authenticate
}

Чтобы сделать локальный для проекта вид видимым другим пакетам, пометьте его export и импортируйте через use … from <your.package> в их package.archspace.

См. также