低代码开发用Groovy脚本自定义函数,实现复杂业务逻辑和数据转换

B站影视 日本电影 2025-11-17 18:42 1

摘要:在低代码平台中,函数公式是很多地方都需要用到的,它是打通业务逻辑和实现数据自动化的“任督二脉”。但是一些场景中,平台自带的函数无法满足你独特的业务计算需求,一个复杂的校验规则或数据转换逻辑你可能需要自己去写编码实现,或者找厂商定制。

在低代码平台中,函数公式是很多地方都需要用到的,它是打通业务逻辑和实现数据自动化的“任督二脉”。但是一些场景中,平台自带的函数无法满足你独特的业务计算需求,一个复杂的校验规则或数据转换逻辑你可能需要自己去写编码实现,或者找厂商定制。

然而在JVS的低代码、服务编排以及规则引擎中,有一个“自定义函数扩展”的能力。函数主要解决输入一个数据,然后输出对应的数据,这个数据映射的过程,我们通过函数去实现: y=f(x),例如,在表单中,一个字段的结果通过另外的字段的输入获取:

如上图所示,预计金额=单价*数量,那么这里 预算金额的结果就默认设置为一个函数取值,这个取值的方式通过函数公式进行加工获取,在JVS中会在很多地方用到函数公式,当公式不满足时需要我们自己扩展,本文介绍如何自行针对业务进行扩展函数公式。

首先咱们平台中函数公式主要使用了groovy动态语言,所以需要先了解下相关的语法。由于groovy特性,所以函数体中也可以调用JAVA工具类进行处理,这样的话可扩展性会进一步提升。

所有的函数都会保存在数据库中,保存的数据库和数据表默认为库:【jvs-design】,表:【jvs_function_base】。

name:函数名称,注意函数名与函数体中的函数名要一致

type:分类,关系到显示在哪个函数分组中

info:函数内容描述,会显示在右侧描述中,可使用html标签进行样式调整

param_count:参数数量,需要与函数体中函数参数个数保持一致

dynamic_param:是否动态参数:0代表不为动态参数,并且param_count不为[0];1代表为动态参数,并且param_count为[0]。

示例1(非动态参数):函数参数为2,那么这里param_count就填写[2],dynamic_param值为0。

示例2(动态参数,并且函数固定参数):函数固定参数为0,那么这里param_count填写[0],dynamic_param值为1。

enable_cache:是否使用缓存,固定为1。

jvs_param_type:参数类型,建议根据参数个数都使用any,涉及到参数使用其他节点值时取消类型校验。

添加函数后,在“运维设置”中,开发配置,点击“更新”,重新加载缓存即可在使用函数公式地方看到新加的函数。

自定义函数可以使用groovy原生语法,也可以使用动态加载导入工具类,工具类中可以自由定义函数算法。

例如1:

def LEFT(x,y){return x.take(y)}

此方法使用了groovy语法。

例如2:

import cn.hutool.core.util.ObjectUtil;def EQ(x,y){ return ObjectUtil.equals(x,y)};

此方法使用了hutool工具类。

以此类推,自己在源码中写的工具类也可在此处引入然后调用。

param_count:[0]

dynamic_param:1

import cn.hutool.core.util.NumberUtil;

def ADD(... x) {

Number sum = 0;

for (int i = 0; i

if (x[i] instanceof String) {

x[i] = NumberUtil.parseNumber(x[i])

};

sum = NumberUtil.add((Number) x[i], (Number) sum);

};

return sum;

};

在线demo:https://app.bctools.cn

基础框架开源地址:https://gitee.com/software-minister/jvs

来源:小盒论科技

相关推荐