反馈已提交

网络繁忙

自定义函数开发过程

  • 文档创建者:gxy120313
  • 历史版本:13
  • 最近更新:RosieY 于 2021-01-06
  • 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后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持