【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

前言

FineReport/FineBI的插件包,都是以一个zip文件的形式存在的,zip文件的结构如下所示

--------xx.name.zip
    ----plugin.xml
    ----xx.name.plugin.jar
    ----zz.jar
    ----yy.jar 

其中plugin.xml是记录插件的摘要信息,xx.name.plugin.jar是由插件的源代码编译成的class文件打包成的jar文件,而zz.jar和yy.jar则是插件依赖的非fine-xxx开头的第三方jar包。这一节我们重点介绍plugin.xml的内容。

plugin.xml

plugin.xml是一个标准的xml文件,根节点为<plugin></plugin>,其子节点包含下表项:

节点名含义默认值备注
id插件的唯一标志符所有的插件id都不应该出现重复
main-package插件中class的包名com.fr.plugin如果插件代码都在com.fr.plugin包下,则不需要这个属性,否则就需要利用这个属性来声明插件的包名
name插件的名字该名字会在插件管理器以及帆软市场中显示
active插件是否处于激活状态no如果不写,该插件会默认处于未激活状态(无法使用插件功能)
hidden插件是否在插件管理器中隐藏no
version插件版本每次更新插件,需要手动改动这个版本号
env-version插件适配的报表版本一般为10.0
app-version插件适配的移动端版本仅移动端插件需要该属性
jartime插件适配的jar版本只有jar包的build日期大于插件要求的时间,插件才能正常运行
 vendor插件作者
description插件的简要描述信息
change-notes插件的更新信息一般以倒序来写更新信息,方便查看插件最近的更新内容
extra-core核心模块下的接口接入点
extra-decision平台模块下的接口接入点
extra-schedule定时调度模块下的接口接入点
extra-mobile移动端模块下的接口接入点
extra-report报表模块下的接口接入点
extra-form决策报表模块下的接口接入点
extra-chart图表模块下的接口接入点
extra-design设计器模块下的接口接入点
extra-chart-design设计器图表模块下的接口接入点
extra-analyseBI模块下的接口接入点
function-recorder插件功能点类接入点
lifecycle-monitor插件生命周期类接入点
prefer-packages插件优先依赖目录用于解决插件依赖jar和主工程中jar冲突问题,子标签:prefer-package
dependence插件依赖信息接入点
attributes插件自定义属性
move-after-install插件安装后会执行的一些文件移动操作

dependence

插件之间也可以有依赖,例如插件A(id为com.test.a)、B(id为com.test.b)依赖了插件X(id为com.test.x),这个时候,可以在A或者B的plugin.xml的dependence属性来描述

<dependence>
  <item type="plugin" key="com.test.x"/>
</dependence>

通过这样的描述,在安装插件A或者B的时候,就会提示需要先安装插件X(如果是从帆软市场安装的,会自动先安装依赖的插件)。

attributes

插件的接入点文件中,也可以存储一些可变的配置。这些可变的配置,就是在attibutes节点下增加自定义的配置属性,如下所示:

<attributes>
   <encode name="你好,世界"/>
</attributes>

然后在插件中,就可以通过上下文获取该配置属性

PluginXmlElement xml = PluginContexts.currentContext().getXml().getElement(PluginElementName.Attributes);
String name = StringUtils.EMPTY;
if (xml != null) {
     List<PluginXmlElement> children = xml.getChild("encode");
     if (children != null && !children.isEmpty()) {
          name = children.get(0).getAttribute("name");
     }
}
System.out.println(name);

这样就能在插件中获取到自定义的配置属性,并在控制台输出:你好,世界。

  • No labels