前文鏈接:
在上文圖形化開放式生信分析系統開發 - 5 生信分析流程服務器端運行 解決了設計好的流程在分析服務器上運行的問題,隨之而來就衍生出的新需求:
一、分析流程的批量運行順序
流程輸入文件是按照樣本編號來匹配運行的,運行順序就取決於樣本信息
- 樣本優先級:此處設計樣本錄入時候,輸入優先級字段範圍1-9,數字越大優先級越高
- 樣本順序:樣本默認按照錄入的時間先後排序,相同優先級的樣本數據,按照錄入先後順序排序運行
二、分析流程的過程控制
- 強制停止:開始分析流程之後,可以在任意時間停止分析過程
- 錯誤恢復運行:分析流程運行錯誤,再次運行,可以選擇從錯誤處恢復運行
- 調試恢復運行:分析結束,修改pipeline參數後,可以選擇從任意一點開始重新分析(應用修改後的參數)
- 覆蓋運行:分析錯誤或者正常結束後,重新從頭開始運行整個分析流程,並覆蓋之前的分析結果
技術實現:
一、分析流程的批量運行順序
依賴於樣本的優先級和輸入的順序先後,每次從數據庫取出未完成分析的樣本列表,按照優先級從高到低,樣本輸入先後順序排序。
每次列表中取最上面一個,去指定目錄裏匹配輸入文件,如果輸入文件符合匹配要求,立即啓動pipeline,開始流程分析。同時更新該樣本狀態爲正在分析,這樣下次排序時候就不會重複獲取該樣本了。
其實就是一個帶有優先級參數的先進先出的堆棧
二、分析流程的控制
前文描述瞭如何將設計好的pipeline運行於服務器,如果要監控整個運行過程,就需要創建一個守護線程,如果用戶操作停止分析,這時候守護進程就要終止運行進程,然後報錯並返回。
同時,這個守護線程,要負有和前端通信,統計每個分析任務的運行時間,檢查分析任務輸出是否符合要求等等。
實現效果圖:
-
樣本優先級
-
強制停止
-
錯誤恢復運行
-
調試恢復運行
-
覆蓋運行
您可以下載PPT或加QQ羣: 853718264討論