我需要通过spring批处理作业执行来处理flatfile . 我从文件夹中获取需要处理的文件列表 . 请让我知道如何做到这一点 .
例如:
我在一个文件夹中有 player.csv
和 player1.csv
和 player2.csv
. 我在列表中有这些文件名 . 如果我可以为Jobparameters输入所有这些文件名,请告诉我,以便我可以执行一个Job?
JobParameters jobParameters = new JobParametersBuilder().addString("input.file", "file:player.csv").toJobParameters();
JobExecution execution = jobLauncher.run(job,jobParameters);
assertEquals(ExitStatus.COMPLETED, execution.getExitStatus());
1 回答
有几种方法可以做到这一点; 1.创建一个作业来一次处理一个文件并让你的作业发起者迭代文件并触发作业,一次只传入一个文件2.在你的工作中创建一个'循环'来检查值和处理每个文件
这是后一种选择的一个例子;
首先是作业配置 - 它使用决策程序为要处理的文件构建执行上下文值 . 如果没有更多文件(来自jobParameter),那么它就完成了
这里是决策程序代码(使用内部队列 - 将这个'队列'维护为执行上下文中的字符串可能会更安全,您可以慢慢缩短(手动'弹出'字符串的条目 - 但是为了快速使用队列)
这里是虚拟的“作家”,将文件显示为“书面”
最后单元测试看看是否运行