200 lines
5.4 KiB
Markdown
200 lines
5.4 KiB
Markdown
|
|
# JeecgBoot BPM 流程自动生成 — Skills 使用指南
|
|||
|
|
|
|||
|
|
> 通过自然语言描述,AI 自动生成 Flowable BPMN 2.0 XML 并调用 API 创建/修改流程。
|
|||
|
|
|
|||
|
|
## 前置准备
|
|||
|
|
|
|||
|
|
使用前需准备两样东西:
|
|||
|
|
|
|||
|
|
| 信息 | 获取方式 | 示例 |
|
|||
|
|
|------|---------|------|
|
|||
|
|
| **后端地址** | 运维/开发提供 | `https://api3.boot.jeecg.com` |
|
|||
|
|
| **X-Access-Token** | 浏览器 F12 → Network → 任意请求 Headers | `eyJhbGciOiJIUzI1NiJ9...` |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 实战案例:车辆出差申请流程
|
|||
|
|
|
|||
|
|
以下是一个完整的流程创建和迭代修改过程,展示了 skill 的实际使用方式。
|
|||
|
|
|
|||
|
|
### 第一步:创建基础流程
|
|||
|
|
|
|||
|
|
**用户输入:**
|
|||
|
|
```
|
|||
|
|
创建一个车辆出差申请流程
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**AI 交互过程:**
|
|||
|
|
|
|||
|
|
1. AI 询问后端地址和 Token
|
|||
|
|
2. 用户提供凭据后,AI 设计流程并展示摘要:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
## 流程摘要
|
|||
|
|
|
|||
|
|
- 流程名称:车辆出差申请流程
|
|||
|
|
- 流程类型:oa
|
|||
|
|
|
|||
|
|
### 流程节点
|
|||
|
|
|
|||
|
|
| 序号 | 节点名称 | 类型 | 审批人 |
|
|||
|
|
|------|---------|------|--------|
|
|||
|
|
| 1 | 开始 | startEvent | - |
|
|||
|
|
| 2 | 申请人填写 | userTask (草稿) | ${applyUserId} |
|
|||
|
|
| 3 | 部门负责人审批 | userTask | 表达式(部门负责人) |
|
|||
|
|
| 4 | 分管领导审批 | userTask | 表达式(上一级部门负责人) |
|
|||
|
|
| 5 | 车辆调度确认 | userTask | 上一节点指派 |
|
|||
|
|
| 6 | 结束 | endEvent | - |
|
|||
|
|
|
|||
|
|
确认以上信息正确?(y/n)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. 用户确认 `y` 后,AI 自动生成 BPMN XML 并调用 API
|
|||
|
|
4. 返回结果:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
## 流程创建成功
|
|||
|
|
|
|||
|
|
- 流程ID:2032497475959439362
|
|||
|
|
- 流程Key:process_1773420125267
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 第二步:增加审批节点
|
|||
|
|
|
|||
|
|
**用户输入:**
|
|||
|
|
```
|
|||
|
|
修改刚才的流程,加入一个总经理审批节点,最后一个节点
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**AI 交互过程:**
|
|||
|
|
|
|||
|
|
1. AI 基于已有流程信息,展示修改后的摘要(标注变更项):
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
| 序号 | 节点名称 | 类型 | 审批人 | 变更 |
|
|||
|
|
|------|---------|------|--------|------|
|
|||
|
|
| ... | (原有节点) | ... | ... | |
|
|||
|
|
| 6 | 总经理审批 | userTask | 表达式(上两级部门负责人) | 新增 |
|
|||
|
|
| 7 | 结束 | endEvent | - | |
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. 用户确认后,AI 使用相同的 `processDefinitionId` 和 `processkey` 调用 API 更新流程
|
|||
|
|
3. 流程修改成功
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 第三步:增加条件分支
|
|||
|
|
|
|||
|
|
**用户输入:**
|
|||
|
|
```
|
|||
|
|
在部门负责人审批节点后面增加分支条件,如果用车时间超过3天则需要人力审批,然后再流向车辆调度确认
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**AI 交互过程:**
|
|||
|
|
|
|||
|
|
1. AI 识别出需要排他网关(exclusiveGateway),展示分支逻辑:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
开始 → 申请人填写 → 部门负责人审批 → 用车天数判断
|
|||
|
|
├─ ≤3天 ──────────────→ 分管领导审批 → 车辆调度确认 → 总经理审批 → 结束
|
|||
|
|
└─ >3天 → 人力审批(hr角色) ↗
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. 用户确认后,API 更新流程
|
|||
|
|
|
|||
|
|
**最终流程图效果:**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
○ 开始
|
|||
|
|
↓
|
|||
|
|
[申请人填写] ← 草稿节点,首次自动跳过
|
|||
|
|
↓
|
|||
|
|
[部门负责人审批] ← 表达式: getDepartLeaders
|
|||
|
|
↓
|
|||
|
|
◇ 用车天数判断
|
|||
|
|
↙ ↘
|
|||
|
|
≤3天 >3天
|
|||
|
|
↓ ↓
|
|||
|
|
│ [人力审批] ← hr 角色组
|
|||
|
|
↓ ↙
|
|||
|
|
[分管领导审批] ← 表达式: getLevel1DepartLeaders
|
|||
|
|
↓
|
|||
|
|
[车辆调度确认] ← 上一节点指派
|
|||
|
|
↓
|
|||
|
|
[总经理审批] ← 表达式: getLevel2DepartLeaders
|
|||
|
|
↓
|
|||
|
|
● 结束
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 使用技巧
|
|||
|
|
|
|||
|
|
### 1. 描述流程的多种方式
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
# 简单描述
|
|||
|
|
创建一个请假审批流程,先经理审批再HR审批
|
|||
|
|
|
|||
|
|
# 指定审批人
|
|||
|
|
创建流程:开始 → admin审批 → hr角色组审批 → 结束
|
|||
|
|
|
|||
|
|
# 描述条件分支
|
|||
|
|
报销流程,金额大于1万需要总监审批,否则经理审批即可
|
|||
|
|
|
|||
|
|
# 描述会签
|
|||
|
|
创建合同审批流程,需要法务部和财务部同时会签
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 修改已有流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
# 增加节点
|
|||
|
|
在经理审批后面加一个总监审批
|
|||
|
|
|
|||
|
|
# 增加条件分支
|
|||
|
|
在提交节点后加一个金额判断,超过5000走总监审批
|
|||
|
|
|
|||
|
|
# 修改审批人
|
|||
|
|
把部门经理审批改成角色组 manager
|
|||
|
|
|
|||
|
|
# 删除节点
|
|||
|
|
去掉HR审批节点
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 支持的审批人类型
|
|||
|
|
|
|||
|
|
| 说法 | AI 识别为 |
|
|||
|
|
|------|----------|
|
|||
|
|
| "admin审批" | 固定指定人 |
|
|||
|
|
| "发起人/申请人" | `${applyUserId}` 表达式 |
|
|||
|
|
| "部门负责人" | `getDepartLeaders` 表达式 |
|
|||
|
|
| "分管领导" | `getLevel1DepartLeaders` 表达式 |
|
|||
|
|
| "hr角色" / "角色组" | `candidateGroups` + `groupType="role"` |
|
|||
|
|
| "上一节点指派" | `isAssignedByPreviousNode=true` |
|
|||
|
|
| "张三或李四" | `candidateUsers` 候选人 |
|
|||
|
|
| "会签/多人同时审批" | 多实例 + `countersignRule` |
|
|||
|
|
|
|||
|
|
### 4. 支持的条件分支
|
|||
|
|
|
|||
|
|
| 说法 | AI 生成 |
|
|||
|
|
|------|--------|
|
|||
|
|
| "金额大于1万" | `${amount > 10000}` |
|
|||
|
|
| "天数超过3天" | `${use_days > 3}` |
|
|||
|
|
| "通过/拒绝" | `${result == 1}` / `${result == 0}` |
|
|||
|
|
| "部长以上职务" | `${oaUtil.branchConditionByPost(...)}` |
|
|||
|
|
|
|||
|
|
> 条件变量名需与业务表单字段名一致。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **Token 有效期**:JWT Token 有过期时间,过期后需重新从浏览器获取
|
|||
|
|
2. **流程字段绑定**:条件分支中的变量名(如 `use_days`)需与关联表单的字段名一致
|
|||
|
|
3. **同一会话内可连续修改**:AI 会记住当前流程的 ID 和 Key,无需重复提供
|
|||
|
|
4. **修改是覆盖式的**:每次修改会提交完整的 BPMN XML,不是增量更新
|
|||
|
|
5. **创建后需绑定表单**:流程创建后,需在 JeecgBoot 后台绑定业务表单才能正常发起
|