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


背景

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

因為工作流相關的東西在公司的電腦上,公司對於安全保密性十分嚴格,所以本文不闡述具體實現,只記錄一下我當時的實現思路。

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

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

實現思路

概念描述

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

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

關鍵概念:

  • 服務節點:用戶任務,服務任務,接受任務,腳本任務等
  • 網關節點:互斥網關,並行網關等
  • 邏輯判斷節點:類似於if/else

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

思路設計

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

   下面是方案的設計思路:

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

   當任務執行完成后我們去回調工作流獲取任務狀態接口以此來同步調度中心任務的執行狀態。

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

說明

   大體上的思路就是這樣,可能比較粗略還有點抽象...,本來想結合一些實際的頁面UI以及代碼來說明,但因涉及到公司安全的問題,所以只能這樣了,因為如果我要本地弄這些,工程量實在有點巨大...
   本篇文章記錄了一下當時的思路,大致上有這么一種方式可以來實現簡單功能,但是增加了一些學習成本,比如工作流引擎相關知識


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM