比較Activiti中三種不同的表單及其應用開篇語這個恐怕是初次接觸工作流最多的話題之一了,當然這個不是針對Activiti來說的,,每個工作流引擎都會支持多種方式的表單,。目前大家討論到的大概有三種。
具體選擇哪種方式只能讀者根據(jù)自己項目的實際需求結合現(xiàn)有技術或者架構,、平臺選擇?。?! 1.動態(tài)表單這是程序員最喜歡的方式,,同時也是客戶最討厭的……因為表單完全沒有布局,所有的表單元素都是順序輸出顯示在頁面,。 此方式需要在流程定義文件(bpmn20.xml)中用activiti:formProperty屬性定義,,可以在開始事件(Start Event)和Task上設置,而且支持變量自動替換,,語法就是UEL,。
下面是一個簡單的動態(tài)表單的單元測試,讀者可以下載運行以便更明確執(zhí)行過程和判斷動態(tài)表單能不能在企業(yè)項目中使用,。 下載之后復制到eclipse工程里,,更改里面的路徑配置使用JUnit測試即可。 當流程需要一些特殊處理時可以借助Listener或者Delegate方式實現(xiàn),。
2.外置表單這種方式常用于基于工作流平臺開發(fā)的方式,,代碼寫的很少,開發(fā)人員只要把表單內(nèi)容寫好保存到.form文件中即可,,然后配置每個節(jié)點需要的表單名稱(form key),,實際運行時通過引擎提供的API讀取Task對應的form內(nèi)容輸出到頁面。 此種方式對于在經(jīng)常添加新流程的需求比較適用,,可以快速發(fā)布新流程,,把流程設計出來之后再設計表單之后兩者關聯(lián)就可以使用了。例如公司內(nèi)部各種簡單的審批流程,,沒有業(yè)務邏輯處理,,僅僅是多級審批是否通過等等情況 當流程需要一些特殊處理時可以借助Listener或者Delegate方式實現(xiàn)。 Activiti Explorer就是使用的這種方式,,表單信息都配置在流程定義文件中,。 代碼片段: 同樣也提供了單元測試:
3.普通表單這個是最靈活的一種方式,常用于業(yè)務比較復雜的系統(tǒng)中,,或者業(yè)務比較固定不變的需求中,,例如ERP系統(tǒng)。 普通表單的特點是把表單的內(nèi)容存放在一個頁面(jsp,、jsf,、html等)文件中,存放方式也有兩種(一體式,、分離式): 1.一體式:把整個流程涉及到的表單放在一個文件然后根據(jù)處理的任務名稱匹配顯示,,kft-activiti-demo的普通表單模式就是一體式的做法,,把表單內(nèi)容封裝在一個div里面,div的ID以節(jié)點的名稱命名,,點擊“辦理”按鈕時用對話框的方式把div的內(nèi)容顯示給用戶,。 2.分離式:對于非Ajax應用來說比較常用,每個任務對應一個頁面文件,,點擊辦理的時候根據(jù)任務的ID動態(tài)指定表單頁面,。 本博客發(fā)布的Activiti入門Demo中有演示:Activiti快速入門項目-kft-activiti-demo 和以上兩種方式比較有兩點區(qū)別:
4.從業(yè)務數(shù)據(jù)和流程關聯(lián)比較
5.結束語
|
|