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

Page tree

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

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

前言

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插件是否处于激活状态false如果不写,该插件会默认处于未激活状态(无法使用插件功能)
hidden插件是否在插件管理器中隐藏false 
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冲突问题
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