尝试一个简单的任务管理系统

举报
jboss 发表于 2026/06/11 17:04:00 2026/06/11
【摘要】 1. 组件定位 1.1 核心职责本组件负责管理任务的全生命周期,实现任务的高效创建、跟踪、更新与状态流转。 1.2 核心输入用户发起的任务创建请求,包含任务名称、描述、优先级、责任人、计划时间等信息用户发起的任务更新请求,包含任务状态变更、实际完成时间填写等操作用户发起的任务查询请求,包含按条件筛选、排序、分页等参数用户发起的任务删除/取消请求 1.3 核心输出返回给用户的任务创建/更新/...

1. 组件定位

1.1 核心职责

本组件负责管理任务的全生命周期,实现任务的高效创建、跟踪、更新与状态流转。

1.2 核心输入

  1. 用户发起的任务创建请求,包含任务名称、描述、优先级、责任人、计划时间等信息
  2. 用户发起的任务更新请求,包含任务状态变更、实际完成时间填写等操作
  3. 用户发起的任务查询请求,包含按条件筛选、排序、分页等参数
  4. 用户发起的任务删除/取消请求

1.3 核心输出

  1. 返回给用户的任务创建/更新/删除操作结果(成功/失败及原因)
  2. 返回给用户的任务列表及任务详情数据
  3. 推送给用户的状态变更通知(任务状态发生变化时)
  4. 返回给用户的校验错误提示信息

1.4 职责边界

  1. 本组件不负责用户认证与权限管理,仅接收已认证用户的操作请求
  2. 本组件不负责人员组织架构管理,仅引用已有的责任人信息
  3. 本组件不负责项目级别的资源调度与排程优化
  4. 本组件不负责与其他业务系统(如工单系统、邮件系统)的深度集成

2. 领域术语

任务
: 用户需要完成的一项工作单元,包含名称、描述、优先级、责任人、时间计划和状态等属性。

优先级
: 任务紧急程度的分级标识,取值为高、中、低三级,用于决定任务的处理顺序。

责任人
: 对任务完成结果负责的人员或团队,是任务的唯一执行主体。

任务状态
: 任务在其生命周期中所处的阶段,取值为未开始、进行中、已完成、已取消。

计划开始时间
: 任务预期开始执行的日期和时间,由创建者在创建任务时设定。

计划完成时间
: 任务预期完成的日期和时间,由创建者在创建任务时设定。

实际完成时间
: 任务实际完成时的日期和时间,仅在任务状态变更为已完成时记录。

3. 角色与边界

3.1 核心角色

  • 任务创建者:创建任务并设定任务初始属性(名称、描述、优先级、责任人、计划时间等)的用户
  • 任务执行者:被指定为任务责任人,负责执行任务并更新任务状态的用户
  • 任务管理者:查看任务列表、跟踪任务进度、对任务进行管理操作的用户

3.2 外部系统

  • 用户管理系统:提供用户身份信息和组织架构数据,用于责任人选择与校验
  • 通知服务:接收任务状态变更事件,向相关用户推送通知

3.3 交互上下文

@startuml
left to right direction

actor "任务创建者" as Creator
actor "任务执行者" as Executor
actor "任务管理者" as Manager

rectangle "任务管理系统" as TaskSystem {
}

rectangle "用户管理系统" as UserSystem
rectangle "通知服务" as NotifyService

Creator --> TaskSystem : 创建/编辑任务
Executor --> TaskSystem : 更新状态/填写完成时间
Manager --> TaskSystem : 查询/跟踪/管理任务

TaskSystem --> UserSystem : 查询用户信息
TaskSystem --> NotifyService : 推送状态变更通知

@enduml

4. DFX约束

4.1 性能

  1. 任务创建接口响应时间不超过 500ms
  2. 任务列表查询接口响应时间不超过 1000ms(单次返回不超过100条记录)
  3. 系统支持至少 500 并发用户的任务操作请求

4.2 可靠性

  1. 系统可用性不低于 99.9%
  2. 任务数据操作支持事务一致性,确保状态流转不会出现中间态
  3. 任务数据变更支持审计追踪,可追溯每次变更的操作人、时间和内容

4.3 安全性

  1. 所有任务操作接口必须经过身份认证
  2. 敏感操作(删除任务、取消任务)必须进行操作权限校验
  3. 关键操作(创建、状态变更、删除)必须记录审计日志

