任務、父子任務的關係在系統中的表示
erp、專案管理系統、進度管理系統、物流系統、狀態跟蹤系統、批處理任務分解系統等軟體系統中,大多數都會遇到乙個類似描述任務的需求。
比如在批處理任務分解系統中,任務關係表需要記錄父任務、子任務,也要記錄父子任務這個關係。父任務和子任務都是任務,只在任務關係表中記錄這些任務即可。而父子關係怎麼描述呢?
資料結構中有樹的概念,樹可以表示父子關係。如下圖所示一棵樹:
可以至少有兩種設計,來描述這棵樹的節點間的父子關係。
1)通過節點編碼來表示父子關係。給每個節點編碼加上父節點編碼的字首,而每一層節點的編碼長度固定,節點如果沒有父節點,則字首為空。由以上規則可以定義以上九個節點的編碼。①:
01 ②:
0101 ③
:0102 ④
:0103 ⑤
:010101 ⑥
:010102 ⑦
:010103 ⑧
:010304 ⑨
:010305
由上面的節點編碼加上編碼規則可以知道,
①的子節點為②、
③、④,而
⑤、⑥、
⑦為節點
②的子節點,
④為節點⑧、
⑨的父節點。
2)通過記錄父節點的編碼主鍵來表示父子關係。給每個節點附加乙個「父節點」屬性,指示它的父節點為哪乙個節點。**設計如下表1
表1節點號
編碼主鍵
父節點編碼主鍵①1
-②21
③31④
41⑤5
2⑥62
⑦72⑧
84⑨9
4由以上的附加「父節點編碼主鍵」屬性值可以清楚地知道乙個節點的父節點。但是要知道乙個節點是否有子節點,則只能通過搜尋全表,查詢哪個節點的「父節點編碼主鍵」值與當前節點的「編碼主鍵」是否相同。可以冗餘設計**,增加「第乙個子節點編碼主鍵」屬性。**設計如下:表2
節點號編碼主鍵
父節點編碼主鍵
第乙個子節點編碼主鍵①1
- 2②2 1
5③31 -
④4 1
8⑤52 -
⑥6 2
-⑦72 -
⑧8 4
-⑨94 -
這樣的設計,主要是方便查詢乙個節點是否有子節點,以及子節點的資料值。
3)混合設計模式。即以上兩種設計同時存在,這樣能夠提供更加完善的分解、查詢模式,分解和合併節點。
任務表中不但需要描述父子關係,還要描述兄弟關係、堂兄弟關係、隔輩關係、堂父子關係。那麼在以上兩種設計中,稍加巧妙的拼接與轉換,即可實現另外這些關係的描述。若你想繼續鑽研這些關係,請花點時間思考一下。
在Ant中引用外部的任務
ant 為使用者提供了大量的任務,更為可貴的是,它允許使用者使用其它開發者開發的任務。在 ant主頁上就有乙個外部任務列表 只要你願意,你也可以很快寫出乙個自己的任務來,看看本系列的 編寫自定義任務,輕鬆擴充套件 ant 就行了。在 ant中引用外部任務有兩種情況 一 ant 定義的可選任務 這些任...
linux系統中的延時任務及定時任務
設定延時任務後,系統在指定的時間會做指定的動作,不過是一次性的。at命令 at 時間 設定任務時間 at 命令 任務動作 at ctrl d 用ctrl d發起任務 5 20在 mnt建立4個檔案 從現在開始1分中後刪除 mnt的所有檔案。at l 檢視任務列表 at c 任務號 檢視任務內容 at...
SpringBoot中的常見任務 非同步任務
告訴spring這是乙個非同步的方法,還需要在main方法中開始非同步請求,也就是加註解 async 註解的作用 告訴spring這是乙個非同步方法,自己開乙個執行緒在後台跑 service public class asyncservice catch interruptedexception e...