一、为什么低代码平台爱用 Groovy?
Groovy 对 Java 生态非常友好,特别适合企业级低代码平台:
核心优势
JVM 原生:可直接复用 Java 类、Spring Bean、DAO、RPC 客户端
动态执行:无需重新发布应用即可修改业务逻辑
语法简洁:比 Java 写规则、表达式、流程判断更高效
运行时可控:支持沙箱、白名单、安全限制
与配置融合好:适合“配置 + 少量代码”的模式
👉 所以常见形态是:
80% 用配置拖拽,20% 用 Groovy 补复杂逻辑
二、低代码平台中 Groovy 的典型使用场景
1️⃣ 业务规则 & 决策逻辑(最常见)
用于替代复杂 if-else / 规则引擎配置爆炸的问题。
if (order.amount > 10000 && user.level == 'VIP') { return "APPROVE" } else { return "MANUAL_REVIEW" }
常见场景
风控规则
审批条件判断
定价策略
权限判定
2️⃣ 流程节点脚本(BPM / 工作流)
在流程引擎(如 Flowable / Camunda / 自研流程)中:
节点前置校验
节点自动处理
流程变量计算
execution.setVariable("needNotify", amount > 5000)
3️⃣ 数据加工 / 转换(ETL / 表单计算)
低代码表单、数据管道中常见:
def fullName = "${firstName} ${lastName}" return fullName.toUpperCase()
典型用途
表单字段联动
数据清洗
字段派生
多表结果合并
4️⃣ 接口编排 / API 聚合
在低代码接口平台里,用 Groovy 做轻量编排:
def user = userService.getUser(uid) def score = scoreService.queryScore(uid) return [ uid: uid, name: user.name, score: score ]
👉 比写一个 Java Controller 更快、更灵活。
5️⃣ 校验 & 约束(Validation)
if (email == null || !email.contains("@")) { throw new BizException("邮箱格式不合法") }
适合:
表单校验
接口参数校验
规则前置校验
6️⃣ 自定义函数 / 扩展点
低代码平台通常内置一堆能力,但留 Groovy 扩展点:
自定义计算函数
自定义权限规则
自定义指标口径
三、低代码平台中 Groovy 的执行模型(很重要)
常见 3 种执行方式
1️⃣ ScriptEngine 动态执行(最简单)
GroovyShell shell = new GroovyShell(binding) shell.evaluate(script)
优点:简单
缺点:性能一般、无缓存
2️⃣ 预编译 + 缓存(推荐)
GroovyClassLoader loader = new GroovyClassLoader() Class clazz = loader.parseClass(script) Script scriptObj = (Script) clazz.newInstance() scriptObj.run()
✔ 低代码平台几乎都用这种
3️⃣ AST + 表达式级(高级)
限制语法能力
禁止 while / for / new
更安全
四、低代码平台常见的 Groovy 内置变量设计
为了“脚本像配置一样好用”,平台通常会预置上下文:
// 常见内置对象 context // 全局上下文 input // 入参 output // 出参 env // 环境变量 logger // 日志
示例:
logger.info("当前用户: {}", context.userId) return input.price * 0.9