.NET 開源工作流: Slickflow流程引擎基礎介紹(八) -- 自動化任務調度實現介紹


前言:審批流程中常見的都是人工類型任務,但是也會有一些自動化的任務需要定時觸發。因此,引擎框架中需要解決掉兩個問題:選擇合適的任務調度框架,集成新的任務調度模塊。

1. 任務調度框架選擇

Hangfire 是一個開源的.NET任務調度框架,目前1.6+版本已支持.NET Core。

基於隊列的任務處理(Fire-and-forget jobs)
延遲任務執行(Delayed jobs)
定時任務執行(Recurring jobs)
延續性任務執行(Continuations)

Hangfire用的是開源的NCrontab組件,通過Cron 表達式語法,可以指定非常靈活的定時任務類型。

1) 官方網站地址

https://www.hangfire.io/
2) ASP.NET 網站支持
http://docs.hangfire.io/en/latest/installation.html
包括安裝和部署,數據庫設置等。
安裝步驟說明:
http://docs.hangfire.io/en/latest/installation.html
3) 數據庫

 


在HangFire的NuGet包安裝過程中,HangFire數據庫腳本會自動生成HangFireDB,或者也可以手工生成數據庫。

2. 流程設計器支持CRON表達式編輯

 CRON表達式編輯開源項目地址:

https://github.com/LGX9/cron-expression-editor

 

3. 任務調度模塊(Slickflow.Schedule)

 3.1 流程逾期自動完成

    1) 數據庫字段

     流程實例表WfProcessInstance中有流程實例“逾期時間”和“逾期處理時間”字段信息,用於記錄任務調度數據。

    2) 邏輯描述     

        在流程啟動或者中間狀態時,更新流程實例的逾期時間,這樣后台定時作業任務會檢測流程實例表中有沒有逾期的流程實例,如果存在,則自動設置流程實例為終結狀態。

    3) 任務隊列添加

 

 3.2 流程定時啟動

    1) 數據庫字段

     流程定義表(WfProcess)表中字段包含“是否定時啟動?”和“定時啟動CRON表達式”字段。用於定義定時任務觸發信息。

    2) 定時啟動流程節點

    

 

    3) 加入定時任務隊列

4. 任務調度監視面板(Dashboard)

 

5. 總結

     集成HangFire任務調度框架,使得Slickflow引擎產品可以支持自動處理的節點任務類型,也增強了流程的任務自動化處理能力;同時HangFire組件的健壯性和跨平台性,可以滿足大多數企業級客戶的業務需求和大批量作業調度請求。


免責聲明!

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



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