反饋已提交
網絡繁忙
定时任务执行后,根据执行结果判断是否将该结果文件导出并上传到 ftp 站点,应该怎么实现呢?
定义一个 Java 类文件,在类文件中进行结果判断,符合条件的则上传到 ftp 服务器。
在定时任务「文件处理」步骤中,勾选自定义附件处理,选择自定义的类文件。
编写 Java 类,继承 OutputActionHandler<OutputClass>接口,如下所示:
package com.fr.output;import com.fr.schedule.base.bean.output.OutputClass;import com.fr.schedule.base.bean.output.OutputFtp;import com.fr.schedule.base.constant.ScheduleConstants;import com.fr.schedule.feature.output.FTPHandler;import com.fr.schedule.feature.output.OutputActionHandler;import com.fr.stable.Filter;import java.util.ArrayList;import java.util.List;import java.util.Map;public class FTPUpload extends OutputActionHandler<OutputClass> { private FTPHandler handler = new FTPHandler(); @Override public void doAction(OutputClass action, Map<String, Object> map) throws Exception { OutputFtp ftp = new OutputFtp(); ftp.setServerAddress("192.168.1.45"); ftp.setPort(String.valueOf(21)); ftp.setSavePath("test"); ftp.setUsername("admin"); ftp.setPassword("123456"); action(ftp, map, new Filter<String>() { @Override public boolean accept(String s) { // TODO: 2018/8/23 过滤 return true; } }); } private void action(OutputFtp ftp, Map<String, Object> map, Filter<String> filter) throws Exception { String[] files = (String[]) map.get(ScheduleConstants.OUTPUT_FILES); List<String> fileList = new ArrayList<String>(); for (String file : files) { if (filter.accept(file)) { fileList.add(file); } } map.put(ScheduleConstants.OUTPUT_FILES, fileList.toArray(new String[0])); handler.doAction(ftp, map); }}
编译类文件,将生成的FTPUpload.class放在%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\output文件夹下。
注: 类文件放的位置只需与编写类文件里的「package」位置对应即可。
注:ftp 的信息根据用户实际的 ftp 服务器填写。
注:「调度对象」步骤中,该方法不支持在「调度结果」右侧勾选除通用结果外,根据默认用户组内的用户单独生成结果。
1)定时调度任务步骤请参考 自定义上传文件至磁盘 中的 2.2.1 章、2.2.2 章、2.2.3 章、2.2.4 章。
2)点击下一步,勾选自定义附件处理,选择本文 2.1 章节中的FTPUpload.class文件,点击保存。如下图所示:
如下图所示:
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