中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

數據結(jie)構~工作流的(de)設(she)計(鏈表結(jie)構)

返回目錄

從幾(ji)年前做OA時(shi)接(jie)觸過工作(zuo)流的概念,那時(shi)還比較模糊(hu),現(xian)在覺得清晰一些(xie)了,想把自己一些(xie)理解寫出來,與大家分(fen)享!

工作(zuo)流最(zui)簡(jian)單的(de)就(jiu)是京東的(de)訂單處(chu)理,它其實就(jiu)是個簡(jian)單的(de)工作(zuo)流,每(mei)個節點可能有前驅節點(prev node)和(he)后繼節點(next node),如圖:

而這個結構讓我們想起了數據結構里的“鏈表”(鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。),更多鏈表的基礎可以看我這篇文章。

而反映到C#中,我們可以把(ba)鏈接(jie)結構設計成這樣(yang)的類,而對于數(shu)據表來說也(ye)是這樣(yang)的數(shu)據結構:

反映到類中,是這樣定義的:

1   public partial class WorkFlow_Info
2     {
3         public int ID { get; set; }
4         public Nullable<int> PrevNode { get; set; }
5         public Nullable<int> NextNode { get; set; }
6         public string Name { get; set; }
7         public string Info { get; set; }
8     }

它有一(yi)些導航(hang)屬(shu)性(xing),用來(lai)得到每(mei)個節(jie)點的(de)前驅和后繼節(jie)點信息:

 1     /// <summary>
 2     /// 工作流實體
 3     /// </summary>
 4     [MetadataType(typeof(WorkFlow_Info_Meta))]
 5     public partial class WorkFlow_Info
 6     {
 7         #region 導航屬性
 8         /// <summary>
 9         /// 是否為首結點
10         /// </summary>
11         public bool IsFirstNode
12         {
13             get
14             {
15                 return this.PrevNode == null;
16             }
17         }
18         /// <summary>
19         /// 是否(fou)為尾結點(dian)
20         /// </summary>
21         public bool IsEndNode
22         {
23             get
24             {
25                 return this.NextNode == null;
26             }
27         }
28         /// <summary>
29         /// 前驅(qu)節點
30         /// </summary>
31         public WorkFlow_Info PrevNodeEntity { get; set; }
32         /// <summary>
33         /// 后(hou)繼節點
34         /// </summary>
35         public WorkFlow_Info NextNodeEntity { get; set; }
36         #endregion
37     }

好了,有(you)了上面的(de)基礎,我們把這個(ge)(ge)結(jie)構體(ti)現到(dao)實際(ji)項目中(zhong),如一個(ge)(ge)產品從建立到(dao)最后(hou)的(de)上架,可能就(jiu)是一個(ge)(ge)工作(zuo)流,它的(de)流程如:

建立產(chan)品(pin)(pin)=》審核產(chan)品(pin)(pin)信(xin)息=》產(chan)品(pin)(pin)訂價=》產(chan)品(pin)(pin)上(shang)架

而我(wo)們再結合之(zhi)前的鏈表結果(guo),可(ke)以很容易(yi)的得到下面的結果(guo)了:

A產品是(shi)剛剛被(bei)建(jian)立(li),還沒有進行審核(被(bei)建(jian)立(li))

B產品已經(jing)(jing)經(jing)(jing)過了審核(被審核)

C產(chan)品(pin)當前已經(jing)處于上價(jia)狀態了(被上架)

總結:感謝數據結構真的很有用,如果想寫出健壯的程序,看看計算機基礎,數據結構導論,操作系統概論還是很有必要的,呵呵。

返回目錄

posted @ 2012-12-17 23:33  張占嶺  閱讀(4179)  評論(4)    收藏  舉報