天天看點

Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?

背景

  1. 查詢出指定某個使用者的任務清單
  2. 根據任務的ID進行任務處理
  3. 看任務處理後,表中發生了哪些變化?

過程

  • 處理任務代碼邏輯
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?
  • 資料庫表變化
  1. act_ru_task表
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?
    說明:由于sanding已經填寫了請假申請單,是以activiti把表中原來那條記錄給删除了。又新插入了一條了資料。而這條資料就是部門經理這個負責人進行請假單審批了。而這裡字段ASSIGNEE為什麼為null,是因為我們在流程執行個體化的時候,并沒有添加具體的某個負責人。測試的時候,可以手動操作資料庫去填寫即可。
  2. act_hi_actinst表
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?
    說明:原來這張表有兩條資料。2504這條資料的END_TIME是null的, 而當sanding這人負責人(隻要有任務都是負責人)填寫了請假申請單後,END_TIME字段就有值了。且,又新插入了一條資料5001,這條資料是任務流程圖中的第三個環節,剛好一個環節(節點,任務節點)一條行為的曆史記錄,而且我們依然可以看見它的END_TIME字段依然為null。
  3. 通過分析sanding處理任務後,得到的結論。那麼部門經理處理完任務後,也是同樣的效果,繼續向後面節點移動(上司審批(leader check))。而當leader check完成後,那麼act_hi_actinst表中一定對應着5條記錄,每個環節(每個節點)對應一條記錄。而act_ru_task一定沒有資料了。因為這個流程執行個體已經完成了。而為什麼要删除,就是為了保證表中的資料量小,加快查詢速度。
  4. 變化的不隻是這兩種表,凡是邏輯上相關聯的表,資料都會變化的。但是在實際應用場景中,我們可以選擇記錄一些重要的資訊,一些不重要的記錄,就可以丢掉。
  5. 此操作影響的表有(可能操作不是特别規範,因為建構流程圖的時候,是沒有參與者,導緻有些表其實是沒有生成記錄的,是以下表的第2條記錄和第5條記錄就沒有資料)
表名 是否受影響
act_hi_actinst
act_hi_identitylink
act_hi_taskinst
act_ru_execution
act_ru_identitylink
act_ru_task
  • 部門經理進行任務處理(lisi)這個名稱是手動插入到資料的,自定義名稱即可。

    lisi未處理任務的時候,資料庫表情況。

    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?
    代碼查詢示範
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?
    控制台列印
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?
    lisi執行任務,代碼邏輯示範
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?

資料庫表變化

  1. act_ru_task
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?

    ASSIGNEE是null, 是因為我在流程定義的時候,未選擇參與者,實際應用場景中一定是有的,不然審批沒有任何意義。當wangwu去完成任務的時候,我們需要手動把wangwu指派到ASSIGNEE字段上即可。

    這裡的結果,跟上文的推測,一模一樣。

  2. act_hi_actinst
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?
    資料變化過程:跟上文分析sanding處理任務後是一樣的。也跟推測一模一樣的。
  • 上司進行任務處理(wangwu)這個名稱是手動插入到資料的,自定義名稱即可。

    wangwu未執行任務時,代碼邏輯示範

Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?

控制台列印

Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?

wangwu未執行任務時,資料庫act_ru_task表

Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?

wangwu處理任務代碼邏輯

Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?

wangwu處理任務後資料庫表變化

  1. act_ru_task表(可以看見表中一條資料都沒有了)
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?
  2. act_hi_actinst表(可以看見5條記錄)
    Activiti7.0實戰學習(五):使用者處理任務後表中資料做了哪些變化?

    總結:流程定義圖上有5個任務節點,分别是開始,填寫申請單,部門經理審批,上司審批,結束。剛好對應5條記錄。觀察發現開始事件和結束時間的TASK_ID是null 。而這裡的ASSIGNEE為什麼是null可能跟自己定義流程圖有關系。(後續找原因)

    多注意字段END_TIME是否為null

小結

  1. 這節的知識是非常重要的,它告訴我們流程執行個體随着任務完成後,資料庫表中的資料變化,其實就是Activiti的工作過程。
  2. 了解一個最簡單的。那麼其他的都差不多了。比如一個任務給多個人處理。一個任務給多人中的其中一人處理。都能去推。
  3. 推的依據就是流程執行個體究竟是怎樣的?流程執行個體中的每個節點(每個環節)都是一條記錄。而需要目前環節(節點)處理任務的時候,act_ru_task表就對應目前流程執行個體一條待處理的記錄。
  4. 一旦某個流程執行個體完成了,act_ru_task對應的這個流程執行個體的記錄将一條也不存在。而act_hi_actinst将對每個環節,也就是每個任務節點都有一條資料。

繼續閱讀