複雜業務流程監控(基於Apache ODE)

流程運行狀況的監控是實際流程執行過程中不可缺少的功能模塊,因爲在實際的執行過程中,需要觀察階段性的執行結果對流程實例進行終止、掛起等操作,還有對於不斷改變設計版本的流程需要卸載舊版本流程定義,同時激活新的流程定義。

首先來看對整個系統的運行情況監控,這主要是指對系統所有已部署流程的監控。包括查看流程個數、實例個數、某流程定義文件、部署文件等。它的實現方式也很簡單,在第三章的持久化小節中,我們說到所有的流程信息和實例信息都通過持久化層儲存到數據庫中,在這裏我們只需要將持久化信息取出,並展現給用戶便可以。

接下來是流程實例的監控,用戶希望知道某次流程執行的實時情況,類似於程序的調試過程,可以查看流程執行過程中發送的信息、變量值和調用哪個Web服務,甚至暫停和繼續執行實例等。這對於複雜流程的設計成功起着非常重要的作用,因爲複雜流程設計難免出現紕漏,如果不能隨着流程的實際執行過程進行調試,那麼很難查找出流程運行過程中出現的問題、以及耗費時間最久的活動,並最終根據這些信息對流程進行改進。而監控正在運行的流程實例有一定的難度,處於運行態的流程實例只出現在引擎的內存空間中,其所有的當前執行信息都保存在流程定義對象中,而且這樣的對象個數可能非常龐大(視流程所涉及的標籤個數和標籤被調用次數而定),如果通過讀取這些對象的信息來獲得實例運行狀態,那麼在用戶請求的時刻就需要將該流程沿着它的路徑再重新走一遍,來確定流程的執行狀況。這無疑會增加系統負擔,影響整體性能。

在本系統中,我們並沒有設計實現具體的實例監控端,因爲用戶的需求不同可能會構建不同的監控平臺(基於網頁或客戶端形式的),而是通過實例執行過程中不斷觸發不同的事件來監控流程運行。用戶可以通過配置來指定所有事件的監聽器來處理事件,如果只對某類事件感興趣則只實現部分的監聽器即可,配置好自己的監聽器之後當流程運行過程中觸發了該事件,就可以根據所截獲的事件數據類型來判斷流程當前的執行狀況。事件中所包含的基本數據信息包括流程名稱、流程ID、實例名稱(流程名稱加隨機字串)、所觸發的活動類型、觸發時間、流程變量以及發送的內部消息格式等。用戶拿到這些信息,同時結合流程定義,便可以判斷當前實例的運行情況。


至於流程實例的生存週期管理的操作(暫停、恢復執行、終止等)的實現方法,其實在第三章流程運行小節中已經進行了簡單介紹。在本系統中流程實例的執行過程,被分成了兩個操作隊列,一個是所定義的標籤執行隊列,另一個是所對應的回調隊列。流程生存週期管理暫停、恢復執行、終止所對應的操作便是對這兩個隊列分別進行序列化、反序列化和清空的操作。這樣便實現了實例運行狀況的監控,用戶可以使用系統預留的接口自定義所需的消息處理器,在獲得消息數據之後經過用戶系統加工,便可以形成一個流程系統監控程序,對設計的流程進行簡單調試,加速流程設計的速度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章