2016-02-17 77 views
0

我有一個要求,使用以下搜索過濾器和結果排序來搜索Spring批量作業執行:名稱,退出狀態,開始日期,結束日期。查找彈簧按執行日期篩選和排序批量作業執行

的JobExplorer API是相當薄的,並且僅使用findJobInstancesByJobName和getJobExecutions意味着獲得整個組在存儲器作業執行的(500.000+),然後過濾/排序並返回一個頁面的25,這是不可能的。

除了直接對Spring批處理表執行本機查詢,還有其他方式來搜索作業執行嗎?


編輯1:

到目前爲止,我有以下代碼:

List<JobExecution> findJobExecutions(String jobName, ExitStatus status, Date start, Date end){ 
      // How to filter by status, and date without getting all in memory? 

      int startRow = 0; 
      int count = 100000; 

      List<JobInstance> instances = jobExplorer.findJobInstancesByJobName(jobName, startRow, count); 
      List<JobExecution> result = instances.stream().map(jobExplorer::getJobExecutions).flatMap(List::stream).collect(Collectors.toList()); 
    } 

SimpleJobExplorer link

回答

0

兩個選項

  1. 您可以Spring Batch Admin console作爲您的作業監視和作業執行狀態。有關安裝和使用情況,請參閱上述鏈接。
  2. 您可以創建自定義Web應用程序來監視您的作業執行狀態。對於這種有效的用法,建議使用彈出式批處理表和模式,它們在documentation中給出。
+0

1. Spring Batch Admin不提供使用指定標準進行搜索的可能性,或者至少我無法找到提供搜索所有已在X日期運行的作業的網頁/ json服務。 2.我有一個自定義的Web應用程序。問題是如何調用現有的API:JobExplorer,JobRepository,JobInstanceDao或任何其他類,以便能夠使用上述條件進行搜索。 –

+0

你用過Spring-batch表嗎? –

+0

我有Spring批處理表,但我想避免,如果可能的話,對這些表進行本機查詢。這將使我的代碼依賴於spring批處理的版本(例如,他們可能會更改列名稱)。但那肯定是一個選擇。 –