Skip to content

Latest commit

 

History

History
58 lines (38 loc) · 4.22 KB

导出样例及文档说明.md

File metadata and controls

58 lines (38 loc) · 4.22 KB

导出

前期准备

定义几个导入导出用到的POJO分别对应QUERY/VIEW/DATA三个泛型

基本过程

第1步,实现导出Processor

参考代码:com.alibaba.ageiport.test.processor.core.exporter.ExcelStyleExportProcessor

  1. 实现ExportProcessor接口,并使用上文定义POJO Query、Data、View作为接口的泛型参数
  2. 实现ExportProcessor接口的TotalCount方法,根据Query返回当前导出的总条数(比如根据Query构造Select Count SQL,并返回Count值)
  3. 实现ExportProcessor接口的queryData方法,根据Query返回当前分页的实际数据(比如根据Query构造Select ... limit n,m SQL,并返回数据行),如果TotalCount有10000,分片大小默认为1000,则queryData方法会被并行调用10次,入参BizExportPage会携带不同分页信息。
  4. 实现ExportProcessor接口的convert方法,根据页面展示规则,把queryData返回的Data列表转为View列表。View列表会最终输出给用户。

第2步,注册第1步实现的导出Processor

  1. 项目目录的resources文件夹下创建META-INF文件夹
  2. META-INF文件夹下创建名为com.alibaba.ageiport.processor.core.Processor的文本文件
  3. 添加一行配置记录:StandaloneExportProcessor=com.alibaba.ageiport.test.processor.core.exporter.StandaloneExportProcessor,其中等号左侧为ExportSpecification中的code,等号右侧为导出实现类的全类名

第3步,运行单元测试,执行任务

此步骤实际生产环境中一般由API触发,用户在页面点击触发执行导出任务

  1. 初始化AgeiPort实例,在单测中为了尽可能少的依赖外部组件,我们使用AgeiPortOptions.Debug()测试配置来初始化AgeiPort实例。若为生产环境,AgeiPort实例应被维护到应用的上下文中,比如在Spring的Configuration中初始化AgeiPort并作为一个bean存储在Spring上下文中。
  2. 构造查询参数TaskExecuteParam,必须传入:TaskSpecificationCode,标识某一个任务);BizUserId标识当前任务的触发人,上文定义的Query对象需要以JSON的格式传入。
  3. 调用本地方法executeTask,开始执行任务,并获取任务实例ID。用户可根据自身技术线路封装远程调用接口。processor包中也包含了可远程执行任务的HTTP API,详情见:API参考文档。
  4. 使用内部封装的TaskHelp方法判断任务是否执行成功,TestHelp类主要是封装了一些判断任务执行状态的断言,在后文中给出代码
  • 调用本地接口创建任务参考代码:com.alibaba.ageiport.test.processor.core.exporter.StandaloneExportProcessor
  • 调用HTTP接口创建任务参考代码:com.alibaba.ageiport.test.processor.core.api.HttpApiTest

第4步,查询任务进度,下载导出文件,见assertWithFile方法

此步骤生产环境中一般由API触发,在用户触发任务后,页面自动轮询任务进度,最终将生成的文件返回给用户,详见API参考文档。

参考代码:com.alibaba.ageiport.test.processor.core.TestHelper.assertWithFile

  1. 创建进度查询请求参数GetTaskProgressParam,其中MainTaskId为上文创建任务返回的任务ID
  2. 调用本地方法,查询任务进度。用户可根据自身技术线路封装远程调用接口。processor包中也包含了可远程执行任务的HTTP API,详情见:API参考文档。
  3. 轮询任务进度,直至任务完成或出错
  4. 任务完成后,查询任务实例信息,任务输出的文件信息
  5. 下载文件到本地
  6. 断言判断产生的文件是否符合期望

单机导出

方式一:ExportSpecification中通过executeType属性指定,默认值为"STANDALONE"即为单机执行 方式二:通过实现接口com.alibaba.ageiport.processor.core.task.exporter.ExportProcessor#taskRuntimeConfig返回ExecuteType的值为" STANDALONE",可动态设置执行方式,此方式优先级比方式一高

多机导出

方式一:ExportSpecification中通过executeType属性指定,设置为"CLUSTER"即为多机执行 方式二:通过实现接口com.alibaba.ageiport.processor.core.task.exporter.ExportProcessor#taskRuntimeConfig返回ExecuteType的值为"CLUSTER",可动态设置执行方式,此方式优先级比方式一高