自定义函数插件开发

编辑
文档创建者:漩涡 (128 )     浏览次数:4391次     编辑次数:24次     最近更新:susie 于 2018-01-18     

目录:

前言编辑

通常在用到FineReport的自定义函数的时候,我们可以通过编译class之后通过函数管理器添加自定义函数,但是这样做有三个缺点:

1. 维护麻烦,每次更新函数,都需要找到class文件所在的目录之后用新的class文件替换掉

2. 自定义函数缺少该函数的使用说明,不知道的人无法正确的使用该函数,提高了沟通成本

3. 传播不方便,在一台机器上使用的自定义函数,如果在另外一台机器上也要使用,需要找到需要拷贝的class文件和functions.xml文件

为了解决这三个缺点,在FineReport V8.0中提供了函数定义的接口,可以通过插件来添加自定义函数

开发过程编辑

关键接口和xml属性

com.fr.stable.fun.FunctionDefineProvider

接口属性:

配置属性名 
描述 
  class自定义函数类名
  name函数名 
  description函数使用描述 


使用方式

<FunctionDefineProvider class="com.fr.plugin.function.MyFunction" name="my" description="函数的描述"/>


plugin.xml内容HTML/XML代码

<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin>     <id>com.fr.plugin.function.collection</id>     <name><![CDATA[自定义函数集合]]></name>     <active>yes</active>     <version>1.1</version>     <env-version>8.0</env-version>     <jartime>2015-09-10</jartime>     <vendor>author</vendor>     <description><![CDATA[自定义函数插件]]></description>     <change-notes><![CDATA[无]]></change-notes>     <extra-core>         <FunctionDefineProvider class="com.fr.plugin.function.MyFunction" name="my" description="拼接两个参数。调用方式:=my(C4, C5)"/> <FunctionDefineProvider class="com.fr.plugin.function.YourFunction" name="you" description="我的函数"/> </extra-core> </plugin>

实现内容(拼接两个字符串)

import com.fr.general.GeneralUtils; import com.fr.script.AbstractFunction; import com.fr.stable.ArrayUtils; import com.fr.stable.Primitive; public class MyFunction extends AbstractFunction { @Override public Object run(Object[] args) { if (ArrayUtils.getLength(args) < 2) { return Primitive.ERROR_VALUE; } return GeneralUtils.objectToString(args[0]) + GeneralUtils.objectToString(args[1]); } }

插件打包和安装编辑

在插件工程目录下执行,详细如何打包插件可查看ANT打包

ant -f build.xml jar

后,会获取到插件安装包,通过设计器安装该插件后,可以在公式编辑器中的“插件函数”项下看到插件函数了

附件列表


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

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

此页面有帮助吗? [ 去社区提问 ]