文·原創/朱季謙 工作流是一個針對企業用戶、開發人員、系統管理員的輕量級工作流業務管理平臺,其核心是使用Java開發的快速、穩定的BPMN2.0流程引擎。在我們日常開發當中,例如oa系統里的請假功能,採購流程,以及訂單流程,等等,都會涉及到流程的開發,這裡面可以用工作流來進行開發,可以起到快速開發且 ...
文·原創/朱季謙
工作流是一個針對企業用戶、開發人員、系統管理員的輕量級工作流業務管理平臺,其核心是使用Java開發的快速、穩定的BPMN2.0流程引擎。在我們日常開發當中,例如oa系統里的請假功能,採購流程,以及訂單流程,等等,都會涉及到流程的開發,這裡面可以用工作流來進行開發,可以起到快速開發且穩定的效果,筆者最近都在研究工作流,也對這個東西有很大的興趣。
最近因公司業務需要,需將Activiti Modeler的web線上設計器集合到公司一套Spring+SpringMVC+hibernate框架里,這是我第一次玩工作流的線上設計器,先前都只是在eclipse上安裝工作流的插件進行流程圖的設計以及開發,所以,整合線上設計器,在這個過程當中還是遇到了不少坑。其中有一個是亂碼問題,也就是整合完成之後,運行項目時,在點擊路徑localhost:8080/activiti/modeler.jsp?modelld=1跳轉到Activiti線上設計器頁面時,原以為下一秒可以看到帶有很多圖標的設計器頁面,但萬萬沒有想到的是,竟然出現了這樣一個東西——
你沒有看錯,整張頁面的title部分,都變成問號了!
當時我的表情可以說是一臉矇蔽,懵逼之後就開始冷靜下來,準備看看究竟是哪裡出現了問題。
經過一番刻骨銘心的檢查後,發現這些頁面上的數據來源原來是從一個stencilset.json里獲取到的,這個json文件是Activiti modeler自身帶的,具體內容如下截圖所示——
在控制層,訪問這個stencilset.json的方法是長這樣的——
找到這個訪問json的方法後,我試著測了一下,發現在谷歌瀏覽器頁面上顯示這個json文件的數據也是亂的,中文的地方都出現了一個個問好,問號對應的正好就是web設計器頁面上的亂碼。
根據這個現象,可以確定亂碼問題就出在訪問這個json文件出錯之上。
在上面的截圖中,類StencilsetRestResource的方法getStencilset中,返回的是一個String類型,在Activiti Modeler源碼里,會自動將String類型轉換成Json格式的數據,但是,該字元串數據若出現以下亂碼情況,轉換就會出現問題,就會導致頁面也跟著亂碼,所以,解決的辦法是保證方法getStencilset讀取stencilset.json不出現以下亂碼問題,而是以正常的json字元串格式——
解決辦法——在Spring-MVC.xml文件裡加這樣一段編碼設置,就可以解決該問題了,這樣訪問的json字元串就不會出現亂碼,頁面上也可以正常運行了。
最後截取一張成功後的Activiti Modeler線上設計器頁面圖片——