自定义函数
应用场景
产品中已经提供了大量的内置函数,但可能仍然无法完全满足用户的需要。
此时用户可以通过增加自定义函数,来满足各种各样的个性化业务需求。
例如:
- 需要计算两个日期之间的工作天数或者假期天数时怎么办?
- 产品中提供了可以计算出给定数据集字段的平均值的函数ds.avg,但若是想获取多个数据集的平均值怎么办?
- 特定的三字码对应特定的中文名字,比如:KMG对应昆明、BSD对应宝山、GAN对应广州,如何将“KMG-BSD-GAN”分别对应转换为“昆明-宝山-广州”呢?
类似以上的种种业务需求都可以通过自定义函数来实现。
自定义函数的特点
用户除了可使用内置函数完成报表设计以外,还可以通过自定义函数接口来扩展原有的函数库,以满足个性化的业务处理需求。
自定义函数通过继承产品提供的函数抽象类接口,实现其中的calculate()方法,来完成自定义的业务计算和处理。
特别的,调用自定义函数时还能够传入多个参数,在calculate()方法可以方便地获取这些参数,用于完成相应的业务逻辑。
自定义函数还具有以下特点:
- 自定义函数属于报表运算层的范畴
- 自定义函数中使用java方法实现业务逻辑
- 自定义函数可以获取到context对象,能够得到web系统中的数据库链接、报表中定义的参数和宏等数据信息
产品提供了普通函数SuperFunction抽象类接口。用户可以基于此接口实现自定义函数类。此外,SuperFunction抽象类中还封装了一个FunctionParam对象。通过FunctionParam对象,可以方便地获取传入自定义函数的参数。
下面将详细介绍自定义函数的使用。