# pomodoro-domainmodel **Repository Path**: game-plus/pomodoro-domainmodel ## Basic Information - **Project Name**: pomodoro-domainmodel - **Description**: 番茄工作法的领域模型(领域模型的概念参见领域驱动设计) - **Primary Language**: XML - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-03-03 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 番茄工作法(Pomodoro)的领域模型 #### 介绍
番茄工作法是一种高效的时间管理方法,详细内容请阅读《番茄工作法图解》一书。这里提供的领域模型依赖的领域知识也主要来自这本书。领域模型是领域驱动设计的核心,由限界上下文、实体、值对象、聚合、领域事件、领域服务等元素构成,详细的领域模型概念请参见领域驱动设计相关书籍。 #### 领域模型 由于目前缺少基于领域驱动设计思想的领域模型构建工具,这里采用一种通用的元建模语言Ecore(参见Eclipse Modeling Project)构建。Ecore模型中的EPackge元素对应于限界上下文,EClass根据其基类分别对应于实体、领域事件和领域服务,EDataType对应于值对象。 利用Eclipse Modeling中的EMF(Eclipse Modeling Framework)描述番茄工作法的领域模型中的领域实体及其关系如下图所示。  ##### 领域实体 1. ActivityInventorySheet,活动清单。 2. TodoTodaySheet,今日待办。 3. Activity,活动,包括名称(name)、状态(completed)、期限(deadline)以及类型(type,分为正常活动、计划外活动以及计划外紧急活动) 4. CompoisteActivity,组合活动,由多个预估消耗不足1个番茄钟的活动构成。 5. Estimate,预估,预估完成一个活动需要的番茄钟个数。一个活动默认有一个预估,最多有三个预估。 6. PomodoroTimer,番茄钟。按照番茄钟周期(duration)、短休息时长(bread duration)和长休息时长(long break duration)在休闲、工作和战略三顶帽子间切换。 7. DailyTrace,每日追踪,记录每日的总番茄钟数、未使用番茄钟数、预估次数、内部和外部中断次数等。 ##### 领域事件 1. ActivityCreated,活动新建。用户在活动清单中完成创建活动后触发。 2. ActivityUpdated,活动更新。用户编辑更新活动后触发,事件记录活动更新的参数名称及其值,以便可以撤销更新操作。 3. ActivityDeleted,活动删除。用户删除活动后触发。 4. ActivityMovedToTodoTodaySheet,活动被加入今日待办。用户从活动清单中选择活动到今日待办清单后触发。 5. CompositeActivityCreated,组合活动被创建。用户在活动清单中完成创建组合活动后触发,时间记录创建组合活动时的各子活动信息,以便可以还原到初始状态。 6. ActivityMovedBackToActivityInventorySheet,从今日待办移除活动。用户从今日待办中移除活动到活动清单后触发。 7. CompositeActivityDeleted,当将组合活动从今日待办中移除时,其将被删除,触发该事件。 8. Interruption,中断事件,分为内部中断(Internal)和外部中断(External)。中断产生的新的活动,分为计划外以及计划外紧急两类,放入今日待办的为计划外紧急,放入活动清单的为计划化活动。 9. ... ##### 领域服务(业务逻辑) 1. CreateActivity,在活动清单新建活动。 2. UpdateActivity,更新活动信息。 3. DeleteActivity,在活动清单中刪除活动。 4. MoveActivityToTodoTodaySheet,选择活动加入今日待办。 5. CreateCompositeActivity,选择多个预估消耗不足1个番茄钟的活动创建组合活动并加入到今日待办。 6. MoveActivityBackToActivityInventorySheet,从今日待办中移除活动。 7. ...