领域驱动设计的主要期望在于,尽早地从业务侧隔离开稳定和易变的部分。而如何赚钱,拿钱办什么事,在整个软件生命周期中的概率很小。如果业务会从财务和流程效率的角度去考虑问题,那么我们也要从这个角度出发去建模。
- 如何发现事件
四色建模法是一种强分析法,它不依赖于发散式的头脑风暴,而是从业务的内在逻辑出发,通过明确的逻辑推导直接获取事件流。其核心逻辑源自企业的收入流和成本结构,主要包含三个关键逻辑:
- 现金收入代表义务:如果有现金收入,表示承担了义务。拿钱办事,需要收集证据,说明义务履约成功。
- 现金支出代表权利:如果有现金支出,表明拥有权利。花钱消灾,需要检查对方是否按时履约。
- 目标与实际对比:在与财务关联不紧密的领域,通过比较目标(如 KPI)与实际结果发现和串联事件。
- 四种对象原型
- 粉色:时标对象(moment-interval)、即领域事件,不会被直接建模,而是通过凭证或者原始单据等表示。
- 黄色:角色对象(role):事件参与方在事件中扮演的角色
- 绿色:参与方(party-place-thing):可以是扮演角色的参与方,也可以是具体的人,某件东西;还可以是与凭证相关的标的物。
- 蓝色:描述(description): 对于上述三个对象的描述信息
- 具体流程
- 寻找现金往来,构造一个凭证表示。在凭证上罗列发生的时间点、金额等关键数据项。
- 针对每一项关键数据项目,寻找来源。来源只能由三种:用户输入、由前序凭证提供、算法计算。
- 回到现金凭证,思考它所对应的权利与责任。这些权利与责任需要哪些凭证证明,并以此为依据,寻找后续凭证。
- 无论是何种凭证,必须罗列关键数据项,并保证数据项获取的顺畅。
- 如果和现金往来关联不大,那么寻找关键 KPI 指标,并构造一个验收凭证表示它。其余步骤和现金往来一致。
- 获取了相互关联的凭证流(事件流)以后,进入模型细化阶段,围绕每个凭证,寻找参与其中的角色。
- 思考哪些参与方可能扮演这些角色,并将他们加入模型中
- 通过描述对象,为模型添加补充说明。