在上文 生信分析雲平臺產品開發 - 5 生信分析pipeline伺服器端執行 解決了設計好的流程在分析伺服器上執行的問題,隨之而來就衍生出的新需求:
一、批次分析流程的執行順序
流程輸入檔案是按照樣本編號來匹配執行的,執行順序就取決於樣本資訊
樣本優先順序:此處設計樣本錄入時候,輸入優先順序欄位範圍1-9,數字越大優先順序越高
樣本順序:樣本預設按照錄入的時間先後排序,相同優先順序的樣本資料,按照錄入先後順序排序執行
二、分析流程的過程控制
強制停止:開始分析流程之後,可以在任意時間停止分析過程
錯誤恢復執行:分析流程執行錯誤,再次執行,可以選擇從錯誤處恢復執行
除錯恢復執行:分析結束,修改pipeline引數後,可以選擇從任意一點開始重新分析(應用修改後的引數)
覆蓋執行:分析錯誤或者正常結束後,重新從頭開始執行整個分析流程,並覆蓋之前的分析結果
技術實現:
一、批次樣本分析流程的執行順序:
依賴於樣本的優先順序和輸入的順序先後,每次從資料庫取出未完成分析的樣本列表,按照優先順序從高到低,樣本輸入先後順序排序。
每次列表中取最上面一個,去指定目錄裡匹配輸入檔案,如果輸入檔案符合匹配要求,立即啟動pipeline,開始流程分析。同時更新該樣本狀態為正在分析,這樣下次排序時候就不會重複獲取該樣本了。
其實就是一個帶有優先順序引數的先進先出的堆疊
二、分析流程的控制
前文描述瞭如何將設計好的pipeline運行於伺服器,如果要監控整個執行過程,就需要建立一個守護執行緒,如果使用者操作停止分析,這時候守護程序就要終止執行程序,然後報錯並返回。
同時,這個守護執行緒,要負有和前端通訊,統計每個分析任務的執行時間,檢查分析任務輸出是否符合要求等等。
實現效果圖:
樣本優先順序
強制停止
錯誤恢復執行
除錯恢復執行
覆蓋執行