跳到主要内容

任务表

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件围绕工作流中的“任务”进行系统性说明,重点覆盖以下方面:

  • 任务在流程中的核心作用与生命周期
  • 任务关键字段(任务ID、流程实例ID、任务名称、任务类型、任务状态等)
  • 任务分配机制(指派给用户/角色/部门/岗位/用户组/流程表达式/发起人自选)
  • 任务超时处理、自动提醒、自动同意/拒绝及催办机制
  • 任务转办、委托、退回、加签/减签等高级能力
  • 任务与用户操作日志的关系
  • 任务完成后(流程实例)的后续处理逻辑
  • 不同类型任务的配置示例与处理流程

项目结构

围绕任务表与任务相关能力,代码主要分布在 BPM 与 Task 模块:

  • BPM 模块负责流程引擎集成、任务查询与审批、超时处理、委托/转办、状态机等
  • Task 模块负责任务与业务对象(如角色、规则、设备、渠道)的关联与审批流推送

Mermaid Diagram Code:

graph TB
subgraph "BPM 模块"
A["任务服务实现<br/>BpmTaskServiceImpl"]
B["任务状态枚举<br/>BpmTaskStatusEnum"]
C["Flowable 工具<br/>FlowableUtils"]
D["监听器:任务超时<br/>BpmTaskEventListener"]
E["简单模型工具超时边界事件<br/>SimpleModelUtils"]
F["任务 DTO<br/>TaskDTO"]
end
subgraph "Task 模块"
G["任务与角色关联<br/>TaskRoleDO"]
H["任务规则<br/>TaskRuleDO"]
I["任务 BPM 变量<br/>TaskBpmVariable"]
J["任务 BPM 服务接口<br/>TaskBpmService"]
end
A --> B
A --> C
A --> D
A --> E
A --> F
J --> I
G --> J
H --> J

图表来源

章节来源

核心组件

  • 任务状态枚举:定义任务状态(待审批、审批中、审批通过、审批不通过、已取消、已退回、审批通过中、未开始)及其终止态判断
  • 任务服务实现:提供待办/已办任务查询、任务审批、委托/转办、加签/减签、超时处理、状态与原因解析等
  • Flowable 工具:封装任务状态与审批原因的读取、流程变量过滤、发起人自选审批人解析等
  • 监听器与模型工具:监听任务超时事件,构建用户任务超时边界事件,支持自动提醒/自动同意/自动拒绝
  • 任务 DTO:对外暴露任务基本信息(任务ID、名称、处理人、流程实例ID、流程定义Key、业务Key、状态)

章节来源

架构总览

任务在系统中的流转涉及 BPM 引擎、任务服务、流程模型与持久化层,以及与 Task 模块的联动。

Mermaid Diagram Code:

sequenceDiagram
participant U as "用户"
participant S as "任务服务实现<br/>BpmTaskServiceImpl"
participant E as "流程引擎<br/>TaskService/RuntimeService"
participant L as "监听器<br/>BpmTaskEventListener"
participant M as "模型工具<br/>SimpleModelUtils"
U->>S : 查询待办任务
S->>E : 查询当前用户待办任务
E-->>S : 返回任务列表
S-->>U : 返回任务详情含状态、按钮、表单
Note over M,L : 部署流程时为用户任务添加超时边界事件
L->>S : 任务超时事件触发
S->>S : 自动提醒/自动同意/自动拒绝
S->>E : 更新任务状态/发送消息

图表来源

详细组件分析

任务关键字段与状态

  • 任务ID:流程引擎中的任务唯一标识
  • 流程实例ID:所属流程实例的唯一标识
  • 任务名称:流程图中用户任务的名称
  • 任务类型:由流程模型定义(用户任务、网关、子流程等)
  • 任务状态:通过任务本地变量维护,枚举定义见任务状态枚举

Mermaid Diagram Code:

classDiagram
class BpmTaskStatusEnum {
+NOT_START
+WAIT
+RUNNING
+APPROVE
+REJECT
+CANCEL
+RETURN
+APPROVING
+isEndStatus(status) boolean
}
class TaskDTO {
+id
+name
+assignee
+processInstanceId
+processDefinitionKey
+businessKey
+status
}
TaskDTO --> BpmTaskStatusEnum : "使用"

图表来源

章节来源

任务分配机制

  • 分配策略类型(候选策略):角色、部门成员、部门负责人、用户、用户组、流程表达式、发起人自选
  • 任务分配规则来源于流程模型配置,运行时根据策略计算候选人
  • 发起人自选:流程变量中记录发起人选择的审批人映射

Mermaid Diagram Code:

