前言:審批流程中常見的都是人工類型任務,可是也會有一些自動化的任務須要定時觸發。所以,引擎框架中須要解決掉兩個問題:選擇合適的任務調度框架,集成新的任務調度模塊。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組件的健壯性和跨平臺性,能夠知足大多數企業級客戶的業務需求和大批量做業調度請求。