1. 程式人生 > >【Activiti】從入門到放棄——專案實戰之動態表單

【Activiti】從入門到放棄——專案實戰之動態表單

為什麼需要動態表單

分析:每個任務的詳情對話方塊是不變的,還是可變的。

任務詳情對話方塊放的是任務所對應的業務物件,如果是客戶報備,裡面放的就是客戶的資訊,如果是請假,裡面放的是請假單。

1 不同流程定義所對應任務的任務詳情,肯定是不一樣的。

2 相同流程定義所對應任務的任務詳情,一定是一樣的嗎?

      有可能不一樣

所以不同任務就要有不同任務詳情對話方塊內容。任務是通過流程中節點生成的,而且同一個節點對話方塊是一樣,要想確認每個任務不一樣,在定義流程時,在流程節點上定義不同對話方塊表單

實現方式

1.Fromproperties(表單屬性)

通過表單屬性的方式定義很多表單項(input),並且既包含結構又包含值

實現步驟:

1、 點選辦理任務時,獲取表單屬性

2、使用程式碼動態生成表單,和對應下面的表單項的值

  動態生成表單,非常麻煩。

2.FormKey(表單鍵)

這種方式是提起動態表單鍵指向提前定義好的結構,並把它繫結到節點上。

  1. FormKey定義結果

2.動態獲取業務物件

   在流程中,獲取“業務物件”資訊??

從流程變數中,獲取預先準備的業務資訊:

   businessObjType businessObjeId

可以傳送Ajax請求到後臺獲取資料

/customer/getByID?id=1

/leaveBill/getByID?id=1

//統一格式

/businessObjType/loadFormData?businessObjId= businessObjeId

實現:

實現步驟:

步驟:

  分析,整體包表單分為表單結構和表單值,

   1、表單的結構通過FormKey獲取

   2 、表單的值通過(businessObjType businessObjId流程變數)拼接一個url,傳送一個Ajax請求獲取資料

 需要三個引數:FormKey,businessObjType ,businessObjId

 

當點選辦理任務時,做以下步驟

1)獲取三個引數FormKey,businessObjType ,businessObjid

      1.1 點選辦理任務,傳送一個Ajax請求獲取三個引數

      1.2 查詢任務時,每個任務攜帶上面的三個引數,可以直接獲取。(採納)

2)通過Formkey載入表單結構--表單鍵就是一個地址,通過該地址動態載入表單結構

3)通過businessObjType ,businessObjid傳送Ajax請求獲取資料

4)把表單結構和表單值融合在一起,形成完整的動態表單

前臺

1.收集3個引數

2.遠端載入表單結構

3.載入資料

4.將表單結構和表單資料融合在一起

後臺

1.三個引數收集

2.結構和業務物件獲取