Приложение C: Виды стандартной библиотеки
Стандартная библиотека поставляет два пакета видов. Введите их в область видимости через:
use * from arch.modulesuse * from arch.kindsОба пакета автоматически разрешаются против стандартной библиотеки, входящей в набор инструментов, — запись в dependencies не нужна.
Виды модулей (arch.modules)
| Вид | Обязательные пустые слоты | Значения по умолчанию | Виджет по умолчанию |
|---|---|---|---|
service | required cascade team, required labels.domain | — | arch-service |
frontend | required cascade team, required labels.domain | — | arch-frontend |
database | required cascade team, required labels.data.classification | — | arch-database |
component | — | cascade team | arch-component |
system | — | cascade team | arch-system |
external_system | required ext.vendor, required ext.contract.url | — | arch-external-system |
actor | — | — | arch-actor |
Чтение таблицы:
- Обязательные пустые слоты должны быть заполнены или сброшены каждым экземпляром.
- Значения по умолчанию — это предзаданные поля, которые экземпляр наследует (с семантикой каскада там, где она указана).
- Виджет по умолчанию — тег пользовательского элемента, которым отрисовывается экземпляр (каскадируется через
cascade widget: ...).
Проект, делающий use * from arch.modules, получает рабочие визуалы бесплатно — собственный widgets: скрипт не требуется.
Виды фасетов
Стандартная библиотека определяет один вид фасета: facet (обобщённый базовый вид, без значений по умолчанию, без обязательных пустых слотов). Пользовательские виды фасетов (resource, capability, endpoint_group) обычно объявляются для каждого проекта. См. главу 6 и главу 16.
Виды интерфейсов (arch.kinds)
| Вид | Родитель | Семантика |
|---|---|---|
sync | interface | Обобщённый синхронный интерфейс |
async | interface | Обобщённый асинхронный интерфейс |
command | sync | Операция, изменяющая состояние |
query | sync | Операция только на чтение |
event | async | Pub/sub-широковещание |
stream | async | Долгоживущий поток данных |
Два родительских вида (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.
См. также
- Глава 4: Модули — виды модулей в подробностях
- Глава 5: Интерфейсы — виды интерфейсов в подробностях
- Глава 16: Определение видов — объявление собственных
- Глава 20: Виджеты — как рендерятся виджеты видов