4.4 可维护性

  1. 任务状态变更事件必须接入监控指标,可统计各状态任务数量
  2. 操作日志必须记录操作人、操作时间、操作类型和变更内容
  3. 接口变更遵循向后兼容策略,旧版本接口至少保留3个月过渡期

4.5 兼容性

  1. 任务数据格式变更时,必须提供存量数据迁移方案
  2. API接口版本化管理,主版本升级时提供兼容说明

5. 核心能力

5.1 任务创建

5.1.1 业务规则

  1. 任务名称必填规则:创建任务时,任务名称必须提供且不能为空字符串

    a. 验收条件:[用户提交任务创建请求且任务名称为空] → [系统拒绝创建并返回"任务名称不能为空"提示]

  2. 任务名称长度限制:任务名称长度不得超过200个字符

    a. 验收条件:[用户输入任务名称超过200个字符] → [系统拒绝创建并返回"任务名称长度超出限制"提示]

  3. 优先级取值规则:优先级必须为高、中、低三者之一,默认值为中

    a. 验收条件:[用户创建任务时未指定优先级] → [系统自动将优先级设为中]

    b. 验收条件:[用户指定优先级为非高/中/低的值] → [系统拒绝创建并返回"优先级取值无效"提示]

  4. 责任人必填规则:创建任务时,责任人必须指定

    a. 验收条件:[用户提交任务创建请求且责任人为空] → [系统拒绝创建并返回"责任人不能为空"提示]

  5. 计划时间规则:计划开始时间和计划完成时间均为可选项;若同时提供,计划完成时间不得早于计划开始时间

    a. 验收条件:[用户指定计划完成时间早于计划开始时间] → [系统拒绝创建并返回"计划完成时间不得早于计划开始时间"提示]

  6. 初始状态规则:新建任务的初始状态必须为"未开始"

    a. 验收条件:[用户成功创建任务] → [系统将任务状态设为未开始]

  7. 实际完成时间初始规则:新建任务的实际完成时间必须为空

    a. 验收条件:[用户成功创建任务] → [任务的实际完成时间为空]

5.1.2 交互流程

@startuml
actor "任务创建者" as User
participant "任务管理系统" as System
participant "用户管理系统" as UserMgmt

User -> System : 提交任务创建请求(名称、描述、优先级、责任人、计划时间)
System -> UserMgmt : 校验责任人是否存在
UserMgmt --> System : 返回责任人校验结果
System -> System : 校验任务数据合法性
System -> System : 创建任务记录(状态=未开始)
System --> User : 返回创建成功结果(含任务ID)
@enduml

5.1.3 异常场景

  1. 任务名称为空

    a. 触发条件:用户提交的任务创建请求中任务名称为空或仅包含空白字符

    b. 系统行为:拒绝创建请求,不生成任务记录

    c. 用户感知:提示"任务名称不能为空"

  2. 责任人不存在

    a. 触发条件:用户指定的责任人在用户管理系统中不存在

    b. 系统行为:拒绝创建请求,不生成任务记录

    c. 用户感知:提示"指定的责任人不存在"

  3. 计划时间逻辑冲突

    a. 触发条件:计划完成时间早于计划开始时间

    b. 系统行为:拒绝创建请求,不生成任务记录

    c. 用户感知:提示"计划完成时间不得早于计划开始时间"

5.2 任务状态流转

5.2.1 业务规则

  1. 状态流转规则:任务状态必须按照以下合法路径流转

    • 未开始 → 进行中
    • 进行中 → 已完成
    • 进行中 → 已取消
    • 未开始 → 已取消

    a. 验收条件:[用户将任务状态从"未开始"变更为"进行中"] → [系统允许变更并更新任务状态]

    b. 验收条件:[用户将任务状态从"未开始"变更为"已完成"] → [系统拒绝变更并返回"非法状态流转"提示]

  2. 完成时间自动填充规则:当任务状态变更为"已完成"时,系统必须自动记录实际完成时间为当前时间

    a. 验收条件:[用户将任务状态从"进行中"变更为"已完成"] → [系统自动将实际完成时间设为当前时间]

  3. 已完成任务不可变更规则:状态为"已完成"的任务,禁止变更任何属性

    a. 验收条件:[用户尝试修改已完成的任务属性] → [系统拒绝修改并返回"已完成的任务不可修改"提示]

  4. 已取消任务不可变更规则:状态为"已取消"的任务,禁止变更任何属性

    a. 验收条件:[用户尝试修改已取消的任务属性] → [系统拒绝修改并返回"已取消的任务不可修改"提示]

  5. 取消任务不可恢复规则:任务一旦取消,不可恢复到其他状态

    a. 验收条件:[用户尝试将已取消任务变更为其他状态] → [系统拒绝变更并返回"已取消的任务不可恢复"提示]

