1.引言

在开始之前,我想我们有必要先了解以下DDD的主要参与者。因为毕竟语言是人说的吗,就像我们面向对象编程一样,那通用语言面向的是?
DDD的主要参与者:领域专家+开发人员
领域专家:精通业务的任何人。
开发人员:开发+测试。
领域专家擅长某个领域的知识,专注于交付的业务价值。
开发人员则注重于技术实现。
开发人员总是想着类、接口、方法、设计模式、架构等。以面向对象的编程思想进行思考,思考如何进行抽象、封装、继承、多态等。而领域专家对软件中的框架、持久化、数据库等没有概念,而这也就导致了他们之间交流的困难性。

那怎么解决交流障碍这个问题呢?

2. 通用语言

抛开DDD而言,单从字面意思来理解,我们首先肯定先联想到作为世界使用最多的语言--英语。
英语之所以能成为通用语言,我想无非是以下几方面:

  • 简单易学

  • 使用率高

  • 国际通用

那DDD中通用语言又是怎样呢?
首先它也同样要拥有【简单】的特性,这样才便于理解和传播。
其次,它也要有【通用】、【使用率高】的特性,因为只有在软件开发的过程中,团队范围内所有的参与人员广泛使用,才能准确传递业务规则。

通用语言是团队交流的基础上建立起来的,代码则是基于通用语言来进行业务表达的。

3. 举个例子

项目经理安排了一项任务给我:
圣杰这个补丁处理下【可销控制】这个需求。
听后,真是一脸懵逼,【可销控制】是什么鬼?

这明显是专业术语,我不懂的专业术语。
按照DDD对通用语言的定义,【可销控制】就不算通用语言。
因为只有领域专家知道它的含义,开发人员一脸茫然。

但通用语言是领域专家和开发人员一起创建的,所以我们开个需求会议,来梳理下专业术语背后的含义。

可销控制的应用场景是:
在ERP中,在做单时对销售员负责的客户进行范围控制。比如,A客户是销售员小李发展过来的,小李希望仅能自己负责对A客户的业务。

这么一解释,是不是明白不少了。但是不是还有几点疑惑?

  • 可销范围如何配置?

  • 做什么单据时进行可销范围控制?

  • 如何进行可销控制?

  • 可销控制需不需要参数控制?

经过讨论,得出以下结论:

  • 提供专门的【销售员-客户可销控制】界面进行销售员-客户映射数据配置。

  • 做销售订单单据时进行可销范围控制

  • 在录入销售员后,做单员在选择客户列表时,客户列表中仅显示可销范围配置的客户数据。

  • 提供【销售员-客户可销范围控制】系统参数,勾选后才进行可销范围控制。

网友评论