Files
qhmes/.trae/skills/jeecg-bpmn/references/bpmn-advanced.md

156 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 条件表达式、抄送、按钮与服务任务
## 1. 条件表达式系统(来自设计器源码)
### 1.1 系统内置变量(可用于网关条件)
| 变量名 | 含义 | 用法示例 |
|--------|------|---------|
| `applyUserId` | 发起人用户名 | `${applyUserId == 'admin'}` |
| `applyUserDept` | 发起人部门 | `${applyUserDept == '部门ID'}` |
| `applyUserDeptManager` | 发起部门负责人 | `${applyUserDeptManager == 'username'}` |
| `applyUserParentDeptManager` | 上级部门负责人 | 同上 |
| `lastAssignee` | 上个节点处理人 | `${lastAssignee == 'admin'}` |
| `applyUserPostLevel` | 发起人职级 | `${applyUserPostLevel == '职级ID'}` |
| `applyUserApprovalRole` | 发起人审批角色 | `${applyUserApprovalRole == '角色ID'}` |
| `applyDate` | 发起日期 | `${applyDate > '2026-01-01'}` |
| `result` | 审批结果 | `${result == 1}` 通过 / `${result == 0}` 拒绝 |
### 1.2 条件运算符
| 运算符 | 含义 | 适用类型 |
|--------|------|---------|
| `eq` / `==` | 等于 | 字符串、数字、日期 |
| `ne` / `!=` | 不等于 | 字符串、数字、日期 |
| `gt` / `>` | 大于 | 数字、日期 |
| `gte` / `>=` | 大于等于 | 数字、日期 |
| `lt` / `<` | 小于 | 数字、日期 |
| `lte` / `<=` | 小于等于 | 数字、日期 |
| `in` | 在列表中 | 字符串、数字 |
| `not_in` | 不在列表中 | 字符串、数字 |
| `contains` | 包含 | 字符串 |
| `is_empty` | 为空 | 字符串、数字、文件 |
| `is_not_empty` | 不为空 | 字符串、数字、文件 |
| `is_department_manager` | 是部门负责人 | applyUserId, lastAssignee |
| `is_not_department_manager` | 不是部门负责人 | applyUserId, lastAssignee |
---
## 2. 抄送配置CcConfigJson
用户任务可配置抄送人,通知相关人员但不影响审批流程:
```xml
<bpmn2:userTask id="task_xxx" name="审批">
<bpmn2:extensionElements>
<flowable:CcConfigJson value="${BASE64_ENCODED_JSON}" />
</bpmn2:extensionElements>
</bpmn2:userTask>
```
### 抄送类型
| 类型 | 说明 |
|------|------|
| `candidateUsers` | 指定人 |
| `candidateRoles` | 指定角色 |
| `candidateDeptPositions` | 指定岗位 |
| `submitter_user` | 提交人本人 |
| `submitter_dept_leader` | 提交人部门负责人 |
| `submitter_parent_dept_leader` | 上级部门负责人 |
| `dept_members` | 本部门成员 |
| `dept_leader` | 部门负责人 |
---
## 3. 自定义按钮Button
用户任务可配置自定义操作按钮:
```xml
<bpmn2:userTask id="task_xxx" name="审批">
<bpmn2:extensionElements>
<flowable:Button id="btn_1" name="同意" code="approve" isHide="0" next="task_next" sort="1" />
<flowable:Button id="btn_2" name="拒绝" code="reject" isHide="0" next="end" sort="2" />
<flowable:Button id="btn_3" name="转办" code="transfer" isHide="0" sort="3" />
</bpmn2:extensionElements>
</bpmn2:userTask>
```
| 属性 | 说明 |
|------|------|
| `id` | 按钮唯一ID |
| `name` | 显示名称 |
| `code` | 按钮编码标识 |
| `isHide` | 是否隐藏0=显示1=隐藏) |
| `next` | 点击后跳转的目标节点ID |
| `sort` | 显示排序 |
---
## 4. 服务任务ServiceTask
### 4.1 API 服务任务
自动调用外部 HTTP 接口:
```xml
<bpmn2:serviceTask id="service_api" name="调用外部接口"
flowable:class="org.jeecg.modules.extbpm.listener.service.ApiServiceTaskDelegate">
<bpmn2:extensionElements>
<flowable:ApiServiceTaskConfig value="${BASE64_ENCODED_JSON}" />
</bpmn2:extensionElements>
</bpmn2:serviceTask>
```
ApiServiceTaskConfig JSON 结构:
```json
{
"apiUrl": "https://api.example.com/endpoint",
"method": "GET|POST",
"headers": {},
"parameters": {},
"timeout": 30000,
"retryCount": 0
}
```
### 4.2 AI 服务任务
调用 AI 大模型进行智能处理:
```xml
<bpmn2:serviceTask id="service_ai" name="AI智能处理"
flowable:class="org.jeecg.modules.extbpm.listener.service.AigcServiceTaskDelegate">
<bpmn2:extensionElements>
<flowable:AiServiceTaskConfig value="${BASE64_ENCODED_JSON}" />
</bpmn2:extensionElements>
</bpmn2:serviceTask>
```
AiServiceTaskConfig JSON 结构:
```json
{
"aiFlowId": "AI对话流ID",
"inputParams": {},
"outputParams": {}
}
```
---
## 5. 设计器 API 端点一览
| API 路径 | 用途 |
|----------|------|
| `act/designer/api/saveProcess` | 保存/新建流程 |
| `act/designer/api/getProcessXml` | 获取流程 XML |
| `act/designer/api/getTypes` | 获取流程类型列表 |
| `act/designer/api/getPageUsers` | 获取用户列表(审批人选择) |
| `act/designer/api/getGroups` | 获取角色/组列表 |
| `act/designer/api/getRoleNameByCodes` | 根据角色编码获取名称 |
| `act/designer/api/getExpressions` | 获取可用表达式列表 |
| `act/designer/api/getListenersByType` | 获取监听器列表 |
| `sys/sysDepart/queryDepartAndPostTreeSync` | 获取部门+岗位树 |
| `sys/position/list` | 获取职级列表 |