自定义函数开发过程

编辑
文档创建者:gxy120313 (61073 )     浏览次数:3337次     编辑次数:6次     最近更新:天狮座 于 2018-05-07     

目录:

1.  描述编辑

场景描述:FineReport已经提供了大量的自带函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定义一些函数。
FineReport函数定义规则:Functionname(Para,Para,...),其中Functionname为函数名,Para为参数。

2.思路编辑

在FineReport中,每一个函数都被定义成一个类,这个类必须要实现Function这个接口,在运算的时候首先通过函数名反射取得这个类,然后调用它的run(Object[] agrs)方法。

3. 操作步骤编辑

3.1 编写函数代码

对于复杂函数,可以在java开发工具(idea,eclipse等)中测试通过后,形成完整java代码

3.2 编译自定义函数

(1)通过java开发工具(idea,eclipse等)编译成class 文件,此处不做编译赘述 

打开eclipse,新建工程:
222
222
右键工程>属性,添加FineReport的jar,具体请参考Eclipse中启动设计器

在src目录下新建class文件:

222
命名为GETIP:
222
将下方代码复制进去,根据提示一步步加载引用直至不报错

package com.fr.function; import java.net.InetAddress; public class GETIP extends AbstractFunction{ @override public Object run(Object[] objects){ try { InetAddress ia = InetAddress.getLocalHost(); return ia.getHostAddress(); } catch (Exception e) { return e.getMessage(); } } public static InetAddress getInetAddress() { } }

不会报错的截图如下:


222



保存Java文件后,工作目录%FR_HOME%\WebReport\WEB-INF\classes\com\fr\function文件夹中会有对应的class文件,即编译成功

(2)通过设计器进行编译(此方式要求本地cmd下javac 编译正常不会报错)
选择菜单服务器>函数管理器,新增一个自定义函数名StringCat,点击编辑,输入代码:

222



代码如下:

package com.fr.function; import com.fr.script.AbstractFunction; public class StringCat extends AbstractFunction { public Object run(Object[] args) { String result = ""; Object para; for (int i = 0; i < args.length; i++) { para = args[i]; result += para.toString(); } return result; } }

确认无误后,点击编译,提示编译成功表示编译已成功,然后点击保存

%FR_HOME%\WebReport\WEB-INF\classes\com\fr\function目录下便会生成StringCat.class文件  

3.4 使用自定义函数

注册好自定义函数后,制作报表时可直接使用了,使用方法与内置的函数是相同的。

具体可参考自定义函数

附件列表


主题: 二次开发
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?