5.2.2 交互流程

@startuml
actor "任务执行者" as User
participant "任务管理系统" as System
participant "通知服务" as Notify

User -> System : 提交状态变更请求(任务ID,目标状态)
System -> System : 校验当前状态与目标状态的流转合法性
System -> System : 更新任务状态
alt 目标状态=已完成
    System -> System : 自动填充实际完成时间为当前时间
end
System -> Notify : 发布状态变更事件
System --> User : 返回状态变更成功结果
@enduml

5.2.3 异常场景

  1. 非法状态流转

    a. 触发条件:用户请求的状态变更不在合法流转路径中

    b. 系统行为:拒绝状态变更请求,保持原状态不变

    c. 用户感知:提示"非法状态流转,不允许从[当前状态]变更为[目标状态]"

  2. 已完成任务修改

    a. 触发条件:用户尝试修改状态为"已完成"的任务

    b. 系统行为:拒绝修改请求,保持任务数据不变

    c. 用户感知:提示"已完成的任务不可修改"

5.3 任务信息更新

5.3.1 业务规则

  1. 可更新字段规则:对于未开始或进行中的任务,允许更新以下字段:任务名称、任务描述、优先级、责任人、计划开始时间、计划完成时间

    a. 验收条件:[用户修改进行中任务的优先级] → [系统允许修改并保存新值]

  2. 实际完成时间禁止手动修改规则:实际完成时间由系统在任务完成时自动填充,禁止用户手动修改

    a. 验收条件:[用户尝试手动修改实际完成时间] → [系统拒绝修改并返回"实际完成时间由系统自动管理"提示]

  3. 更新时计划时间校验规则:更新计划时间时,仍需满足计划完成时间不早于计划开始时间的约束

    a. 验收条件:[用户将计划完成时间修改为早于计划开始时间] → [系统拒绝修改并返回"计划完成时间不得早于计划开始时间"提示]

  4. 更新时名称校验规则:更新任务名称时,仍需满足名称非空且长度不超过200字符的约束

    a. 验收条件:[用户将任务名称修改为空] → [系统拒绝修改并返回"任务名称不能为空"提示]

5.3.2 交互流程

@startuml
actor "任务创建者/执行者" as User
participant "任务管理系统" as System

User -> System : 提交任务更新请求(任务ID,更新字段及值)
System -> System : 校验任务当前状态是否允许修改
System -> System : 校验更新数据的合法性
System -> System : 更新任务字段
System --> User : 返回更新成功结果
@enduml

5.3.3 异常场景

  1. 任务状态不允许修改

    a. 触发条件:用户尝试修改已完成或已取消的任务

    b. 系统行为:拒绝更新请求,保持任务数据不变

    c. 用户感知:提示"当前任务状态不允许修改"

  2. 更新数据校验失败

    a. 触发条件:用户提交的更新数据不满足校验规则(如名称为空、时间逻辑冲突等)

    b. 系统行为:拒绝更新请求,保持任务数据不变

    c. 用户感知:返回具体的校验错误提示信息

5.4 任务查询与列表

