自定义函数使用步骤- 自定义函数-客户化文档
目录

自定义函数使用步骤

用户在使用自定义函数时,可按以下步骤进行:

下面结合一个简单示例来详细说明自定义函数的具体使用。

该示例的应用场景为:需要增加一个自定义函数在报表使用,该函数的功能是能够调用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

如下图:

函数登记规则

函数登记的作用是设置调用自定义函数时所使用的函数名、函数类型以及对应的函数实现类。

登记规则如下:

函数名=函数类型,函数实现类

注意:

例如本示例中,将函数登记为:

getUuid=0,com.api.Uuid

重启应用

最后,还需要将应用重启,把部署登记好的自定义函数最终注册到系统中,供用户进行使用。

报表中如何调用自定义函数

自定义函数可以在报表单元格、单元格属性等支持表达式设置的地方进行使用。

调用方式是在表达式中书写函数登记时设置的函数名即可。如果自定义函数需要传入参数,则直接在括号内写入参数即可,并且参数可以是产品支持的表达式。

functionName(arg1, arg2, ...)

例如下图所示,是在报表的A1单元格中书写表达式:=getUuid(),来调用本示例中实现的自定义函数。由于该函数不需要使用参数,所以括号内无需写参数。

示例效果展示

下图显示了在报表中使用自定义函数Uuid获得的字符串: