一个项目的上下文映射图可以用两种方式表示:
1.画一个简单的框图来表示两个或多个限界上下文之间的映射关系;
2.另一种更详细的方式是通过限界上下文集成的源代码实现来表示;
上下文映射图为什么重要
图3.1表示一个抽象的上下文映射图,然后不断的向里面添加细节内容;
绘制上下文映射图
图3.1展示了上游(upstream)和下游(downstream)两种集成关系。我们还可以加入模块、聚合等信息。
上下文映射图不是企业架构,也不是系统拓扑图。但它可以用于高层次的架构分析。
产品和组织关系
任意两个限界上下文之间的关系可能如下:
合作关系:两个上下文团队要么一起成功,要么一起失败。两个团队在接口演化上进行合作以同时满足两个系统的需求。
共享内核:对模型和代码的共享产生一种紧密依赖。
客户方-供应方开发:当两个团队处于上游-下游关系时,上游团队独立开发,此时下游团队会受很大影响,所以我们应该顾及到下游团队的需求。
尊奉者:在上下游关系中,如果上游没有实现给下游的种种承诺,那么下游只能盲目只用上游团队的模型。
防腐层(ACL):在集成两个设计良好的上下文时,可以根据自己的领域模型创建一个单独的层,它在你自己的模型和他方模型之间进行翻译转换。
开发主机服务(OHS):让你的子系统通过协议来访问你的服务。
发布语言(PL):两个上下文之间翻译模型需要一种公用语言,用于完成集成交流,通常和开放主机服务一起使用。
大泥球:我们经常会发现系统中存在混杂在一起的模型,他们的边界非常模糊。
映射3个示例限界上下文
第一张映射图
敏捷项目管理上下文位于底部,表示这个核心模型位于其他系统的下游。
在限界上下文中我们提到projectOvation将自治的运行,我们的设计应该尽可能的限制实时依赖性。
图中的OHS/PL分别表示开放主机服务和发布语言,发布语言可以是JSON、XML、也可以使事件驱动框架,领域事件以消息的形式发送到订阅方。
ACL:为防腐层。
协作上下文
身份与访问上下文通过REST方式向外发布服务。图3.6中,下游系统边界对象采用同步方式向上游系统获取资源。获取远程模型数据后,边界对象取出所需数据,再将其翻译成适当的值对象实例。
敏捷项目管理上下文
和身份与访问上下文集成