Skip to content

Commit 03c303a

Browse files
authored
Merge pull request #112 from codingapi/feature/operator-select
feat: 新增操作人手动选择功能(发起人设定/审批人设定)
2 parents 3d87d89 + aacb06d commit 03c303a

27 files changed

Lines changed: 1029 additions & 72 deletions

CLAUDE.md

Lines changed: 61 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
## 项目概述
66

7-
Flow Engine 是一个企业级工作流引擎,基于 Java 17 和 Spring Boot 3.5.9 构建。提供可视化流程设计、动态表单配置、多节点类型流转以及脚本扩展功能。项目采用前后端分离架构,支持 PC 端和移动端客户端。
7+
Flow Engine 是一个企业级工作流引擎,基于 Java 17 和 Spring Boot 3.5.9 构建(当前版本 0.0.12)。提供可视化流程设计、动态表单配置、多节点类型流转以及脚本扩展功能。项目采用前后端分离架构,支持 PC 端和移动端客户端。前端代码位于独立 Git 仓库 `flow-frontend`(git submodule)
88

99
## 常用命令
1010

@@ -39,16 +39,25 @@ pnpm run build
3939
# 构建 PC 端所有组件库
4040
pnpm run build:flow-pc
4141

42+
# 构建移动端所有组件库
43+
pnpm run build:flow-mobile
44+
4245
# 构建特定包
43-
pnpm run build:flow-core # 核心 API 库
44-
pnpm run build:flow-types # 类型定义库
45-
pnpm run build:flow-pc-ui # 基础 UI 组件库
46-
pnpm run build:flow-pc-form # 表单组件库
47-
pnpm run build:flow-pc-design # 设计器组件库
48-
pnpm run build:flow-pc-approval # 审批组件库
46+
pnpm run build:flow-core # 核心框架库
47+
pnpm run build:flow-types # 类型定义库
48+
pnpm run build:flow-icons # 图标库
49+
pnpm run build:flow-approval-presenter # 审批展示器框架
50+
pnpm run build:flow-design # 流程设计器组件库
51+
pnpm run build:flow-pc-ui # PC 端基础 UI 组件库
52+
pnpm run build:flow-pc-form # PC 端表单组件库
53+
pnpm run build:flow-pc-approval # PC 端审批组件库
54+
pnpm run build:flow-mobile-ui # 移动端基础 UI 组件库
55+
pnpm run build:flow-mobile-form # 移动端表单组件库
56+
pnpm run build:flow-mobile-approval # 移动端审批组件库
4957

5058
# 构建特定应用
5159
pnpm run build:app-pc
60+
pnpm run build:app-mobile
5261

5362
# 开发模式
5463
pnpm run dev:app-pc # PC 端应用
@@ -60,7 +69,7 @@ pnpm run dev:app-mobile # 移动端应用
6069
### 后端分层架构(8 层架构)
6170

