反饋已提交

網絡繁忙

自定义函数开发过程

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,具体请参考 编译Java程序

在 src 目录下新建 class 文件:

222

命名为 GETIP:

222

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


package com.fr.function;
import com.fr.script.AbstractFunction;
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() {
        return null;
    }
}

不会报错的截图如下:

222

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

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

222

代码详见:

https://code.fanruan.com/demo/example/src/branch/persist/10.0/src/main/java/com/fr/function/StringCat.java

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

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


3.4 使用自定义函数

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

具体可参考 自定义函数


附件列表


主題: 原简体文档
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