ASN 元模型设计
ASN(Matrix Schema Notation)是矩阵工坊的核心元模型层,实现在
matrix-asn模块。它把 DDD 战略设计中的概念固化为可解析、可校验、可生成的结构化模型。
设计目标
- 可解析:与 ANTLR IDL(
.avdl)联动,IDL 是承载语法,ASN 是语义模型; - 可校验:模型在内存中即可完成一致性校验(聚合边界、依赖方向、命名规范);
- 可生成:Generator / TemplateEngine 以 ASN 为输入,产出符合 DDD/CQS 分层的工程代码。
三层抽象
1. 限界上下文层(Context)
战略设计的核心载体:
| 模型 | 职责 |
|---|---|
BoundedContext / MdBoundedContext | 限界上下文定义 |
MdContextMap | 上下文映射(Context Map)总表 |
ContextRelation / RelationType | 上下文间关系与关系类型(上下游 / 防腐层等) |
MdTypeInfo | 类型信息的统一描述 |
2. 原型层(Archetype)
「应用的骨架模板」——一个工程由哪些层、哪些元素构成:
| 模型 | 职责 |
|---|---|
MdArchetype | 原型根:定义一类工程的骨架 |
MdLayer | 分层定义(对齐 DDD 分层) |
MdSchema / MdArchetypeElement | 骨架元素与结构约定 |
MdConstraint | 约束:生成与校验时强制执行的规则 |
MdTemplate | 文件模板 |
MdProjectInit | 工程初始化描述 |
MdFileType / MdIdlFormat / MdAction | 文件类型、IDL 格式与动作 |
3. 前端抽象层(Frontend)
不只后端——工坊对前端也有抽象,目标是「设计资产覆盖全栈」:
| 模型 | 职责 |
|---|---|
MdFrontendElement | 前端元素基类 |
MdPage / MdRoute | 页面与路由 |
MdComponent / MdExtension | 组件与扩展点 |
MdFeature / MdResource | 功能特性与资源 |
MdInterop / MdExtensionPoint | 与宿主环境的互操作约定 |
与设计文件的关系
仓库 design/ 目录是 ASN 承载的示例设计资产:
*.avdl:领域模型 IDL(Order、Invoice、archetype 等);*.graphqls:API 契约;*.yaml:原型与工程配置(archetype.yaml、complain.yaml)。
这些文件在 IDE 中由 matrix-idl 提供编辑支持,加载后构建为 ASN 内存模型,供校验与生成使用。
归档说明
ASN 元模型是矩阵工坊中最值得研读的部分之一:它演示了如何把 DDD 战略设计(Context Map / Archetype / 前端抽象)完整地形式化。模型代码大量使用 Lombok 与 Jackson,可独立于 IDE 运行(matrix-asn 是纯 Java 模块)。