SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

基於Ant Design Pro 的 Spring Batch Admin - UI

朋友,我是來還債的,我答應你們的Spring Batch Admin,你是不是已經忘記了? 但是鵬哥沒有忘。因為鵬哥女兒才幾個月,所以每天要先哄完女兒睡覺才能抽出來時間做一點,基本上實現一兩個功能點,差不對都到兩點了,有時候遇到難題,一天都不一定能實現一個,所以開發的有點慢。再加上現在女兒不能睡整覺,後半夜又要起來哄女兒睡覺,所以基本每天的真正睡眠時間基本都在4個小時左右,而且還是斷斷續續的。導致最近鵬哥的精神狀態不太好,不過還好終於做出來的。也算對承諾的一個交代。


這個狀態又讓我找到了前幾年的激情,每天為了自己喜歡的事情或者承諾開心的工作到兩點,早上又早起精神慢慢的上班。每天叫你睡覺的不是身體,而是責任,因為你需要活著,每天叫你起床的不是鬧鈴,而是義務,因為你有理想。

項目概述

前端框架:

前端整體使用Ant Design Pro,裡面用到的技術是dua+umi 實現後端請求,react+antd 實現組件,當然ant design pro 提供了更高層次的聚合--區塊(block),一個區塊就是一個模塊模板,這種模板式編程對前端小白來說非常友好。

前端地址:https://github.com/linghuxiong/spring-batch-admin-ui

後端框架:

後端採用的Spring Boot + Maven最為項目的基礎構架框架,這個已經是所有java 項目的標配了,集成Spring Security + oauth2 提供認證和鑑權能力,集成Quartz提供調度能力,集成Spring Data Jpa 提供方便的持久化能力,數據庫採用Mysql。

後端地址:https://github.com/linghuxiong/spring-batch-admin-backend

好了廢話不多說了,這篇我們先感受一下這個前端UI。
前端我們可以分為4個部分:

  • 配置部分
  • 框架運行數據展示
  • 運行狀態展示
  • 用戶和首頁大屏

因篇幅問題,今天介紹第一部分,下一篇介紹後三部分。下下一篇開始介紹後端部分。

配置部分:

配置部分包括觸發器管理和任務管理兩部分。
觸發器管理就是我們定義的觸發規則,比如每天凌晨4點觸發,又比如每隔10秒執行一次等。

進入頁面首先進到查詢頁面,可以按照觸發器名稱(支持模糊)/觸發器分組(支持模糊)/觸發器狀態查詢。同時提供了一下功能操作,如開始/停止一個觸發器,編輯,刪除等。

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

我們 可以新建一個觸發器,新建觸發器需要提供觸發規則,觸發規則可以是cron表達式,也可以是觸發間隔,二者選一個就OK了。

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

修改編輯跟新建觸發器頁面基本一樣,只是多了一個更新時間,更新時間默認是恢的。

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

任務配置

觸發器只是告訴系統應該什麼時候觸發這個動作,但是至於這個動作是做什麼的,需要在任務裡面設置,我們現在假設任務裡面是觸發一個Spring Batch job。在Spring Batch 裡面是實現一些業務功能。

同樣,查詢可以通過一些條件,比如任務名等,描述性的字段都是可以支持模糊查詢的,狀態等確定的字段都是精確查詢。也提供了開始/停止,編輯,刪除等操作。

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

新建任務頁面,需要輸入任務的必要字段,其中註冊名稱指的是我們在代碼裡面定義的Spring Batch的Job 名稱。

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

任務修改頁面增加更新時間字段,字段默認是不可修改,其值是當前時間。

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

代碼解析:

整體代碼可以參考github ,模塊代碼結構如下:

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

  1. 模塊用到的組件,默認 umi block 帶過來的。
  2. 是我新建文件夾,放進去的,默認umi的規則,是加載 / ** /module/ ** 下邊的文件,並把文件名作為module 的key, 這裡其實有個坑,就是比如你需要在項目中添加3個tableList(使用三次 umi add block https://github **** ) 默認是添加同一個使用default 作為key 的 module,這樣就會出現三個module的內容串掉的情況。
  3. 類似於java的entity 文件,定義需要用的模型的結構
  4. service 裡面定義了跟API交互的內容

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

SpringBoot+Security+oAuth2+Jpa+AntDesign+Quartz的批處理系統

因篇幅問題,先介紹這連個模塊,後續在更新其他模塊,可以通過上邊代碼鏈接,先嚐鮮一下。後續章節會介紹開發這個系統的心酸(遇到的都是坑,滿滿的都是淚),希望能給後來一些啟示。


分享到:


相關文章: