記開發證照借閱系統的全部流程,主要說下實現方案和難點(專案其他部分非常簡單,不再贅述)
1.借閱審批,基於工作流引擎實現
2.打水印,主要在pdf,和上列印有限時間和事由
3.訊息佇列與樂觀鎖,處理高併發下原件的競爭問題(類似於搶購系統1000執行緒競爭2個資源)
系統間關係圖,
1.使用者在文件管理平台查詢並借閱檔案,根據借閱檔案分發成多個工作流,組裝工作流需要的必要引數,呼叫工作流引擎發起,
3.審批完成後,呼叫文件管理平台介面,回寫使用者借閱檔案狀態(提醒申請人審批完成),
4.打水印打包
我間斷的做了4年的工作流二次開發(在現有引擎下,實現業務邏輯),做過k2,奧哲h3,開源的有ccflow,roadflow
我最終選用引擎為ccflow,roadflow商業使用有些限制,開源的版本與最新版本差距太大,原始碼基本就參考作用。
詳情我會開另一篇隨筆,介紹ccflow開發
解決方式引入訊息佇列activitymq,使用者發起後,將借閱的資訊入隊,只要入隊成功就向使用者反饋發起成功(0.5s左右),在非同步消費時,完全結束後,再向使用者發郵件,表明借閱的成功或失敗。
另乙個使用訊息佇列位置是文件管理平台的審批狀態**介面,審批者是批量審批,所以在一瞬間可能回寫幾百份檔案,在此處引入訊息佇列,按照伺服器效能配置,併發的出隊執行緒數,避免水印io崩潰或管理平台資料庫死鎖
文件管理平台另乙個功能是借閱原件,原件有嚴格的份數,乙個人如果借出了,另乙個就無法借閱。客戶的業務人員需要大量借閱原件,保證自己的績效和專案進度,這已經超出正常的檔案管理系統範疇,借閱時間差小於1ms,普通的頁面級表單鎖已經無法滿足,我們參考了網上主流的搶購系統,引入了redis樂觀鎖,效果拔群!
永遠不要低估客戶隨口提一句的需求,帶來的難點和工作量
刪除乙個工作流
刪除乙個工作流 delete from wfprocess t where t.processname wotracking and t.processrev 18 delete from wfsubprocess t where t.processname wotracking and t.pro...
乙個工作流的業務例子
乙個工作流的業務例子 學工作流要有例子,憑空想像的例子與真實的應用是有差距的,看了一下以前幹過的例子,工控涉汲硬體控作不適業當例子。有些業務性又太強,光理解業務就要好久。發現這個與行政許可相關的例子還不錯,與日常生活也比效接近,就把業務遊程圖與系統流程圖傳上來了。以下檔案是jpg格式,只是將副檔名改...
乙個工作流的業務例子
乙個工作流的業務例子 學工作流要有例子,憑空想像的例子與真實的應用是有差距的,看了一下以前幹過的例子,工控涉汲硬體控作不適業當例子。有些業務性又太強,光理解業務就要好久。發現這個與行政許可相關的例子還不錯,與日常生活也比效接近,就把業務遊程圖與系統流程圖傳上來了。以下檔案是jpg格式,只是將副檔名改...