并非所有系统都是基于事件或事实的。在某些问题域里,使用事件非常贴切,它们表示在各个时间点所发生的事实。“但是,也有很多系统却关注流程中的信息流动”, Greg Young 近日在伦敦举办的 DDD Exchange Day 大会的一场演讲中如是说,他的演讲主题是“基于文档的消息机制及分析”。
一个示例是银行的抵押贷款。某人提交一条抵押贷款申请,接下来该申请在各部门间流动;不同岗位的人轮流对这一申请做些处理,最后该申请获得担保。这是不同于事件的另一种消息风格,Greg 演讲的关注点是文档在流程中的流动。
根据 Greg 的经验,通常在域模型中创建结构是非常愉快的工作,但是描述行为却绝非易事。
让人们描述行为通常是最困难的。
事件方式要求业务人员去思考“行为”,分析系统中发生的各种事件,这样做起来就会很漫长。而文档则带来了不同的视角,它们将关注点转到流程的流动,而这是大多数组织有的,或以前有的。实在不行还可以通过纸质流程做为备选。你若从这些纸质流程着手,就会发现业务人员能够更好地参与到这件事情当中。
业务人员可以轻松地理解纸张在流程中的流动。
Greg 发现了一个很好用的方法,将业务人员请进会议室,让他们忘掉电脑,询问他们如何创建一个表格或文档以及之后如何在流程中进行处理。通过这种方式描述流程有助于理解计算机如何完成这项工作。这么做还能得到一个副产品,那就是在该建模过程的同时还可以得到一份灾备方案。
这种做法之所以好用,是因为在电脑出现之前的很长的时间里,业务人员一直在操作基于纸质文档的流程。
“我们现在有两套概念模型,一套基于事件,一套基于文档”,Greg 强调,“二者并非完全互斥。事件可以包含文档,文档也可以包含事件。基于文档的流程里可以触发一个事件,而该事件又包含了当前的文档”。
Greg Young 是一个独立咨询顾问,它因创造了 CQRS 而闻名,同时他还是 Event Store 的首席架构师。
查看英文原文: Greg Young on Documents and Processes as an Alternative to Events
评论