一佳技术

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 模块)。