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

Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

一、特殊名词介绍

二、背景、场景介绍

对于单个类型的导出处理,通常我们都选择了ExportOperateProvider接口实现。但是如果我们需要对所有的报表导出都做某些特殊的操作,诸如对所有的导出信息推送、对导出的文件进行加密、备份等等操作时。我们需要一个更为统一的接口。那么在早期的帆软报表中就提供了ExportExtensionProcessor接口。该接口可以对所有的cpt类型的报表导出场景进行统一的拦截和处理。因为接口开得比较早,早期的决策报表是不支持导出的,所以这个接口也只能处理cpt报表的导出。

三、接口介绍

Code Block
languagejava
themeEclipse
firstline1
titleFormExportProcessor.java
linenumberstrue
package com.fr.form.stable;

import com.fr.stable.fun.mark.Immutable;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 表单导出接口, 通过传不同的format来导出Excel, pdf等等
 *
 * Created by Administrator on 2015/12/18 0018.
 */
public interface FormExportProcessor extends Immutable {

    String MARK_STRING = "FormExportProcessor";

    int CURRENT_LEVEL = 3;

    /**
     * 进行导出
     *
     * @param req       http请求
     * @param res       http应答
     * @param sessionID 会话ID
     * @throws Exception
     */
    void dealWithExport(HttpServletRequest req, HttpServletResponse res, String sessionID);

}


四、支持版本

产品线

版本

支持情况

备注

FR8.0支持
FR9.0支持
FR10.0支持
BI3.6支持不支持BI的仪表板
BI4.0支持不支持BI的仪表板
BI5.1支持不支持BI的仪表板
BI5.1.2支持不支持BI的仪表板
BI5.1.3支持不支持BI的仪表板

五、插件注册

Code Block
languagexml
themeEclipse
firstline1
titleplugin.xml
linenumberstrue
<extra-form>
        <FormExportProcessor class="your class name"/>
</extra-form>


六、原理说明

决策报表预览时,后台通过Formlet#dealWeblet调用了FormletDealWith#dealWithFormlet方法进行计算响应。在这个dealWithFormlet中,如果请求中包含了format参数,则会单独走导出处理,获取到插件中定义的决策报表导出类申明并执行响应。

七、特殊限制说明

该接口是Immutable的,也就是是独占的,如果多个插件都有使用到,那么只会生效其中的一个。如果没有插件使用这个接口,标准产品的决策报表默认是不支持任何导出的

因为接口开在了整个导出的入口,所以会影响到所有其他的报表导出相关的接口,使用的时候需要非常谨慎。除特殊情况开发者尽量不要选择这个接口,容易跟其他插件产生冲突。【注:该接口仅用于一般定制,新商城插件严禁使用这个接口,避免造成大面积冲突

该接口仅对cpt报表有效。

八、常用链接

demo地址:demo-export-extension-processor

com.fr.report.fun.ExportOperateProvider

九、开源案例

免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。

暂无