flowchart TD
Start(["进入用户任务"]) --> CheckStrategy["读取候选策略"]
CheckStrategy --> Role["角色"]
CheckStrategy --> DeptMember["部门成员"]
CheckStrategy --> DeptLeader["部门负责人"]
CheckStrategy --> User["用户"]
CheckStrategy --> Group["用户组"]
CheckStrategy --> Expr["流程表达式"]
CheckStrategy --> StartUserSel["发起人自选"]
Role --> Assign["指派/候选"]
DeptMember --> Assign
DeptLeader --> Assign
User --> Assign
Group --> Assign
Expr --> Assign
StartUserSel --> Assign
Assign --> End(["任务可用"])

图表来源

章节来源

任务超时处理与催办

  • 超时边界事件:在流程模型中为用户任务配置超时边界事件
  • 超时处理器类型:自动提醒、自动同意、自动拒绝
  • 触发方式:监听器捕获超时作业事件,按类型执行相应动作
  • 催办:当启用多次提醒时,使用周期循环表达式重复提醒

Mermaid Diagram Code:

sequenceDiagram
participant Model as "流程模型"
participant Listener as "任务超时监听器"
participant TaskSvc as "任务服务"
participant Engine as "流程引擎"
Model->>Model : 配置用户任务超时边界事件
Engine-->>Listener : 触发超时事件
Listener->>TaskSvc : processTaskTimeout(...)
alt 自动提醒
TaskSvc->>Engine : 发送消息/记录日志
else 自动同意
TaskSvc->>Engine : 完成任务同意
else 自动拒绝
TaskSvc->>Engine : 完成任务拒绝
end

图表来源

章节来源

任务转办、委托与退回

  • 委托:将任务委托给他人处理,委托人与受托人角色切换
  • 转办:将任务从当前处理人转交给其他用户
  • 退回:将任务退回至上一步或发起人
  • 加签/减签:对当前任务进行前后方向的多人协作

Mermaid Diagram Code:

flowchart TD
A["任务审批中"] --> B["委托/转办"]
A --> C["退回"]
A --> D["加签/减签"]
B --> E["受托人处理"]
C --> F["上一步/发起人重新处理"]
D --> G["并行/串行多人处理"]

图表来源

章节来源

任务与用户操作日志

  • 任务审批原因:通过历史评论表获取最近非空评论作为审批原因
  • 任务状态变更:通过任务本地变量维护状态,供前端与流程引擎使用
  • 通知模板:任务分配、超时等事件可通过短信模板发送通知

章节来源

任务完成后(流程实例)的后续处理

  • 流程实例状态:通过流程变量维护实例状态与原因
  • 任务完成后可能触发后续任务、消息通知、业务回调等
  • Task 模块可基于任务ID推送审批流变量,驱动业务侧处理

章节来源

不同类型任务的配置示例与处理流程

  • 用户任务:配置候选策略(角色/部门/用户/用户组/表达式/发起人自选),可设置超时边界事件
  • 并/串行多实例:配置集合变量,支持并签/或签
  • 子流程/嵌套流程:任务完成后推进到子流程或返回父流程
  • 会签/或签:通过网关与多实例组合实现

章节来源

依赖分析

  • 任务服务依赖 Flowable 引擎提供的 TaskService、RuntimeService、ManagementService
  • 任务状态与原因解析依赖 FlowableUtils 提供的工具方法
  • 超时处理依赖监听器与模型工具构建的边界事件
  • 任务与业务对象(角色、规则)的关联由 Task 模块提供 DO 与服务

Mermaid Diagram Code:

graph LR
BpmTaskServiceImpl --> FlowableUtils
BpmTaskServiceImpl --> BpmTaskEventListener
BpmTaskServiceImpl --> SimpleModelUtils
TaskBpmService --> TaskBpmVariable
TaskRoleDO --> TaskBpmService
TaskRuleDO --> TaskBpmService

图表来源

章节来源

性能考量

  • 任务查询分页与条件过滤:避免一次性加载过多任务,结合名称、流程定义Key、创建时间等条件筛选
  • 任务状态与原因解析:通过本地变量与历史评论表读取,减少跨表扫描
  • 超时边界事件:合理设置超时时间与提醒次数,避免频繁触发与消息风暴
  • 多租户执行:通过租户上下文隔离不同租户的任务处理

故障排查指南

  • 任务状态异常:检查任务本地变量中的状态字段与历史评论表中的审批原因
  • 超时不生效:确认流程模型中是否正确配置了用户任务超时边界事件,监听器是否正常触发
  • 委托/转办失败:核对委托请求参数与流程引擎的委托状态
  • 任务分配错误:检查候选策略配置与流程表达式计算结果

章节来源

结论

任务是工作流的核心单元,贯穿流程的发起、审批、退回、委托、超时处理与完成后的后续处理。通过候选策略、超时边界事件、状态机与日志体系,系统实现了灵活、可观测、可扩展的任务管理能力。结合 Task 模块的任务与业务对象关联,可进一步实现业务驱动的审批流闭环。

附录

  • 数据库脚本参考
    • BPM 流程相关表结构与字典数据
    • Task 模块任务与角色、规则等关联表结构

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答