流程表达式
Flowable 使用 UEL(Unified Expression Language)进行表达式解析。它是 Java EE 6 规范的一部分,常用于条件分支、审批人分配、变量计算等场景。
例如:
- 在会签、或签、依次审批中,
${ nrOfCompletedInstances >= nrOfInstances }、${ nrOfCompletedInstances == 1 }都是 UEL 表达式 - 在审批接入(业务表单)中,流转条件
${day > 3}也是 UEL 表达式
学习资料:
下面按常见使用方式展开说明。
1. 流程表达式
1.1 分配给发起人
BpmTaskAssignStartUserExpression 用于将当前任务分配给流程发起人审批,需要声明为 Spring Bean。
text
${bpmTaskAssignStartUserExpression.calculateUsers(execution)}在 BPMN 流程图中使用该表达式后,当前任务节点的审批人会被分配给发起人。
1.2 分配给发起人的指定级别领导
BpmTaskAssignLeaderExpression 用于将任务分配给发起人的指定 level 级领导审批,同样需要声明为 Spring Bean。
text
${bpmTaskAssignLeaderExpression.calculateUsers(execution, 1)}其中:
1表示一级领导2表示二级领导- 以此类推,
level参数表示领导层级
例如,若要分配给二级领导,可以使用:
text
${bpmTaskAssignLeaderExpression.calculateUsers(execution, 2)}2. 流程表达式模板
在「工作流程 -> 流程管理 -> 流程表达式」菜单中,可以维护表达式模板,方便在设计流程图时直接选择。
- 前端页面:
views/bpm/processExpression/index.vue - 后端接口:
BpmProcessExpressionController
2.1 使用场景
将常用表达式保存为模板,在流程设计时直接选择。
2.2 表结构
流程表达式模板通常存储在 bpm_process_expression 表中,核心字段如下:
sql
CREATE TABLE `bpm_process_expression` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '表达式名字',
`status` tinyint NOT NULL COMMENT '表达式状态',
`expression` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '表达式',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='BPM 流程表达式表';其中,expression 字段表示表达式的具体内容,是最关键的字段。
