xxl job之實現流程任務編排思路

2022-01-09 20:53:46 字數 1496 閱讀 4478

某一天一如既往的上班」旅途「中,我的領導在開早會的時候,說我最近沒啥事,於是讓我研究一下activiti工作流引擎與drools規則引擎,當時也不知道後邊具體要做什麼,管它的,先看看再說。看了幾天後,寫了個簡單的demo出來,結果發現activiti這個東西不就是可以用來做流程審批的嘛;最後我們就開始開發基於activiti的工作流引擎。並且部分功能與定時任務排程中心進行整合,實現了簡單的流程編排任務。

排程中心本身有乙個子任務的概念,但子任務是有先後順序的,所以這裡不太符合需求。在xxl-job的github上我看到過這樣乙個issue:

看來還是很多人想要這個功能呢,目前我們先自己實現乙個簡單的流程任務編排。

因為涉及到了工作流的東西,在此處只簡單介紹一下activiti工作流引擎。

工作流(workflow),就是」業務過程的部分或整體在計算機應用環境下的自動化「,它主要解決的是」使在多個參與者之間按照某種預定義的規則傳遞文件、資訊或任務的過程自動進行,從而實現某個預期的業務目標,或者促使此目標的實現「,簡單的說:工作流將一套大的業務邏輯分解成業務邏輯段,並統一控制這些業務邏輯段的執行條件,執行順序以及相互通訊。實現業務邏輯的分解和解耦。

關鍵概念:

我們在工作流的開發中主要是包裝了服務節點以及網關節點和邏輯節點等內容,讓服務節點類似於乙個http網路請求,觸發微服務的介面,同時等待微服務介面返回內容,放入到流程中,執行後邊的流程。

我在開發排程中心的工作流模式時時通過sdk的方式引入工作流模式,減少系統間的耦合,實現工作流模式後可以做一些簡單的編排任務,比如多個jobhandler的組合執行方式。

下面是方案的設計思路:

大致就是:排程中心與工作流系統之間通過sdk的方式進行通訊,排程中心的任務和工作流的任務是相同概念的,都是一次完整的觸發過程。排程中心的執行器對應於工作流的服務任務節點,在工作流節點端可以配置相應的jobhandler,當要執行定時任務時,會首先通過sdk觸發工作流任務開始執行,然後執行到排程中心端,在排程中心端去觸發相應的業務端相應的jobhandler,達到執行多工的效果。

當任務執行完成後我們去**工作流獲取任務狀態介面以此來同步排程中心任務的執行狀態。

注意點:在我們選擇工作流模式配置定時任務的時候,我們不再需要填寫jobhandler引數,只需要繫結工作流的啟動key即可,作圖的時候直接在服務節點上填寫jobhandler引數。

大體上的思路就是這樣,可能比較粗略還有點抽象...,本來想結合一些實際的頁面ui以及**來說明,但因涉及到公司安全的問題,所以只能這樣了,因為如果我要本地弄這些,工程量實在有點巨大...

本篇文章記錄了一下當時的思路,大致上有這麼一種方式可以來實現簡單功能,但是增加了一些學習成本,比如工作流引擎相關知識

jsplumbWithVue實現流程編排

最近業務需求,通過拖拽,實現流程編排,包括編排元素中的各種屬性,剛開始拿到這個需求,一頭霧水啊,找度娘渡了好久,fq翻了很久,各種部落格csdn搜尋,最終技術選型還是定在了jsplumb,這要感謝 萌級小菜鳥在碼雲上關於jsplumb的貢獻了,基於up主的一些封裝,我做了一些改造和公升級,完全對業務...

linux 之實現定時任務

一.方式一 1 命令列 的方法 一.方式一 需求 每分鐘執行一次 etc 目錄的新增 到 tmp a.txt 中 1 touch a.txt建立檔案 2 crotab e 進行任務的定製 1 ls l etc tmp a.txt 3 檢視定時的任務的內容 cat a.txt 檢視定時的任務 cron...

業務流程編排設計和實現

分享乙個流程編排設計思想 在較為複雜的業務系統中,往往存在著大量的鏈式呼叫或者是各種莫名其妙的 呼叫,同步非同步。在這種情況下,對於系統的維護,和 的接手人員都是不利的,那麼基於此種情況下,就有了一些解決方案。如依賴資料表儲存業務呼叫的,基於硬編碼的等等。在這裡介紹乙個輕量級的流程編排解決方案,基於...