5.4.1 业务规则

  1. 默认排序规则:任务列表默认按优先级降序(高→中→低),同优先级按计划开始时间升序排列

    a. 验收条件:[用户查询任务列表且未指定排序方式] → [系统按优先级降序、计划开始时间升序返回结果]

  2. 状态筛选规则:支持按任务状态筛选,可单选或多选状态值

    a. 验收条件:[用户选择筛选条件为"进行中"] → [系统仅返回状态为进行中的任务]

  3. 责任人筛选规则:支持按责任人筛选任务

    a. 验收条件:[用户选择筛选条件为责任人"张三"] → [系统仅返回责任人为张三的任务]

  4. 优先级筛选规则:支持按优先级筛选任务

    a. 验收条件:[用户选择筛选条件为优先级"高"] → [系统仅返回优先级为高的任务]

  5. 分页规则:任务列表必须支持分页查询,每页默认20条,最大100条

    a. 验收条件:[用户查询任务列表且未指定每页条数] → [系统默认每页返回20条记录]

    b. 验收条件:[用户指定每页条数超过100] → [系统最多返回100条记录]

  6. 任务详情查询规则:支持通过任务ID查询单个任务的完整信息

    a. 验收条件:[用户通过有效任务ID查询任务详情] → [系统返回该任务的全部属性信息]

    b. 验收条件:[用户通过不存在的任务ID查询任务详情] → [系统返回"任务不存在"提示]

5.4.2 交互流程

@startuml
actor "任务管理者" as User
participant "任务管理系统" as System

User -> System : 提交任务查询请求(筛选条件、排序方式、分页参数)
System -> System : 构建查询条件
System -> System : 执行查询并排序
System -> System : 分页处理
System --> User : 返回任务列表(含总数、当前页数据)
@enduml

5.4.3 异常场景

  1. 任务不存在

    a. 触发条件:用户查询的任务ID在系统中不存在

    b. 系统行为:返回查询失败结果

    c. 用户感知:提示"任务不存在"

  2. 查询参数格式错误

    a. 触发条件:用户提供的筛选条件或分页参数格式不合法

    b. 系统行为:拒绝查询请求

    c. 用户感知:提示"查询参数格式错误"

5.5 任务删除

5.5.1 业务规则

  1. 可删除状态规则:仅允许删除状态为"未开始"或"已取消"的任务

    a. 验收条件:[用户删除状态为"未开始"的任务] → [系统允许删除并移除任务记录]

    b. 验收条件:[用户删除状态为"进行中"的任务] → [系统拒绝删除并返回"进行中的任务不可删除"提示]

  2. 删除确认规则:删除操作必须经过用户二次确认

    a. 验收条件:[用户发起删除请求] → [系统要求用户确认删除操作]

  3. 删除不可恢复规则:任务一旦删除,不可恢复

    a. 验收条件:[用户确认删除任务] → [系统永久移除任务记录,不可恢复]

5.5.2 交互流程

@startuml
actor "任务创建者/管理者" as User
participant "任务管理系统" as System

User -> System : 提交任务删除请求(任务ID)
System -> System : 校验任务状态是否允许删除
System --> User : 返回删除确认提示
User -> System : 确认删除
System -> System : 删除任务记录
System --> User : 返回删除成功结果
@enduml

5.5.3 异常场景

  1. 任务状态不允许删除

    a. 触发条件:用户尝试删除状态为"进行中"或"已完成"的任务

    b. 系统行为:拒绝删除请求,保持任务数据不变

    c. 用户感知:提示"当前任务状态不允许删除"

  2. 任务不存在

    a. 触发条件:用户尝试删除的任务ID在系统中不存在

    b. 系统行为:返回删除失败结果

    c. 用户感知:提示"任务不存在"

6. 数据约束

6.1 任务

  1. 任务ID:系统自动生成的唯一标识,全局不可重复
  2. 任务名称:必填,长度1~200个字符,不允许仅包含空白字符
  3. 任务描述:选填,最大长度2000个字符,支持富文本格式
  4. 优先级:必填,取值范围为{高, 中, 低},默认值为"中"
  5. 责任人:必填,必须为用户管理系统中存在的有效用户或团队标识
  6. 计划开始时间:选填,格式为ISO 8601日期时间格式(如2026-06-11T09:00:00+08:00)
  7. 计划完成时间:选填,格式为ISO 8601日期时间格式;若计划开始时间已填写,则计划完成时间不得早于计划开始时间
  8. 实际完成时间:由系统自动管理,仅在任务状态变更为"已完成"时自动填充为当前时间,禁止用户手动修改
  9. 任务状态:取值范围为{未开始, 进行中, 已完成, 已取消},初始值为"未开始",必须遵循合法状态流转路径
  10. 创建时间:系统自动记录的任务创建时间,不可修改
  11. 更新时间:系统自动记录的任务最后更新时间,每次任务属性变更时自动更新
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。