天天看點

activiti自定義流程之整合(三):整合自定義表單建立模型

本來在建立了表單之後應該是表單清單和預覽功能,但是我看了看整合的代碼,和之前沒有用angularjs的基本沒有什麼變化,一些極小的變動也隻是基于angularjs的文法,是以完全可以參考之前說些的表單清單展示相關的内容,這裡也就直接進入到下一個步驟,建立流程模型了。

在之前的建立流程模型一節裡,我講代碼比較多,實際上在這裡還有很重要的一個環節沒有細說,那就是自定義流程圖,畫流程圖的過程也是有不少需要注意的事項的,在這一節我會适當的以截圖加解釋進行說明。

而在建立流程模型的過程中,因為之前也是用java、spring、angularjs等,是以在代碼上實際上并沒有什麼變化,不同之處就在流程圖制作上,還有就是activiti内部自己實作,我們不用管他,那麼這裡着重要講的就是調用activiti-modeler來畫流程圖。

我們的建立模型首先是在自己制作的頁面填好模型的name、key、description等,然後送出到背景,進而跳轉到activiti-modeler流程圖制作界面。自定義的頁面如下圖:

activiti自定義流程之整合(三):整合自定義表單建立模型

填寫資料的這個頁面代碼如下:

在我們填好相關資料以後,點選送出,便會觸動createTo方法進入到js代碼中,對應的整個js代碼如下:

在上述的代碼中可以看到createTo方法是直接調用$http向背景發送post請求,然後把頁面中的資料對象直接傳到背景,并沒有多做處理,這裡涉及到angularjs的雙向資料綁定,如果有不明白的,可以自己去了解以下。

需要注意的是,發送請求并接收背景傳回資料後,從傳回資料中拿到path和modelid然後跳轉到activiti-model流程圖設計頁面,這裡可以先看一下下邊的背景代碼再傳回來看。

經過http請求,操作便運作到背景,相應的背景代碼如下:

這一段代碼裡涉及到的東西還比較多,有一些我也不是很了解,隻是這段代碼基本上就是這樣不怎麼會變了,我也暫時沒有深入了解,可以看到這段代碼跟之前說列的也是一樣,那麼這裡我要說的是最後走完這段代碼傳回資料給前台。

可以看到其中有一個path屬性和modelId,正是這兩個屬性傳回給前台後,前台angularjs再控制路由跳轉到activiti-model流程圖設計頁面(這個頁面完全整合而來,非自己創造)。根據path和modelId跳轉後的界面如下:

activiti自定義流程之整合(三):整合自定義表單建立模型

這個界面是整合而來,在跳轉的過程中會自動把之前我們填寫的資料帶入過來,當然了,還有modelId,這個時候資料庫實際上已經有了資料。

進入到這個界面,那麼下邊就要正式開始設計流程圖了,首先如下圖所示的建立開始節點,建立方法是找到StartEvent按鈕,按住滑鼠左鍵拖拽到右方空白處即可。

activiti自定義流程之整合(三):整合自定義表單建立模型

然後在這個開始節點後邊有許多按鈕可以點選,我們選擇下圖中箭頭所指的個人任務,然後便建立了一個任務節點,當然了,如果能學到自定義流程圖這一步,我想大家應該已經對流程圖的基礎有一定了解了,起碼在eclipse中畫流程圖應該已經沒有問題,是以這裡大家應該不難了解,否則的話,不如先用eclipse中的插件了解一下。

activiti自定義流程之整合(三):整合自定義表單建立模型

這樣的話,依照上邊的步驟我們就可以建立出如下圖的流程圖雛形,包含開始節點、兩個任務節點,然後是結束節點:

activiti自定義流程之整合(三):整合自定義表單建立模型

那麼接下來就是比較重要的了,開始進入自定義表單整合的環節。

在上圖中可以看到右方我用箭頭指了一個地方,attributes,顧名思義,就是屬性,這裡是可以點開的,假如大家能走到這一步來,就可以看到在不同情況下這裡顯示的不一樣。

首先我們不選中任何節點,可以看到屬性如下:

activiti自定義流程之整合(三):整合自定義表單建立模型

而我們選中開始節點和任務節點是屬性又分别如下圖1和圖2:

activiti自定義流程之整合(三):整合自定義表單建立模型

圖2:

activiti自定義流程之整合(三):整合自定義表單建立模型

但是不管是開始節點還是任務節點,都有Formkey這個屬性,在這裡我們就可以指定每個節點需要使用的自定義表單檔案的名稱,通常是xxx.form的形式。指定好formkey以後就可以點選儲存,也可以設定其他的屬性,如任務中的assignment和name、key等等。

而這裡的整個頁面都不是自己寫的,儲存相關的方法也不是自己寫的,隻要資料庫配置正确,activiti-modeler就會自動把這些資料儲存到資料庫中,模型建立完畢。