流程表达式
Flowable 使用 UEL(Unified Expression Language)表达式来实现动态逻辑,可用于条件分支、审批人分配、变量计算等场景。
1. 流程表达式基础
UEL 语法
${表达式}表达式可以引用:
- 流程变量:
${day > 3}(day 是流程变量) - Spring Bean:
${myService.calculate()} - 流程上下文:
${execution.processInstanceId}
常见用法
| 场景 | 表达式示例 |
|---|---|
| 条件分支 | ${day > 3} |
| 审批人分配 | ${bpmTaskAssignStartUserExpression.calculateUsers(execution)} |
| 变量计算 | ${amount * 0.1} |
2. 内置表达式
RuoYi Office 内置了常用的流程表达式 Bean:
2.1 分配给发起人
${bpmTaskAssignStartUserExpression.calculateUsers(execution)}将任务分配给流程发起人。适用于"确认"类节点。
2.2 分配给指定级别 Leader
${bpmTaskAssignLeaderExpression.calculateUsers(execution, 1)}参数说明:
- 第二个参数为 Leader 级别(1 = 直接上级,2 = 上上级,依此类推)
3. 自定义表达式
可以创建自己的表达式 Bean:
java
@Component("myExpression")
public class MyExpression {
public Set<Long> calculateUsers(DelegateExecution execution) {
// 自定义逻辑
return Set.of(1L, 2L);
}
}使用方式:${myExpression.calculateUsers(execution)}
4. 流程表达式模板
RuoYi Office 提供了流程表达式模板管理功能。
4.1 使用场景
将常用表达式保存为模板,在流程设计时直接选择。
4.2 表结构
表达式模板存储在 bpm_process_expression 表:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 编号 |
| name | varchar(100) | 名称 |
| status | tinyint | 状态 |
| expression | varchar(1000) | 表达式内容 |
4.3 管理界面
在「流程中心 → 流程表达式」页面管理表达式模板。