9.6 KiB
9.6 KiB
工作流平台前端开发指南
一、项目概述
1.1 技术栈
- 框架:Ant Design Pro
- 语言:TypeScript
- HTTP请求:Umi Request
- 流程设计器:LogicFlow
- 表单设计器:FormRender
- 图表库:ECharts
1.2 开发环境
- Node.js >= 16
- yarn >= 1.22
- TypeScript >= 4.x
二、接口定义
2.1 工作流定义管理
// 工作流定义相关接口
interface WorkflowDefinitionAPI {
// 基础CRUD接口
list: '/api/v1/workflow-definitions' // GET 查询列表
create: '/api/v1/workflow-definitions' // POST 创建
update: '/api/v1/workflow-definitions/{id}' // PUT 更新
delete: '/api/v1/workflow-definitions/{id}' // DELETE 删除
get: '/api/v1/workflow-definitions/{id}' // GET 获取详情
// 特殊操作接口
publish: '/api/v1/workflow-definitions/{id}/publish' // POST 发布
disable: '/api/v1/workflow-definitions/{id}/disable' // POST 禁用
enable: '/api/v1/workflow-definitions/{id}/enable' // POST 启用
}
// 工作流定义数据结构
interface WorkflowDefinitionDTO {
id: number
code: string // 工作流编码
name: string // 工作流名称
description: string // 描述
status: 'DRAFT' | 'PUBLISHED' | 'DISABLED' // 状态
version: number // 版本号
nodeConfig: string // 节点配置(JSON)
transitionConfig: string // 流转配置(JSON)
formDefinition: string // 表单定义
graphDefinition: string // 图形信息
enabled: boolean // 是否启用
remark: string // 备注
nodes: NodeDefinitionDTO[] // 节点定义列表
}
// 节点定义数据结构
interface NodeDefinitionDTO {
id: number
nodeId: string // 节点ID
name: string // 节点名称
type: 'START' | 'END' | 'TASK' | 'GATEWAY' | 'SUB_PROCESS' | 'SHELL' // 节点类型
config: string // 节点配置(JSON)
description: string // 节点描述
workflowDefinitionId: number // 工作流定义ID
orderNum: number // 排序号
}
2.2 工作流实例管理
// 工作流实例相关接口
interface WorkflowInstanceAPI {
// 基础CRUD接口
list: '/api/v1/workflow-instance' // GET 查询列表
get: '/api/v1/workflow-instance/{id}' // GET 获取详情
// 实例操作接口
create: '/api/v1/workflow-instance' // POST 创建实例
start: '/api/v1/workflow-instance/{id}/start' // POST 启动
cancel: '/api/v1/workflow-instance/{id}/cancel' // POST 取消
pause: '/api/v1/workflow-instance/{id}/pause' // POST 暂停
resume: '/api/v1/workflow-instance/{id}/resume' // POST 恢复
}
// 工作流实例数据结构
interface WorkflowInstanceDTO {
id: number
definitionId: number // 工作流定义ID
businessKey: string // 业务标识
status: 'RUNNING' | 'COMPLETED' | 'FAILED' | 'CANCELLED' | 'PAUSED' // 状态
startTime: string // 开始时间
endTime: string // 结束时间
variables: string // 工作流变量(JSON)
error: string // 错误信息
}
2.3 节点实例管理
// 节点实例相关接口
interface NodeInstanceAPI {
// 查询接口
list: '/api/v1/node-instance' // GET 查询列表
get: '/api/v1/node-instance/{id}' // GET 获取详情
findByWorkflow: '/api/v1/node-instance/workflow/{workflowInstanceId}' // GET 查询工作流下的节点
findByStatus: '/api/v1/node-instance/workflow/{workflowInstanceId}/status/{status}' // GET 查询指定状态的节点
// 节点操作
updateStatus: '/api/v1/node-instance/{id}/status' // PUT 更新状态
}
// 节点实例数据结构
interface NodeInstanceDTO {
id: number
workflowInstanceId: number // 工作流实例ID
nodeId: string // 节点ID
nodeType: 'START' | 'END' | 'TASK' | 'GATEWAY' | 'SUB_PROCESS' | 'SHELL' // 节点类型
name: string // 节点名称
status: 'PENDING' | 'RUNNING' | 'COMPLETED' | 'FAILED' | 'CANCELLED' | 'PAUSED' | 'SKIPPED' // 状态
startTime: string // 开始时间
endTime: string // 结束时间
config: string // 节点配置(JSON)
input: string // 输入参数(JSON)
output: string // 输出结果(JSON)
error: string // 错误信息
preNodeId: string // 前置节点ID
}
2.4 工作流日志管理
// 日志相关接口
interface WorkflowLogAPI {
// 基础CRUD接口
list: '/api/v1/workflow-logs' // GET 查询列表
create: '/api/v1/workflow-logs' // POST 创建
// 特殊查询接口
getWorkflowLogs: '/api/v1/workflow-logs/workflow/{workflowInstanceId}' // GET 查询工作流日志
getNodeLogs: '/api/v1/workflow-logs/node/{workflowInstanceId}/{nodeId}' // GET 查询节点日志
record: '/api/v1/workflow-logs/record' // POST 记录日志
}
// 日志数据结构
interface WorkflowLogDTO {
id: number
workflowInstanceId: number // 工作流实例ID
nodeId: string // 节点ID
message: string // 日志内容
level: 'INFO' | 'WARN' | 'ERROR' // 日志级别
detail: string // 详细信息
createTime: string // 创建时间
}
三、页面功能
3.1 工作流定义管理(/workflow/definition)
3.1.1 列表页(/workflow/definition/list)
- 功能点:
- 工作流定义列表展示
- 支持按名称、编码、状态搜索
- 支持创建、编辑、删除操作
- 支持发布、禁用操作
- 支持查看历史版本
- 列表字段:
- 工作流编码
- 工作流名称
- 版本号
- 状态
- 创建时间
- 更新时间
- 操作按钮
3.1.2 编辑页(/workflow/definition/edit)
- 功能点:
- 基本信息编辑
- 工作流编码
- 工作流名称
- 描述
- 备注
- 流程设计器
- 节点拖拽
- 连线绘制
- 节点配置
- 流程校验
- 表单设计器
- 表单字段配置
- 字段验证规则
- 表单预览
- 节点配置面板
- 节点基本信息
- 节点类型配置
- 执行条件配置
- 表单关联配置
- 基本信息编辑
3.2 工作流实例管理(/workflow/instance)
3.2.1 列表页(/workflow/instance/list)
- 功能点:
- 工作流实例列表展示
- 支持按工作流名称、状态、时间搜索
- 支持启动、暂停、恢复、取消操作
- 列表字段:
- 实例ID
- 工作流名称
- 业务标识
- 状态
- 开始时间
- 结束时间
- 操作按钮
3.2.2 详情页(/workflow/instance/detail)
- 功能点:
- 基本信息展示
- 实例ID
- 工作流名称
- 状态
- 时间信息
- 流程图展示
- 显示当前节点
- 节点状态标识
- 流程进度展示
- 变量信息
- 变量列表
- 变量历史值
- 日志信息
- 操作日志
- 执行日志
- 错误日志
- 基本信息展示
3.3 监控大盘(/workflow/monitor)
- 功能点:
- 统计信息
- 总工作流数
- 运行中实例数
- 完成实例数
- 失败实例数
- 状态分布
- 饼图展示各状态占比
- 支持时间范围筛选
- 执行时长统计
- 平均执行时长
- 最长执行时长
- 执行时长分布
- 异常情况统计
- 异常类型分布
- 异常趋势图
- 异常节点TOP5
- 统计信息
四、开发规范
4.1 项目结构
src/
├── components/ # 公共组件
│ ├── FlowDesigner/ # 流程设计器组件
│ ├── FormDesigner/ # 表单设计器组件
│ └── NodeConfig/ # 节点配置组件
├── pages/ # 页面组件
│ └── workflow/ # 工作流相关页面
├── services/ # API服务
│ └── workflow/ # 工作流相关API
├── models/ # 数据模型
├── utils/ # 工具函数
├── constants/ # 常量定义
├── types/ # TypeScript类型
└── locales/ # 国际化资源
4.2 命名规范
- 文件命名:使用 PascalCase
- 组件文件:
FlowDesigner.tsx - 类型文件:
WorkflowTypes.ts - 工具文件:
FlowUtils.ts
- 组件文件:
- 变量命名:使用 camelCase
- 普通变量:
flowInstance - 布尔值:
isRunning、hasError
- 普通变量:
- 常量命名:使用 UPPER_CASE
MAX_NODE_COUNTDEFAULT_CONFIG
4.3 组件开发规范
- 使用函数组件和 Hooks
- 使用 TypeScript 类型声明
- 添加必要的注释
- 实现错误处理
- 添加加载状态
- 做好性能优化
4.4 代码提交规范
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- style: 代码格式
- refactor: 重构
- test: 测试
- chore: 构建过程或辅助工具的变动
五、开发流程
5.1 环境搭建
- 创建项目
yarn create umi
- 安装依赖
yarn add @ant-design/pro-components @logicflow/core @logicflow/extension form-render echarts
5.2 开发步骤
- 搭建基础框架和路由(2天)
- 实现工作流定义CRUD(3天)
- 开发流程设计器(5天)
- 开发表单设计器(3天)
- 实现工作流实例管理(3天)
- 实现节点实例管理(2天)
- 实现日志管理(2天)
- 开发监控大盘(3天)
- 测试和优化(2天)
5.3 测试要求
- 单元测试覆盖率 > 80%
- 必须包含组件测试
- 必须包含集成测试
- 必须进行性能测试
5.4 部署要求
- 使用 Docker 部署
- 配置 Nginx 代理
- 启用 GZIP 压缩
- 配置缓存策略
六、注意事项
6.1 性能优化
- 使用路由懒加载
- 组件按需加载
- 大数据列表虚拟化
- 合理使用缓存
- 避免不必要的渲染
6.2 安全性
- 添加权限控制
- 防止XSS攻击
- 添加数据验证
- 敏感信息加密
6.3 用户体验
- 添加适当的加载状态
- 提供操作反馈
- 添加错误处理
- 支持快捷键操作
- 添加操作确认
- 支持数据导出
6.4 兼容性
- 支持主流浏览器最新版本
- 支持响应式布局
- 支持暗黑模式
- 支持国际化