7.3.1 Web应用业务逻辑设计
从上面的分析可知教学资源管理子系统的用户角色包括教师、学生、管理者和管理员四类。下面按照领域驱动的方法,站在这四类用户的角度或者从四类用户专家角度来看各用户的领域组成情况。
(1)教师角色
图7-4描述了教师角色领域图。教师角色的核心事件是上课,围绕核心事件有班级、课程、资源和试题四个次领域。其中班级具有年级和学生两个扩展领域,课程具有排课表扩展领域,资源有问答、习题和作业三个扩展领域。由于这三个扩展领域都是基于资源中的课件(教材)而存在的,因此把这三个实体化为资源的三个扩展领域。

图7-4 教师角色的领域图
从核心事件出发逐一设计领域对象的业务对象BO(Business Object)、数据访问对象DAO和数据传输对象DTO,以面向服务的接口及服务管理。图7-5以资源领域对象为例说明各部分的关系。
基础架构层以对象关系映射(Object Relational Mapping,ORM)为中心,通过诸如Hibernate、iBATIS等架构和框架为其他层提供所需要的数据支持。实例中需要定义对象映射关系、加载策略、缓存策略、对象间关系等。

图7-5 资源管理的类图
业务逻辑层在DDD中被称作领域服务层,不仅负责协调领域对象共同完成某个操作,而且将所有的状态都保存在相应的领域对象中,更重要的是避免领域逻辑泄露到应用层。在本实例中IBaseDAO接口中定义了基本的增加、删除、修改、查询等接口。ResourceDAO实现IBaseDAO接口,完成从基础架构层获取BO对象。ResourceDTO则负责将BO转换为DTO对象,为应用层提供服务。
应用层:应用层定义软件要完成的所有任务。对外展现为提供各种应用功能(包括查询或命令),对内调用领域层(领域对象或领域服务)完成各种业务逻辑,应用层不包含业务逻辑实现。
(2)学生角色
学生通过学习资源进行学习,在学习的过程中存在疑问则会寻求帮助,也就是问答。为了巩固学习的效果则通过做作业来实现。为了检验学习的效果,需要通过测验来检测。学生角色的核心领域包括班级、课程、对应的资源与试题,而这些领域都围绕学生的关键事件开展,即“上课”。其中,核心领域中的四个部分还将向外延伸至年级、排课表、问答、习题、作业与试卷等(见图7-6)。(https://www.daowen.com)
学生角色的业务逻辑设计如图7-7所示,从该学生角色类图可以看出每一个核心事件所涉及的类分别处于应用层、业务逻辑层和基础架构层中的某一层。每层次的类对象只要负责好本领域内的工作即可。
(3)管理者角色
管理者的核心事件是“管理”,围绕管理产生对学生的管理、对教职工的管理和对调查反馈的管理,由管理派生出“考核”事件,其中课程的考核是针对教师的考核,成绩的考核是针对学生的考核。在学生管理的核心领域下又分为年级和班级两个扩展领域。(见图7-8)
管理者角色领域内的对象间关系设计如图7-9所示:

图7-6 学生角色的领域图

图7-7 学生角色类图

图7-8 管理者角色的领域图

图7-9 管理者类图