限界上下文和四色原型,请banq大牛帮助解答一下疑问吧,谢谢

15-01-28 abel
         

请banq大牛帮助解答一下疑问吧,谢谢

最近结合着《Java Modeling in Color with UML(四色原型)中文版》看《实现领域驱动设计》,感觉四色原型里提供的组件并未按照领域驱动设计的思想去做。我把四色原型中的物料资源管理中有好几个组件,我只画了3个,分别是物料资源组件、发给供应商的PO组件、供应商交付组件,发现这些组件之间的关系挺复杂。


问题1:子域与限界上下文的划分

划分方法1:权且将物料资源管理做为一个子域,那么物料资源组件、发给供应商的PO组件、供应商交付组件算是这个子域中一个限界上下文,为何说“权且”,因为我不确定这样划分是否正确。


划分方法2:我感觉划分方法1不太正确,因为《实现领域驱动设计》中说最好是一个子域对应一个限界上下文。因此,将物料资源组件、发给供应商的PO组件、供应商交付组件分别算一个子域,每个子域中有一个限界上下文


划分方法3:把整个物料资源管理(包括这3个组件)整个做为一个限界上下文

问题2:上下文划分的不同,会影响着之间的交互

无论按照哪一种划分方法,《Java Modeling in Color with UML》书中的关联关系都太复杂,感觉不是以聚合根进行交互的。应该如何交互呢?

[该贴被abel于2015-01-28 14:37修改过]

         

3
banq
2015-01-29 11:24

四色模型有助于上下文的区分。

我将四色模型映射到语言语义:什么人在什么地方做了什么事情。

什么人是主体Subject,是四色中角色Role,你这个案例中:物料管理员在仓库对物料进行管理(增删改查CRUD),这是一个场景上下文。

比较有分歧的是供应商这块,是否可理解为:供应商(Role)接受采购单和完成采购单。这个上下文有一个共同主体subject是供应商,它们围绕的一个实体是采购单,第一阶段是接受采购单,第二阶段是完成采购单,这两个阶段是一个事务过程,也就是有前后因果一致性关系的,将逻辑强一致性封装在一起是上下文划分的主要依据。

以上是我个人分析,仅供参考。

参考:通过实体快照实现事件建模

[该贴被banq于2015-01-29 11:24修改过]

abel
2015-02-03 14:12

我想结合jdomframework框架理解一下,但是源码下载之后,构建项目出现错误,项目中有gradle,有ant,有maven,使用哪个构建?

我使用maven构建example/match项目无法启动,有没有相关的部署文档呢

abel
2015-02-06 13:21

非常感谢您的解答,我特别想将JF框架应用到新的项目中,但是缺少这个技术能力,看了好几天的DDD,CQRS,ES,感觉心理有这种概念也能理解。但是实际分析的时候,却又不得要领,不知道如何分析,能否详细指点一下JDON分析法,就是您那张经典的纵横坐标分析方法的图,如何分析?例如从横坐标场景出发,如何得出状态。

第二个问题是

我看了jdonmvc+cqrs+ds的例子,大概的需求是对用户进行增删改查吧,在ResourceManagerContext类中有添加(post方法)、删除(delete方法)、修改(update方法),增删改查方法类似,为什么单单update方法里使用commandHandler类发出命令,而其他几个方法都是直接使用ES来发布事件的?

[该贴被abel于2015-02-06 13:49修改过]


abel
2015-02-06 14:54

20150206物料管理

1、物料分为多种类型

上面的图是我想举的例子,文字打了半天突然就没了,只剩下图了,又要重新打一遍。

举个例子:生产一个纸质飞机模型,需要胶水和卡纸,胶水可以由不同供应商供应,每个供应商供应的胶水有不同规格,有瓶装的200ml,盒装的100ml,胶棒的1管

从上面简单需求得知,至少要

1、产品管理

2、供应商管理

3、物料管理

我们单取物料管理的CRUD来说,要对物料类型CURD和物料CURD

那么使用JDON分析法,就是您那张经典的横纵坐标分析法

如何从纵坐标得出边界,上下文,聚合根

如何从横坐标得出职责,状态

先谈谈我的认识:

纵坐标分析:

物料类型CRUD和物料CRUD算是一个上下文,还是两个上下文呢?这似乎没有什么严格的规则来划分上下文吧,直觉上应该是一个上下文。

在一个上下文中,有2个聚合根,不知道是不是这样的?即上面的那张图。不知道对不对

横坐标的场景就是增删改查场景,由场景得知聚合根的职责就是增删改查。

那么状态是什么?如何得出的呢?

得出这些之后,又如何将JDON框架应用起来呢?下面是我理解的JDON框架在DDD,CQRS,ES方面的用处是不是?


2Go 1 2 下一页