樹資料集的完整性檢查

1. 概述

樹資料集主要是用來構建部門之間的關係,每個部門需要提供一個原始的標記欄位和父標記欄位,後端在同步的時候根據這兩個欄位來建立一種樹狀結構。

但客戶有時在更新設計器版本時,會出現同步樹資料集失敗的情況,主要是因為樹資料集配置錯誤或者本身並不是一個完整的樹狀結構。

下面舉幾種比較完備的樹狀結構,來告訴大家構建樹資料集時需要注意哪些事項。

2. 樹狀結構及注意事項

2.1 樹狀結構(類型一)

2.1.1 資料表

2.1.2 樹資料集

上面是一個就是一個完整的樹資料集,以“部門 ID”為原始標記欄位,“上級 ID”是父標記欄位。

例如:

第二行的意思是“人力資源部”的原始標記為 11,其父部門是標記為 1 的部門(然後可以根據這個標記來查詢它的父部門是總部)。

第一行表示總部的標記是 1,父標記為空,表示它是根部門,沒有父部門,通常如果一個部門沒有父部門,那麼父部門標記為空。

遍歷這個資料集後,能得到所有的部門資訊,職位資訊;根據“上級 ID”,到“部門 ID”這一欄去尋找相應的部門名稱,進而可以構建父部門。

2.1.3 注意事項

需要注意的是:“上級 ID”中出現的標記(除了是空),都必須在“部門ID”中找到對應的標記,可以看到上圖中所有的“上級 ID”都能在“部門 ID”中找到對應的值。

如果出現下圖的這種情況,“上級 ID”為 2,但是在部門 ID中找不到是 2 的部門資訊,這樣就沒辦法構建上級ID為2的部門資訊,這樣就認為樹是不完整的,同步資料集的同步動作直接傳回,不進行同步操作。

那麼在日誌裏面會報如下形式的錯誤:

意思是找不到標記 2 對應的部門!

2.2 樹狀結構(類型二)

2.2.1 資料表

2.2.2 樹資料集

這個以“部門名稱”和“上級名稱”來構建樹,這個所謂的標記欄位只是為了標記部門直接的層級關係,不會參與業務處理。

這其中也要要求“上級名稱”中的標記欄位要能在“部門名稱”中找到對應的部門,如果找不到,則直接跳出,拒絕同步。

2.2.3 注意事項

注意事項同上。“上級名稱”中出現的標記(除了是空),都必須在“部門名稱”中找到對應的標記,否則就認為樹是不完整的,同步資料集的同步動作直接傳回,不進行同步操作。

2.3 樹狀結構(類型三)

2.3.1 資料表

2.3.2 樹資料集

同樣的是使用“部門 ID”和“上級 ID”來做標記,同樣需要保證“上級 ID”列的能在“部門 ID”中能夠找的到,否則也會拒絕同步。

根據“部門ID”和“上級ID”來構建樹。

2.3.3 注意事項

確定樹資料集是正確的充要條件:

a. 父標記欄位中出現的值(除了是空),在原始標記欄位中都能找到對應的值。

b. 原始標記欄位相同的行,其部門名和父標記這兩列也必須相同,如上圖資料表中的最後兩行。

c. 父標記和部門名相同的行,其原始標記列必須相同,如上圖資料表中的最後兩行。

如果出現下圖的這些情況會報錯:

1)報錯資訊如下:

222

一個確定的部門有兩個父部門,顯然不是樹狀結構。

一旦一個部門的標記相同,就代表這個部門是確定的,那麼這個部門的“上級 ID”和“部門 ID”必須相同。

如下圖中 lyon 和 loy 的部門標記都為 d,但是他們的父部門竟然不相同,顯然是資料錯了,改正過來就行了。

2)報錯資訊如下:

222

一個標記對應的部門名稱不同也是錯誤的,這樣也會拒絕同步的。

3)報錯資訊如下:

222

意思就是在父部門確定的情況下,部門名稱是唯一的,那麼部門標記也是唯一的;上圖說明部門標記不唯一。

部門名稱是可以相同的,比如銷售部有個子部門叫效能組,研發部也可以有個子部門叫效能組。

但是當父部門確定的情況下,部門名是不能重複的。

例如:lyon 和 loy 所在的部門都是效能組,且父部門標記都是d,那就表明兩個人在同一個部門,那麼部門標記就應該相同,上圖的兩個員工部門標記不相同,那麼也會報錯,拒絕同步。即在父部門確定的情況下,根據部門名能唯一的確定一個部門。

4)實際情況中還有一種是互為上下級的情況,這種結構或者說資料有時候會在一些實行扁平化管理的公司出現,即A部門是B部門的上級,B部門又是A部門的上級,這樣的兩個部門在組織同步的時候也會失敗,但很少見。

3. 補充說明

原始欄位和父標記欄位中不能出現 0,0000000 類似的欄位,因為這些標記會被解析成 0,而 0 是程式中的保留欄位,是所有部門的 ID,所以要儘量避免.

在構建樹狀結構的時候,如果一個部門沒有父部門,那麼父部門就空着,不要隨便寫。

另外,在設計器升級之前一定要備份 JAR 檔案。


附件列表


主題: 報表應用
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

9s后關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙

反饋已提交

網絡繁忙