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

Page tree

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

Skip to end of metadata
Go to start of metadata

定时任务默认可选的导出文件类型可行包含:excel、word和pdf,如果希望支持更多其他的类型,就可以使用这个接口来实现。

接口内容

该接口包含Java和JavaScript部分,下面分别介绍两部分接口内容和使用说明。

Java部分的接口
 package com.fr.schedule.plugin;

import com.fr.main.workbook.ResultWorkBook;
import com.fr.stable.fun.mark.Mutable;

import java.io.File;
import java.io.OutputStream;

/**
 * Created by richie on 2016/10/31.
 * 定时任务导出类型接口
 * 可以通过实现该接口添加更多的导出方式
 */
public interface OutputFormatProvider extends Mutable {

    String MARK_STRING = "OutputFormatProvider";

    int CURRENT_LEVEL = 1;


    /**
     * 需要是2的指数倍,作为类型标记记录到数据库中
     * @return 标记数字
     */
    int markNumber();

    /**
     * 用于桥接Java和JavaScript的标记
     * @return 标记符
     */
    String markString();

    /**
     * 文件后缀名
     * @return 返回后缀名
     */
    String fileSuffix();

    /**
     * 把结果报表导出到输出流中
     */
    void flush(OutputStream out, ResultWorkBook result) throws Exception;

    /**
     * 是否包含了当前的导出方式
     * @param format 总的导出格式记录
     * @return 如果当前方式自持则返回true,否则返回false
     */
    boolean accept(int format);

    /**
     * 过滤符合条件的文件
     * @param files 全部文件
     * @return 符合条件的文件
     */
    File filterFiles(File[] files);

}

注意:markNumber方法的返回值必须是大于4并且为2的N次幂。

实例实现类

实例实现类(导出CSV)
 public class CsvOutput extends AbstractOutputFormatProvider {
    @Override
    public int markNumber() {
        return 8;
    }

    @Override
    public String markString() {
        return "isConvertToCsv";
    }

    @Override
    public String fileSuffix() {
        return ".csv";
    }

    @Override
    public void flush(OutputStream out, ResultWorkBook result) throws Exception {
        new CSVExporter().export(out, result);
        out.flush();
        out.close();
    }
}
JavaScript接口部分
FS.Plugin.OutputformatProvider = {
    version: 1.0,
    items: []
}; 

实例实现

/**
 * 定时任务导出类型接口的一个实现,作为参考示例
 */
FS.Plugin.OutputformatProvider.items.push({
    text : function () {
        return 'csv';
    },
    markString: function () {
        return 'isConvertToCsv';
    },
    markNumber : function () {
        return 8;
    }
});

注意:Java接口实现类和JavaScript实现类中相同名字的方法,返回值也要相同。

接入方式

<extra-platform>
   <extra-schedule>
       <OutputFormatProvider class="com.fr.plugin.xxx.YourClassName"/>
   </extra-schedule>
</extra-platform> 

源码实例

如果你希望查看完整的源码,请看这里:http://cloud.finedevelop.com:2015/projects/PB/repos/plugins-free/browse/plugin-scheduleoutput?at=refs%2Fheads%2Fdev

  • No labels

1 Comment

  1. 源码看不了