什么是后端表达式?
在 Flowable 中,后端表达式是一种强大的工具,用于在流程、案例或决策表执行期间动态获取或设置变量。它还能实现自定义逻辑,或将复杂逻辑委托……
后端表达式在 Flowable 的后端运行,无法访问前端数据,但在 Flowable Design 中,你可以通过带有 ⚡️ 闪电图标的字段轻松使用它们。Flowable 采用统一的表达式语言(UEL),以 ${...}
格式书写,语法简单且功能丰富。
表达式类型
后端表达式分为两种:
- 值表达式:返回一个值,如布尔、字符串或数字。例如:
${variable.property}
。 - 方法表达式:调用方法,可带参数。例如:
${bean.setPropertyValue('newValue')}
。
任何暴露为 Spring Bean 的服务都可以在表达式中使用,极大扩展了灵活性。
核心功能与关键字
Flowable 支持上下文相关的对象,如 root
(流程或案例实例的顶部对象)和 parent
(上层对象)。在 BPMN 中,你还可以使用 execution
(当前执行路径)、task
(当前任务)以及 authenticatedUserId
(当前用户 ID)。CMMN 则支持 caseInstance
和 planItemInstance
。
常用属性示例
- 流程实例:
${root.businessKey}
获取业务键。 - 案例实例:
${parent.name}
获取案例名称。 - 定义:
${definition.version}
获取模型版本。
实用函数
Flowable 提供了丰富的内置函数,简化变量操作、用户分配和数据处理:
- 变量操作:如
${var:getOrDefault(varName, defaultValue)}
获取变量或默认值。 - 流程分配:如
${bpmn:setAssignee(processInstanceId, userId)}
设置任务受理人。 - 字符串处理:如
${flwStringUtils.toLowerCase(text)}
转换小写。 - 日期时间:如
${flwTimeUtils.now()}
获取当前时间。 - JSON 处理:如
${json:array()}
创建空 JSON 数组。
实际应用场景
假设你有一个流程需要根据部门动态分配任务。通过表达式 ${departmentResolver.getAssignee(execution)}
,你可以调用自定义的 Spring Bean,根据部门 ID 查找成员并设置任务受理人。这样,流程就能灵活适应不同场景。
自定义表达式
想让表达式更强大?Flowable 支持通过 Spring Bean 或自定义 ELResolver 扩展功能。例如,你可以创建一个解析器,将 ${departmentAssignee}
直接映射到部门受理人,简化流程定义。
为什么选择 Flowable?
Flowable 的后端表达式让流程自动化更智能、更灵活。无论是动态任务分配还是复杂逻辑处理,它都能轻松应对。
想深入了解?访问 Flowable中文文档 查看完整文档和示例,解锁更多可能性!