6271
1. **工作流层** - 流程定义
63-
2. **节点层** - 15 种节点类型(StartNode、EndNode、ApprovalNode、HandleNode、NotifyNode、RouterNode、SubProcessNode、DelayNode、TriggerNode、ConditionNode、ParallelNode、InclusiveNode 及其分支变体)
72+
2. **节点层** - 19 种节点类型(StartNode、EndNode、ApprovalNode、HandleNode、NotifyNode、ManualNode、RouterNode、SubProcessNode、DelayNode、TriggerNode、ConditionNode、ParallelNode、InclusiveNode 及其分支变体,含 Else 分支节点
6473
3. **动作层** - 8 种动作类型(Pass、Reject、Save、AddAudit、Delegate、Return、Transfer、Custom)
6574
4. **记录层** - 流程实例记录
6675
5. **会话层** - 会话管理
@@ -83,46 +92,69 @@ pnpm run dev:app-mobile # 移动端应用
8392

8493
| 模块 | 描述 |
8594
|--------|-------------|
86-
| `flow-engine-framework` | 核心工作流引擎框架 |
87-
| `flow-engine-starter` | Spring Boot 启动器 |
88-
| `flow-engine-starter-api` | API 层 |
89-
| `flow-engine-starter-infra` | 基础设施层 |
90-
| `flow-engine-starter-query` | 查询层 |
91-
| `flow-engine-example` | 示例应用 |
95+
| `flow-engine-framework` | 核心工作流引擎框架(节点/动作/策略/脚本/服务) |
96+
| `flow-engine-starter` | Spring Boot 自动配置入口 |
97+
| `flow-engine-starter-api` | REST API 层(FlowRecordController、WorkflowController) |
98+
| `flow-engine-starter-infra` | 持久化层(JPA 实体、8 个仓储实现、达梦方言) |
99+
| `flow-engine-starter-query` | 查询层(FlowRecordQueryController、WorkflowQueryController) |
100+
| `flow-engine-example` | 示例应用(H2/达梦、JWT 认证、端口 8090) |
101+
102+
#### 前端模块(位于 flow-frontend 仓库)
92103

93-
#### 前端模块
104+
**核心模块**
94105

95106
| 模块 | 描述 | 依赖 |
96107
|--------|-------------|------|
97108
| `flow-core` | 核心框架库(HTTP、Hooks、Presenter 等),不包含 UI 组件 ||
98109
| `flow-types` | TypeScript 类型定义(流程实例、表单、审批等业务类型) | flow-core |
110+
| `flow-icons` | 图标库 | flow-core |
111+
| `flow-approval-presenter` | 审批展示器框架(基于 Redux 的状态管理) | flow-core, flow-types |
112+
| `flow-design` | 流程设计器组件库(节点配置、属性面板、脚本配置等) | flow-core, flow-types, flow-icons, flow-pc-ui |
113+
114+
**PC 端模块**
115+
116+
| 模块 | 描述 | 依赖 |
117+
|--------|-------------|------|
99118
| `flow-pc-ui` | PC 端基础 UI 组件库(按钮、输入框等原子组件) | flow-core |
100-
| `flow-pc-form` | PC 端表单相关组件(表单设计器、表单渲染等) | flow-core, flow-types |
101-
| `flow-pc-design` | PC 端流程设计器组件(节点配置、属性面板等) | flow-core, flow-types, flow-pc-ui |
102-
| `flow-pc-approval` | PC 端审批页面(待办/已办/审批处理等) | flow-pc-design, flow-pc-ui |
119+
| `flow-pc-form` | PC 端表单组件库(表单设计器、表单渲染等) | flow-core, flow-types |
120+
| `flow-pc-approval` | PC 端审批组件库(待办/已办/审批处理等) | flow-core, flow-types, flow-icons, flow-approval-presenter, flow-pc-ui, flow-pc-form |
121+
122+
**移动端模块**
123+
124+
| 模块 | 描述 | 依赖 |
125+
|--------|-------------|------|
126+
| `flow-mobile-ui` | 移动端基础 UI 组件库 | flow-core |
127+
| `flow-mobile-form` | 移动端表单组件库 | flow-core, flow-types |
128+
| `flow-mobile-approval` | 移动端审批组件库 | flow-core, flow-types, flow-icons, flow-approval-presenter, flow-mobile-ui, flow-mobile-form |
103129

104130
**前端模块依赖关系**
105131

106132
```
107-
flow-core (无UI)
133+
flow-core (无UI,基础框架)
108134
↑ ↑
109-
│ └── flow-pc-ui (基础UI)
135+
│ └── flow-icons (图标库)
136+
│ └── flow-approval-presenter (审批展示器框架)
110137
111138
flow-types (类型定义)
112139
↑ ↑
113140
│ └── flow-pc-form
114141
│ ↑
115-
└───────→ flow-pc-design ──→ flow-pc-approval
142+
└───────→ flow-pc-ui ──→ flow-pc-approval
143+
144+
flow-design ──→ app-pc
145+
146+
flow-mobile-ui ──→ flow-mobile-form ──→ flow-mobile-approval ──→ app-mobile
116147
```
117148

118149
**模块划分原则**
119150

120151
- **flow-core**:全局框架依赖,只包含与 UI 无关的基础能力(HTTP、状态管理、工具函数等)
121-
- **flow-types**:全局类型定义,包含流程审批相关的业务类型(手机端和 PC 端共用)
122-
- **flow-pc-ui**:PC 端基础 UI 组件库,提供原子化组件,依赖 flow-core
123-
- **flow-pc-form**:表单相关功能,依赖 flow-core + flow-types
124-
- **flow-pc-design**:流程设计器功能,包含节点配置、属性面板、脚本配置等
125-
- **flow-pc-approval**:审批页面功能,依赖 flow-pc-design
152+
- **flow-types**:全局类型定义,包含流程审批相关的业务类型(移动端和 PC 端共用)
153+
- **flow-icons**:图标库,提供统一的图标组件
154+
- **flow-approval-presenter**:审批展示器框架,基于 Redux 的状态管理
155+
- **flow-design**:流程设计器功能,包含节点配置、属性面板、脚本配置等
156+
- **flow-pc-***:PC 端专用组件库,依赖 Ant Design
157+
- **flow-mobile-***:移动端专用组件库,依赖 Ant Design Mobile
126158

127159
#### 前端应用
128160

@@ -133,12 +165,12 @@ flow-types (类型定义)
133165

134166
### 技术栈
135167

136-
- **后端**:Java 17、Spring Boot 3.5.9、Groovy
137-
- **前端**:React 18、TypeScript、pnpm、RsbuildRslib、Antd
168+
- **后端**:Java 17、Spring Boot 3.5.9、Spring Data JPA、Groovy、JJWT、Fastjson 2、Apache Commons、H2/达梦数据库
169+
- **前端**:React 18、TypeScript、pnpm、Rsbuild/Rslib、Ant Design(PC)、Ant Design Mobile(移动端)、Redux Toolkit、Flowgram、CodeMirror
138170

139171
## 关键包
140172

141-
- `com.codingapi.flow.node` - 节点实现(15 种类型)
173+
- `com.codingapi.flow.node` - 节点实现(19 种类型)
142174
- `com.codingapi.flow.action` - 动作实现(8 种类型)
143175
- `com.codingapi.flow.strategy` - 策略接口和实现
144176
- `com.codingapi.flow.repository` - 数据访问层

README.md

Lines changed: 56 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Flow Engine 是一个基于 Java 17 和 Spring Boot 3.5.9 构建的企业级工
1010

1111
### 核心特性
1212

13-
- **15 种节点类型** - 开始、结束、审批、办理、通知、条件控制、条件分支、并行控制、并行分支、路由、包容控制、包容分支、子流程、延迟、触发节点
13+
- **19 种节点类型** - 开始、结束、审批、办理、通知、人工、条件控制、条件分支、条件Else分支、并行控制、并行分支、路由、包容控制、包容分支、包容Else分支、子流程、延迟、触发节点、人工分支
1414
- **8 种动作类型** - 通过、拒绝、保存、加签、委派、退回、转办、自定义
1515
- **策略驱动配置** - 所有关键配置通过策略实现,支持动态扩展
1616
- **Groovy 脚本扩展** - 支持发起人动态匹配、审批人加载、条件判断、自定义操作等
@@ -95,22 +95,26 @@ flow-engine
9595
│ │ ├── FlowNodeState # 节点状态分类
9696
│ │ └── WorkflowStrategyManager # 工作流策略管理器
9797
│ ├── node # 节点层
98-
│ │ ├── nodes # 节点实现(15种)
99-
│ │ │ ├── StartNode # 开始节点
100-
│ │ │ ├── EndNode # 结束节点
101-
│ │ │ ├── ApprovalNode # 审批节点
102-
│ │ │ ├── HandleNode # 办理节点
103-
│ │ │ ├── NotifyNode # 通知节点
104-
│ │ │ ├── ConditionNode # 条件控制节点(块节点)
105-
│ │ │ ├── ConditionBranchNode # 条件分支节点
106-
│ │ │ ├── ParallelNode # 并行控制节点(块节点)
107-
│ │ │ ├── ParallelBranchNode # 并行分支节点
108-
│ │ │ ├── RouterNode # 路由节点
109-
│ │ │ ├── InclusiveNode # 包容控制节点(块节点)
110-
│ │ │ ├── InclusiveBranchNode # 包容分支节点
111-
│ │ │ ├── SubProcessNode # 子流程节点
112-
│ │ │ ├── DelayNode # 延迟节点
113-
│ │ │ └── TriggerNode # 触发节点
98+
│ │ ├── nodes # 节点实现(19种)
99+
│ │ │ ├── StartNode # 开始节点
100+
│ │ │ ├── EndNode # 结束节点
101+
│ │ │ ├── ApprovalNode # 审批节点
102+
│ │ │ ├── HandleNode # 办理节点
103+
│ │ │ ├── NotifyNode # 通知节点
104+
│ │ │ ├── ManualNode # 人工节点(块节点)
105+
│ │ │ ├── ManualBranchNode # 人工分支节点
106+
│ │ │ ├── ConditionNode # 条件控制节点(块节点)
107+
│ │ │ ├── ConditionBranchNode # 条件分支节点
108+
│ │ │ ├── ConditionElseBranchNode # 条件Else分支节点
109+
│ │ │ ├── ParallelNode # 并行控制节点(块节点)
110+
│ │ │ ├── ParallelBranchNode # 并行分支节点
111+
│ │ │ ├── RouterNode # 路由节点
112+
│ │ │ ├── InclusiveNode # 包容控制节点(块节点)
113+
│ │ │ ├── InclusiveBranchNode # 包容分支节点
114+
│ │ │ ├── InclusiveElseBranchNode # 包容Else分支节点
115+
│ │ │ ├── SubProcessNode # 子流程节点
116+
│ │ │ ├── DelayNode # 延迟节点
117+
│ │ │ └── TriggerNode # 触发节点
114118
│ │ ├── factory # NodeFactory 节点工厂
115119
│ │ ├── helper # 节点助手
116120
│ │ │ ├── BackNodeHelper # 退回节点助手
@@ -207,9 +211,11 @@ flow-engine
207211
│ ├── Workflow # 流程对象
208212
│ └── WorkflowBuilder # 流程构建器
209213
│ └── src/test/java # 测试代码
210-
├── flow-engine-starter # Spring Boot Starter
211-
├── flow-engine-starter-infra # 持久化层 Starter
212-
├── flow-engine-example # 示例项目
214+
├── flow-engine-starter # Spring Boot 自动配置入口
215+
├── flow-engine-starter-api # REST API 层(FlowRecordController、WorkflowController)
216+
├── flow-engine-starter-infra # 持久化层(JPA 实体、8个仓储实现、达梦方言)
217+
├── flow-engine-starter-query # 查询层(FlowRecordQueryController、WorkflowQueryController)
218+
├── flow-engine-example # 示例项目(H2/达梦数据库、JWT 认证、端口 8090)
213219
└── flow-frontend # 前端项目(独立 Git 仓库)
214220
├── apps
215221
│ ├── app-pc # PC 端应用
@@ -236,10 +242,13 @@ flow-engine
236242

237243
- **Java 17** - 编程语言
238244
- **Spring Boot 3.5.9** - 应用框架
239-
- **Groovy** - 脚本引擎
245+
- **Spring Data JPA** - 数据持久化
246+
- **Groovy** - 脚本引擎(动态脚本扩展)
240247
- **Lombok** - 代码简化
241-
- **Fastjson** - JSON处理
242-
- **Apache Commons** - 工具库
248+
- **Fastjson 2** - JSON 处理
249+
- **JJWT** - JWT 令牌认证(示例应用)
250+
- **Apache Commons** - 工具库(IO / Lang3 / Crypto)
251+
- **H2 / 达梦数据库** - 数据库支持
243252

244253
### 前端
245254

@@ -378,7 +387,7 @@ pnpm run dev:app-mobile
378387
### 八层架构
379388

380389
1. **流程层** (Workflow Layer) - 流程定义层
381-
2. **节点层** (Node Layer) - 节点层(15种节点类型
390+
2. **节点层** (Node Layer) - 节点层(19种节点类型
382391
3. **动作层** (Action Layer) - 动作层(8种动作类型)
383392
4. **记录层** (Record Layer) - 记录层
384393
5. **会话层** (Session Layer) - 会话层
@@ -388,13 +397,12 @@ pnpm run dev:app-mobile
388397

389398
### 设计模式
390399

391-
- **建造者模式** (Builder Pattern)
392-
- **工厂模式** (Factory Pattern)
393-
- **策略模式** (Strategy Pattern)
394-
- **模板方法模式** (Template Method Pattern)
395-
- **单例模式** (Singleton Pattern)
396-
- **责任链模式** (Chain of Responsibility Pattern)
397-
- **组合模式** (Composite Pattern)
400+
- **建造者模式** (Builder Pattern) - WorkflowBuilder、NodeBuilder、FormMetaBuilder
401+
- **工厂模式** (Factory Pattern) - FlowActionFactory、NodeFactory、NodeStrategyFactory
402+
- **策略模式** (Strategy Pattern) - INodeStrategy、IWorkflowStrategy
403+
- **模板方法模式** (Template Method Pattern) - BaseAction、BaseFlowNode
404+
- **责任链模式** (Chain of Responsibility Pattern) - 动作执行链
405+
- **组合模式** (Composite Pattern) - 带 blocks 属性的块节点层级结构
398406

399407
## 节点类型
400408

@@ -412,21 +420,25 @@ pnpm run dev:app-mobile
412420
| DelayNode | 延迟节点 | `DELAY` |
413421
| TriggerNode | 触发节点 | `TRIGGER` |
414422

415-
### 块节点/容器节点 (3种) - 包含子节点(blocks)
423+
### 块节点/容器节点 (4种) - 包含子节点(blocks)
416424

417425
| 节点类型 | 描述 | NODE_TYPE |
418426
|---------|------|-----------|
427+
| ManualNode | 人工节点 | `MANUAL` |
419428
| ConditionNode | 条件控制节点 | `CONDITION` |
420429
| ParallelNode | 并行控制节点 | `PARALLEL` |
421430
| InclusiveNode | 包容控制节点 | `INCLUSIVE` |
422431

423-
### 分支节点 (3种) - 作为块节点的子节点
432+
### 分支节点 (6种) - 作为块节点的子节点
424433

425434
| 节点类型 | 描述 | NODE_TYPE |
426435
|---------|------|-----------|
436+
| ManualBranchNode | 人工分支节点 | `MANUAL_BRANCH` |
427437
| ConditionBranchNode | 条件分支节点 | `CONDITION_BRANCH` |
438+
| ConditionElseBranchNode | 条件Else分支节点 | `CONDITION_ELSE_BRANCH` |
428439
| ParallelBranchNode | 并行分支节点 | `PARALLEL_BRANCH` |
429440
| InclusiveBranchNode | 包容分支节点 | `INCLUSIVE_BRANCH` |
441+
| InclusiveElseBranchNode | 包容Else分支节点 | `INCLUSIVE_ELSE_BRANCH` |
430442

431443
## 动作类型
432444

@@ -467,9 +479,19 @@ category.subcategory.errorType
467479

468480
所有异常消息使用英文。
469481

482+
## 示例应用
483+
484+
示例应用(`flow-engine-example`)提供了一个开箱即用的完整演示环境:
485+
486+
- **默认数据库**:H2(内存数据库,无需额外配置)
487+
- **可选数据库**:达梦(`--spring.profiles.active=dm`
488+
- **认证**:JWT Token 认证
489+
- **访问端口**:8090
490+
- **管理员账号**:启动时由 `AdminInitializer` 自动初始化
491+
470492
## 文档
471493

472-
- [CLAUDE.md](CLAUDE.md) - Claude Code 指南
494+
- [CLAUDE.md](CLAUDE.md) - Claude Code 开发指南
473495

474496
## 测试
475497

0 commit comments

Comments
 (0)