Skip to content
bitzorcas
中EN

Concept

Mediator 行为顺序

十四个已注册行为严格按组合根中的顺序执行。

Last updated

问题与使用场景

十四个已注册行为严格按组合根中的顺序执行。

当请求疑似跳过、重复或错序执行横切策略时,使用这张图。

这张图适合用于方案评审、故障定位、代码走查与新人导览。它刻意省略与当前问题无关的类和项目,因此应与源码入口和相关专题文档一起使用。

本页范围只覆盖图中命名的职责和关系;未出现的能力需要回到对应模块文档继续确认。

读图路径

  1. 第 1 步:按注册顺序阅读十四个行为,不要按名称字母顺序理解。
  2. 第 2 步:运行时许可与授权在校验、幂等与事务之前门控。
  3. 第 3 步:区分事务前门禁、事务内工作与事务后效果。
  4. 第 4 步:先检查标记契约,不要假设每个行为都会处理每种请求。

读图时不要跳过箭头方向、编号和分组标题;它们分别表达依赖或时间方向、执行次序与职责边界。如果图与源码不一致,以当前源码和已接受的架构决策为准,并立即更新生成目录。

图例与表达约定

视觉元素含义不能据此推断
珊瑚色焦点当前图要强调的决策点或主路径该元素一定更重要或拥有更多权限
蓝色边界外部系统、协议边缘或显式边界一定是独立部署服务
灰色连接依赖、调用、迁移或数据流,具体语义由箭头标签决定一定同步、同事务或严格一次
分组框职责、层或生命周期阶段组织团队或物理机器边界

本图类型为 管线。先依据该类型理解布局,再用下文的源码事实校正直觉。

关键关系与设计含义

关系 1

源码事实:生成投影按图示顺序注册十四个请求行为(DelegatedSessionRestriction 位于 Authorization 与 Validation 之间,ReadModelDisplay 收尾),另有三个流管线行为(LoggingStream → RuntimeLicenseStream → AuthorizationStream)。

架构含义:精确顺序属于请求语义;移动注册可能改变授权、持久化、重试或审计结果。

核对动作:许可门禁是否在授权、校验与持久化之前运行?

关系 2

源码事实:运行时许可门禁(失败关闭)位于日志之后、授权与校验和事务边界之前。

架构含义:把运行时许可门禁置于授权与事务之前,确保未许可的工作不会到达数据库或处理器。

核对动作:授权是否在校验、幂等与持久化工作之前失败?

关系 3

源码事实:授权与校验位于幂等和事务边界之前。

架构含义:尽早拒绝未授权或无效工作,可避免为本就不应执行的请求创建幂等记录或事务。

核对动作:该关注点应由哪个行为负责,而不是由处理器负责?

关系 4

源码事实:领域事件在事务工作之后、后处理与活动审计之前分发。

架构含义:事务后的事件与审计位置,决定下游是否看到已提交状态,以及失败如何被记录。

核对动作:移动该行为是否会改变事务或审计语义?

设计评审问题

在评审或实现相关变更时,逐项回答下面的问题。无法从代码、测试或 ADR 得到答案时,不应仅凭图示作出结论。

  • 许可门禁是否在授权、校验与持久化之前运行?
  • 授权是否在校验、幂等与持久化工作之前失败?
  • 该关注点应由哪个行为负责,而不是由处理器负责?
  • 移动该行为是否会改变事务或审计语义?

如何使用答案

  1. 先确定能力或规则的唯一归属方。
  2. 再确认依赖、调用或事件方向没有反转所有权。
  3. 最后用自动化测试或可重复命令固定结论。

边界与易错点

边界 1

流拒绝在 Handler 枚举前抛异常并映射为 403,区别于请求拒绝返回类型化 Result。

  • 不要推断:图中出现连接,不等于所有实现都同步调用、共享事务或共享数据所有权。
  • 评审要求:授权是否在校验、幂等与持久化工作之前失败?

边界 2

请求未实现相应标记契约时,行为可以快速跳过;注册顺序不会改变。

  • 不要推断:图中出现连接,不等于所有实现都同步调用、共享事务或共享数据所有权。
  • 评审要求:该关注点应由哪个行为负责,而不是由处理器负责?

边界 3

不要在单个处理器中重复实现许可、授权、幂等或审计逻辑。

  • 不要推断:图中出现连接,不等于所有实现都同步调用、共享事务或共享数据所有权。
  • 评审要求:移动该行为是否会改变事务或审计语义?

源码核对与再生成

本图的首要核对入口是 src/Hosts/BitzOrcas.Api/Composition/Generated/PipelineCapabilityProjection.g.cs。先检查该入口及其直接引用,再重新生成图表资产和说明页。

Terminal window
# 重新生成中英文 SVG、独立 HTML 与说明页
npm run diagrams
# 检查双语配对、引用、安全属性、可访问性与画布边界
npm run verify:diagrams
Terminal window
# 确认生成结果只包含预期图表与页面变化
git diff -- scripts/diagrams diagram-sources public/diagrams src/content/docs
# 验证站内链接、MDX 结构与专业深度门禁
npm run verify:docs
npm run audit:docs-depth

变更完成清单

  • 图中的职责、顺序、状态或关系与当前源码一致。
  • 新增元素确实有助于回答本页问题,没有把项目清单全部塞进图中。
  • 箭头有明确方向与关系语义,没有暗示不存在的同步或事务保证。
  • 中英文标题、标签、事实与边界保持语义对等。
  • 窄屏、全屏和缩放模式下均可读,没有文字重叠或越界。
  • 相关架构测试、集成测试或验证命令已经执行。
  • 若改变了长期约束,已经同步 ADR 或架构说明。

继续阅读

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%