项目介绍:Domain Message Flow Modelling
Domain Message Flow Modelling 是一个用来帮助设计松耦合系统的重要工具。这种工具不仅需要精心设计系统边界,还需要在有界上下文之间定义清晰的交互方式。
什么是有界上下文?
有界上下文是软件架构中的一个子系统,与领域中的某个部分相对应。它可以表现为微服务或单体应用中的一个模块。
域消息流图是什么?
域消息流图(Domain Message Flow Diagram)是一种简单的可视化工具,用于展示在一个场景中,不同行为者、上下文和系统之间的消息流,包括命令、事件和查询。
格式说明
尽管没有正式的规格,域消息流图有两种基本格式可供选择,并且可以根据需要进行调整。
独立信息与内容格式
这种格式使用两个形状来表示每条消息:一个用于消息名称和顺序,另一个盒子用于展示消息的内容(即信息载体)。
这种格式的优点在于,可以在一开始专注于消息的流动,不被消息内容干扰。首先展示消息的发送者和接收者之间的流动(消息上标注顺序)。然后,将每条消息的内容以独立的盒子标注在旁边。
合并信息与内容格式
这种格式将消息名称、顺序和内容放在一个形状内。这种格式适合需要从一开始就关注消息内容的情况。
如何使用
一旦你完成初步的架构设计,并标识了候选有界上下文,就可以开始设计消息流了。
使用步骤如下:
- 列出需要建模的场景。
- 针对每个场景绘制一张图。
- 创建图形时的典型流程:
- 从一个行为者/上下文/系统开始。
- 创建他们要发送的消息。
- 添加接受消息的对象,并连接发送者与接收者。
- 将消息靠近连接线放置。
- 重复上述步骤直到完成场景。
消息应包含以下三个元素:
- 消息名称
- 消息内的重要数据
- 消息在流中出现的顺序
注意:在处理查询时,响应和请求一样重要,信息可以作为一个整体来展现。
可视化技巧
域消息流图最常见的问题在于信息过多。米勒定律是一个很好的指南,可以在图中限制5到9个消息。如果发现添加数据会打断进度,可以先放置所有消息,再补充数据部分。
时间依赖的消息
有时候消息是时间驱动的,例如:在五分钟不活动后取消在线订单。对时间条件要格外注意,如“在…之内”、“之后”或“每隔…时间”代表了不同的触发条件。
额外资源与贡献者
这个项目得到了许多贡献者的支持和灵感来源于诸如Simon Brown的C4容器图、领域故事讲述等其他模型。我们欢迎并鼓励任何反馈或建议以改进这项技术,或者创建不同的版本。
版权和许可
该工作受《Creative Commons Attribution 4.0 国际许可证》许可。您可以自由地使用这一符号,并被鼓励提交有关您案例的示例请求。