簡體   English   中英

查詢Spring批處理中的批處理作業元數據

[英]Query batch job metadata in Spring batch

我想從與BATCH_JOB_INSTANCE表連接的BATCH_JOB_EXECUTION表中獲取10條最新記錄。

那么如何訪問這些表呢?

在這個應用程序中,我使用了Spring Data JPA。 這是另一個使用Spring Batch並創建這些表的應用程序。 換句話說,我只想運行一個JOIN查詢並將其直接映射到我的自定義對象,只需要必要的字段。 盡可能,我想避免為這兩個表制作單獨的模型。 但我不知道這里最好的方法。

如果您想從Spring Batch代碼中執行此操作,則需要使用JobExplorer並在START_TIMEEND_TIME上應用過濾器。 或者,只需使用JDBC將帶有所需JOINSQL查詢發送到數據庫。 可以在此處找到元數據表的DDLs

編輯

如果你想在SpringBatch中嘗試這樣做,我想你需要迭代JobExecutions並找到你感興趣的那些,然后做你的事情))。 喜歡:

List<JobInstance> jobInstances = jobExplorer.getJobInstances(jobName);

for (JobInstance jobInstance : jobInstances) {
    List<JobExecution> jobExecutions = jobExplorer.getJobExecutions(jobInstance);
    for (JobExecution jobExecution : jobExecutions) {
        if (//jobExecution.getWhatever...)) {
        // do your thing...
        }
     }
} 

祝好運!

由於JobExplorer不再具有接口.getJobInstances(jobName) ,我已經完成了這個(使用BatchStatus作為條件的這個例子)適應了流:

List<JobInstance> lastExecutedJobs = jobExplorer.getJobInstances(jobName, 0, Integer.MAX_VALUE);

Optional<JobExecution> jobExecution = lastExecutedJobs
                                .stream()
                                .map(jobExplorer()::getJobExecutions)
                                .flatMap(jes -> jes.stream())
                                .filter(je -> BatchStatus.COMPLETED.equals(je.getStatus()))
                                .findFirst();

要返回N個元素,您可以使用其他流的容量(limit,max,collectors,...)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM