领域消息流建模
设计松耦合的系统不仅需要精心设计的边界。精心定义的有界上下文之间的交互同样重要。
有界上下文是对某个领域部分进行对齐的软件架构中的子系统。它可以实现为微服务或单体结构中的模块。
领域消息流图是一种简单的可视化,用于在单一场景中展示演员、有界上下文和系统之间消息(命令、事件、查询)的流动。
格式
有两种基本格式,但没有正式规范,因此如果基本格式不适合您的需要,可以调整工具。
独立消息和内容
独立消息和内容格式为每条消息使用两种形状:一种用于消息的名称和顺序,另一种用于显示消息内容(它所携带的信息)的方框。
这种格式的好处是可以让您在一开始关注消息的流动,而不会陷入消息内容的细节。
首先展示发送者和接收者之间的消息流动(在消息上标明顺序号)。
然后在每条消息旁边的一个单独方框中展示每条消息的内容:
组合消息和内容
组合消息和内容格式使用一个形状来捕获消息名称、顺序和内容。
这种格式适用于从一开始就希望关注每条消息内容的情况。
下载
使用方法
当你有了架构的初步方案——已识别出候选有界上下文——就可以开始设计消息流。
首先创建一个要建模的场景列表。然后为每个场景创建一个图表。
创建图表时,典型的流程是:
- 从一个演员/上下文/系统开始
- 创建他们想发送的消息
- 添加消息的接收者并连接发送者和接收者的连线
- 将消息靠近连线放置
- 重复步骤1-4,直到场景完成
消息应包含三个元素:
- 消息名称
- 消息中包含的重要数据
- 消息在所建模流中的发生顺序
注意: 在查询的情况下,响应与请求同样重要。信息可以被看作一个单元,如下图展示
可视化提示
领域消息流图和一般图表的最大问题是信息过多。米勒定律是一个很好的启发法则。目标是在图表上有5到9条消息。
如果发现向每条消息添加数据会破坏进度流,可以延迟数据部分,直到放置好所有消息。
依赖时间的消息
有时消息是时间驱动的。例如:在5分钟不活动后取消在线订单。这种可视化方式可能非常有效。重要的是注意语义:“在……内”或“在……之后”或“每隔”5分钟,这些都是截然不同的条件。
其他资源
贡献者
感谢所有现有和未来的贡献者以及下列对领域消息流建模有贡献的个人:
领域消息流图深受以下内容的启发:
贡献和反馈
领域消息流建模符号免费供您使用。此外,我们欢迎您的反馈和创意以改进这一技术或创建替代版本。
也可以随时向我们发送带有您示例的pull请求。
本作品采用知识共享署名4.0国际许可证授权。