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

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

1. 任務調度框架選擇git

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

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

Hangfire用的是開源的NCrontab組件,經過Cron 表達式語法,能夠指定很是靈活的定時任務類型。express

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表達式編輯3d

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

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組件的健壯性和跨平臺性,能夠知足大多數企業級客戶的業務需求和大批量做業調度請求。

相關文章
相關標籤/搜索