1. 概述
本需求文档主要描述了一个工作流管理系统的设计和业务流程。该系统需要支持工作流的定义、实例化、任务分配及节点处理,能够灵活地处理流程中的各种操作,如同意、拒绝、超时等。系统的核心在于工作流的动态管理和任务节点的执行与处理。
2. 主要功能
-
工作流定义
- 流程名称:工作流的名称,如“采购审批流程”。
- 流程标识:一个唯一标识流程的代码。
- 流程类型:流程的类型,例如“审批流程”。
- 拒绝类:流程中拒绝操作对应的处理类。
- 初始化类:流程初始化时需要调用的类。
- 停止流程bean:流程中可用于停止流程的处理类。
- 流程介绍:对该流程的简要说明。
-
工作流实例管理
- 流程实例编号:每个流程实例的唯一标识符。
- 业务数据类型:定义业务数据的类型(如整型、字符串)。
- 业务ID:关联业务表的ID。
- 业务单号:与业务单据相关的编号。
- 当前审核步骤:流程执行的当前步骤,从1开始。
- 状态:流程的状态(例如:1-启动中,2-执行中,3-已结束)。
- 结束时间:流程的结束时间。
- 创建人:流程实例的创建人ID和名称。
-
工作流节点管理
- 节点名称:该节点的名称。
- 步骤:节点在流程中的顺序,1开始。
- 审核人类型:审批人的类型(如用户、角色等)。
- 审核人:指定审核人员的ID。
- 审核角色:指定审核人员的角色。
- 拒绝类:在该节点中拒绝操作时调用的处理类。
- 同意类:在该节点中同意操作时调用的处理类。
- 超时时间:节点的超时时间,单位秒。
-
工作流实例任务
- 任务ID:工作流实例任务的唯一标识符。
- 审核状态:任务的审核状态(待审核、已通过、已拒绝)。
- 创建人ID和名称:任务创建人的ID和名称。
-
留言功能
- 允许在工作流执行过程中,任务的相关人员(如审核人)添加留言信息,以便在处理过程中记录反馈和备注。
-
工作流处理接口:
WorkflowHandle
- 提供一个处理工作流任务的统一接口,允许在工作流执行过程中,根据不同的节点和任务类型执行不同的业务逻辑。
handle(WorkflowInstanceTask task)
:通过该方法,具体的实现类可以完成任务的同意、拒绝、超时等操作。具体业务逻辑由实现类定义。
3. 数据模型设计
3.1 工作流表(Workflow)
字段名 | 类型 | 描述 |
---|---|---|
id | Long | 主键,唯一标识 |
name | String | 流程名称 |
code | String | 流程标识 |
type | String | 流程类型 |
rejectBean | String | 拒绝类 |
initBean | String | 初始化类 |
stopBean | String | 停止流程bean |
note | String | 流程介绍 |
createdAt | Date | 创建时间 |
updatedAt | Date | 更新时间 |
3.2 工作流实例表(WorkflowInstance)
字段名 | 类型 | 描述 |
---|---|---|
id | Long | 主键,唯一标识 |
name | String | 流程名称 |
billNo | String | 流程实例编号 |
businessType | Integer | 业务数据类型(1-整型,2-字符串) |
businessId | Long | 业务ID |
businessNo | Long | 业务单号 |
workflowId | Long | 工作流ID |
step | Integer | 当前审核步骤 |
status | Integer | 流程状态(1-启动中,2-执行中,3-结束) |
endDate | Date | 结束时间 |
creatorId | Long | 创建人ID |
creatorName | String | 创建人名称 |
3.3 工作流节点表(WorkflowNode)
字段名 | 类型 | 描述 |
---|---|---|
id | Long | 主键,唯一标识 |
workflowId | Long | 工作流ID |
name | String | 节点名称 |
step | Integer | 节点步骤(从1开始) |
auditType | Integer | 审核人类型(用户或角色) |
user | String | 审核人 |
role | String | 审核角色 |
rejectBean | String | 拒绝处理类 |
agreeBean | String | 同意处理类 |
timeout | Integer | 超时时间(秒) |
3.4 工作流实例任务表(WorkflowInstanceTask)
字段名 | 类型 | 描述 |
---|---|---|
id | Long | 主键,唯一标识 |
workflowInstanceId | Long | 工作流实例ID |
workflowNodeId | Long | 工作流节点ID |
status | Integer | 审核状态(1-待审核,2-审核通过,3-审核拒绝) |
creatorId | Long | 创建人ID |
creatorName | String | 创建人名称 |
createdAt | Date | 创建时间 |
4. 业务流程描述
-
工作流创建与配置
- 管理员在系统中定义工作流,配置流程的各个节点,并为每个节点配置具体的操作类(如同意类、拒绝类)。
- 工作流的初始化类会在流程启动时执行,用于初始化流程所需的环境或数据。
-
工作流实例化
- 用户提交业务数据后,系统会自动生成工作流实例,并根据业务类型、业务ID和业务单号等信息初始化工作流实例。
- 每个工作流实例会根据其节点配置,依次进入不同的审核步骤。
-
工作流节点处理
- 在每个节点,审核人可以选择“同意”或“拒绝”操作。如果选择“同意”,任务会进入下一步,否则任务会被拒绝,流程结束。
- 每个节点的操作由对应的
agreeBean
或rejectBean
类来处理,执行相关的业务逻辑。
-
留言功能
- 审核人在处理任务时,可以添加留言,用于记录意见、备注等信息。系统会将留言信息与任务关联,便于后续查看。
-
任务的状态管理
- 每个工作流任务有不同的状态:待审核、已通过、已拒绝。状态变更时,系统会根据实际情况自动更新,且在界面上展示给用户。
-
工作流执行完毕
- 当工作流结束后,系统会标记工作流实例为“已结束”,并记录结束时间。
5. 业务扩展
- 动态节点控制:根据实际需求,工作流中的某些节点可以根据条件动态决定是否执行,例如如果某个条件不满足,可以跳过某个节点或终止流程。
- 业务通知机制:每当流程状态发生变化时,系统应支持通过邮件、短信等方式通知相关人员。
- 权限控制:不同的用户和角色具有不同的权限,管理者可以为每个节点配置不同的审核人或角色。
6. 系统设计架构
- 前端:使用Vue.js进行UI展示,确保系统的交互性和可用性。
- 后端:使用Spring Boot构建RESTful API接口,支持工作流的管理、任务处理、节点控制等功能。
- 数据库:使用MySQL或PostgreSQL存储工作流的相关数据。