久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

比較Activiti中三種不同的表單及其應用

 Larryljx 2015-08-16

比較Activiti中三種不同的表單及其應用

開篇語

這個恐怕是初次接觸工作流最多的話題之一了,當然這個不是針對Activiti來說的,,每個工作流引擎都會支持多種方式的表單,。目前大家討論到的大概有三種。

  1. 動態(tài)表單
  2. 外置表單
  3. 普通表單

具體選擇哪種方式只能讀者根據(jù)自己項目的實際需求結合現(xiàn)有技術或者架構,、平臺選擇?。?!

1.動態(tài)表單

這是程序員最喜歡的方式,,同時也是客戶最討厭的……因為表單完全沒有布局,所有的表單元素都是順序輸出顯示在頁面,。

此方式需要在流程定義文件(bpmn20.xml)中用activiti:formProperty屬性定義,,可以在開始事件(Start Event)和Task上設置,而且支持變量自動替換,,語法就是UEL,。

1
2
3
4
5
6
7
8
9
10
<startevent id="startevent1" name="Start">
  <extensionelements>
    <activiti:formproperty id="name" name="Name" type="string"></activiti:formproperty>
  </extensionelements>
</startevent>
<usertask id="usertask1" name="First Step">
  <extensionelements>
    <activiti:formproperty id="setInFirstStep" name="SetInFirstStep" type="date"></activiti:formproperty>
  </extensionelements>
</usertask>

下面是一個簡單的動態(tài)表單的單元測試,讀者可以下載運行以便更明確執(zhí)行過程和判斷動態(tài)表單能不能在企業(yè)項目中使用,。

下載之后復制到eclipse工程里,,更改里面的路徑配置使用JUnit測試即可。

當流程需要一些特殊處理時可以借助Listener或者Delegate方式實現(xiàn),。

注意:表單的內(nèi)容都是以key和value的形式數(shù)據(jù)保存在引擎表中?。?!

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就是使用的這種方式,,表單信息都配置在流程定義文件中,。

代碼片段:

1
2
3
4
<process id="FormKey" name="FormKey">
    <startevent id="startevent1" name="Start" activiti:formkey="diagrams/form/start.form"></startevent>
    
</process>

同樣也提供了單元測試:


注意:表單的內(nèi)容都是以key和value的形式數(shù)據(jù)保存在引擎表中!??!

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ū)別:

  1. 表單:和第二種外置表單類似,但是表單的顯示,、表單字段值填充均由開發(fā)人員寫代碼實現(xiàn),。
  2. 數(shù)據(jù)表:數(shù)據(jù)表單獨設計而不是和前兩種一樣把數(shù)據(jù)以key、value形式保存在引擎表中,。

4.從業(yè)務數(shù)據(jù)和流程關聯(lián)比較

  1. 動態(tài)表單:引擎已經(jīng)自動綁定在一起了,,不需要額外配置。
  2. 外置表單:和業(yè)務關聯(lián)是可選的,,提供的例子中是沒有和業(yè)務關聯(lián)的,,如果需要關聯(lián)只需要在提交StartForm的時候設置businessKey即可。
  3. 普通表單:這個應該是必須和業(yè)務關聯(lián),,否則就是無頭蒼蠅了……,,關聯(lián)方式可以參考:工作流引擎Activiti使用總結中的2.3 業(yè)務和流程的關聯(lián)方式

5.結束語

技術只是輔助工具,只能決定這件事能不能做,,如何選擇要看應用場合,,希望簡單的比較能提供一點思路。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多