activiti 5.19整合modeler在线编辑器
心得:想要做一件事,首先得清楚這件事的本質。
最開始學習activiti,我與大家都一樣,徘徊在如何與業務系統對接,如何整合modeler實現在線編輯。當我花了1周時間高強度學習后,我發現,一開始想得太多了。
最初階段,我應該先讓activiti跑起來,然后與業務系統對接,弄清楚activiti的各種實現原理后,最后來整合modeler才是最好的方式。因為這個時候你已經明白了modeler與工作流引擎之間的關系,你知道應該怎么做,你的方向在哪里。
這可能就是為什么網上的教程,每一個都是直接從測試類開始,只告訴大家如何進行流程流程,而不是一上來就告訴大家怎么整合與使用modeler的因為吧。
下面,就開始整合modeler,如果過程中有不對的或者有疑問的地方,歡迎指導與探討。
所以,我的教程也是基于你已經有一個能夠運行activiti的項目基礎上。
1、什么是modeler
modeler是activiti的一個在線編輯流程插件,通俗的說,它就是一個頁面,不過這個頁面包含了很多的控制以實現我們的目的。
2、在線編輯原理
很多人一開始可能會被“流程在線編輯”這幾個字誤導,認為modeler編輯的是流程,其實不然,編輯器編輯的只是一個Model。Model部署后才是流程(procdef),已經部署的流程(procdef)也可以轉換為Model,Model與流程(procdef)是分別獨立的,刪掉Model流程還在,刪掉流程Model還在。
3、整合modeler需要的資源
a.樣式(官方發布的activiti-explorer.war包中獲取):diagram-viewer文件夾、editor-app文件夾
b.頁面控件(官方發布的activiti-explorer.war包中獲取):stencilset.json
c.modeler.html(官方發布的activiti-explorer.war包中獲取)
d.流程定義列表(如果先做項目后整合,那么這個列表應該是已經有的)(如果沒有,下載咖啡兔的demo,然后拷貝process-list)建議大家參照著自己寫一個頁面
e.模型列表(下載咖啡兔的demo,拷貝model-list)建議大家參照著自己寫一個頁面
f.jar包(下載咖啡兔的demo,參照咖啡兔的jar包,不是所有的都用得上,最好的方式就是先導入基礎包,然后運行,運行報錯差什么包就加什么包)
4、整合步驟
a.將diagram-viewer文件夾與editor-app文件夾拷貝至項目webapp下,保證項目編譯后在根目錄
b.將stencilset.json文件拷貝至resources目錄下,保證項目編譯后在根目錄
c.將modeler.html文件拷貝至WEB-INF目錄下
d.將process-list文件與model-list文件拷貝至WEB-INF目錄指定的頁面路勁下
e.導入jar包
f.掃描activiti源生controller(只要controller)
<context:component-scan base-package="org.activiti.rest.editor"/> <context:component-scan base-package="org.activiti.rest.diagram"/>g.編寫controller(一個用來操控流程,一個用來操控模型)(操控流程的controller用自己寫的,操控模型的controller參考咖啡兔的ModelController)
1)流程controller(代碼太多,這里就不貼出來了,參考咖啡兔的ActivitiController,我只列出整合modeler需要用到的方法)
a)獲取流程定義列表(用于流程定義列表頁面展示所有已經部署的流程定義)
b)流程定義轉換Model(用于沒有模型的流程轉換模型)
2)模型controller(參考咖啡兔的ModelController,其實直接全部拷貝就可以了)
h.掃描自身controller(該controller的作用就是將請求重定向到modeller頁面,頁面的所有控件會由js自行加載)
<context:component-scan base-package="cn.cst.oss.bpm.contorller"/>
i.將modeler.html獨立出來,因為spring mvc 一般都是直接過濾的所有路徑(在靜態資源控制的地方添加)不然訪問會報錯,提示沒有這個方法
<resources mapping="/modeler.html" location="WEB-INF/"/>5、檢驗
a.項目啟動,跳轉到流程定義列表,能夠看到所有的流程定義表示成功。
b.點擊任意流程定義后面的轉換Model控件,后臺不抱錯并且頁面到了模型列表頁,有一條數據,表示成功。
d.點擊編輯按鈕(咖啡兔是直接在頁面超鏈接跳轉到modeler.html,我是在模型controller寫了一個方法來跳轉,實現效果一致),成功打開modeler.html表示成功。
c.模型列表的其他功能自己去挨個實驗,這里不多做說明。
6、原理:先要獲取到所有的流程定義,然后將流程定義轉換為Model(模型),將模型ID傳給modeler頁面并跳轉到modeler頁面。modeler頁面會自動解析之前所列出的樣式資源與控件資源,一旦進行邏輯操作就調用第4.f 步驟掃描的controller。
總結
以上是生活随笔為你收集整理的activiti 5.19整合modeler在线编辑器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 何新生的英语史(八)—看好莱坞学英语,就
- 下一篇: 销冠小鹏不赚钱