自定义函数使用步骤
用户在使用自定义函数时,可按以下步骤进行:
- 首先基于接口实现自定义函数类
- 然后将自定义函数类进行部署登记,并在报表中进行使用
下面结合一个简单示例来详细说明自定义函数的具体使用。
该示例的应用场景为:需要增加一个自定义函数在报表使用,该函数的功能是能够调用java的工具类UUID,生成一个唯一的字符串。
第一步:实现自定义函数类
根据业务需要,创建一个名称为Uuid的java类,该类继承SuperFunction抽象类,实现其中的calculate()方法,在方法中使用java工具类UUID生成唯一的字符串并返回。
自定义函数实现类Uuid.java的具体代码如下:
package com.api;
import java.util.UUID; //根据本示例的业务需要引入的java工具类
import com.runqian.report4.model.expression.SuperFunction; //必须引入的普通函数基类
import com.runqian.report4.usermodel.Context; //必须引入的类
public class Uuid extends SuperFunction{//Uuid是该自定义函数的类名
//实现calculate方法,方法中调用java的工具类UUID,生成唯一字符串并返回
public Object calculate(Context ctx, booleanisInput){
String s = UUID.randomUUID().toString();
String value = s.substring(0, 8) + s.substring(9, 13) +
s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
return value;
}
}
第二步:部署与调用自定义函数
实现的自定义函数类必须进一步在产品中进行部署、登记注册,然后才能使用。
具体如下:
部署自定义函数类
首先,将自定义函数类编译后的class文件存放至应用【WEB-INF/classes】的相应目录下,注意目录路径必须包含包名。
例如本示例中定义的自定义函数类为com.api.Uuid,位于【com.api】包内,所以编译后的Uuid.class必须存放至【WEB-INF/classes/com/api/】目录下,如下图:
登记自定义函数
接着,在产品的自定义函数配置文件customFunctions.properties中,对函数进行登记。
配置文件路径:\WEB-INF\classes\config\customFunctions.properties
如下图:
函数登记规则
函数登记的作用是设置调用自定义函数时所使用的函数名、函数类型以及对应的函数实现类。
登记规则如下:
函数名=函数类型,函数实现类
注意:
-
函数类型为0或1,0表示普通函数,1表示数据集函数
-
函数实现类必须为类的完整路径名
例如本示例中,将函数登记为:
getUuid=0,com.api.Uuid
重启应用
最后,还需要将应用重启,把部署登记好的自定义函数最终注册到系统中,供用户进行使用。
报表中如何调用自定义函数
自定义函数可以在报表单元格、单元格属性等支持表达式设置的地方进行使用。
调用方式是在表达式中书写函数登记时设置的函数名即可。如果自定义函数需要传入参数,则直接在括号内写入参数即可,并且参数可以是产品支持的表达式。
functionName(arg1, arg2, ...)
例如下图所示,是在报表的A1单元格中书写表达式:=getUuid(),来调用本示例中实现的自定义函数。由于该函数不需要使用参数,所以括号内无需写参数。
示例效果展示
下图显示了在报表中使用自定义函数Uuid获得的字符串: