连线与布局
连线描述节点之间的关系。布局块用少量意图控制放置方式,而不暴露坐标或绘图原语。
连线方向
连线连接两个不同节点。允许前向引用,不允许自连线或使用分组作为端点。
| 操作符 | 含义 |
|---|---|
-> | 从左侧节点指向右侧节点的有向关系 |
<-> | 双向对称的一个关系 |
-- | 无方向或有意不指定方向的关联 |
<-> 是一个关系,不是两条可独立标注连线的缩写。
连线种类与标签
可选标签描述协议、事件、命令、数据集或用途,长度为 1 至 40 个 Unicode scalar。可选 kind 与标签独立描述关系,默认值是 flow。
| Kind | 预期含义 |
|---|---|
flow | 通用运行时或概念流 |
request | 同步请求或调用 |
event | 异步消息或事件传递 |
data | 数据移动、复制、读取或写入 |
dependency | 构建、部署或运维依赖 |
stack
stack 1.0
diagram "Relationships" {
node web "Web app" {
kind client
}
node api "API"
node queue "Events" {
kind queue
}
edge web -> api "HTTPS" {
kind request
}
edge api -> queue "OrderPlaced" {
kind event
}
}表达不同关系时,同一对节点之间可以有多条连线。端点、操作符、标签和有效 kind 全部相同的精确重复无效。比较 <-> 和 -- 重复时忽略端点顺序。
布局作用域
一个图或分组最多包含一个 layout 块。分组中的布局只影响其直接子项,图中的布局只影响图的直接子项。rank 和 order 必须引用同一作用域中至少两个不同的直接子项。
布局把直接子分组视为一个项。不同分组后代节点之间的连线会形成直接子项之间的连接,因此即使分组不能作为连线端点,顶层布局仍可排列分组。
Direction、rank 与 order
stack
layout {
direction right
rank same [web, worker]
order [web, worker, database]
}direction right偏好从左到右,direction down偏好从上到下。它是强提示,但不保证每条连线都朝该几何方向;嵌套分组不会继承。rank same [a, b]是约束,要求列出的直接子项位于同一布局 rank。同一作用域中的一个子项不能出现在两个 same-rank 语句中。order [a, b]是相对顺序提示。向右布局时按从上到下,向下布局时按从左到右,自动布局时沿选定 cross-axis 解释。可以省略其他子项。
为满足包含关系、same-rank 约束、可读性或输出边界,渲染器可以偏离 order。支持诊断的工具此时应发出 STK4001。
渲染器负责的决定
Stack 不提供坐标、尺寸、端口、路径、颜色、字体、换行或 z-index。渲染器负责防止重叠、保持包含与方向、确保标签可读、避开节点内部布线,并扩展画布而不裁剪语义内容。