2009-08-25 153 views
0

嘿,我已經創建了一個WinForms來處理使用Windows WorkFlow Foundation的持久性活動。我使用.NET 3.0 SQL和VS2005作爲C#代碼語言的IDE。此外,公司的發展政策規定了我的環境。所以,直到恐龍決定升級,我堅持VS2005。狀態機持久性工作流

我的問題是這樣的,我可以一次處理1個工作流程,而且我希望能夠處理多個工作流程。就像在我單擊窗體上的提交按鈕時一樣,我希望能夠創建一個新的WorkFlow實例。

我創建了運行時並添加了所有相應的服務。我鉤住持久性,當我點擊提交時,我開始一個WorkFlow的實例。我對WorkFlow Foundation相對來說比較陌生,MSDN鏈接爲我提供的幫助很少。如果任何人都可以在我的源代碼中將我置於正確的方向,那會很有幫助。

我附上了一個指向我的項目源代碼的鏈接。

Click Here for the Source

先謝謝了!

回答

0

我看了一下,看起來您每次點擊提交時都會創建一個新的工作流程。我得到一個新的實例ID,這是一個好兆頭:) PopulatePSUP(字符串instanceID)捕獲下拉的實例ID。但是,您一次只能在Guid _instanceID中存儲一個實例ID。然後這個表單級變量用於所有按鈕事件。你可以使用cboPSUPItems.Text。

喜歡的東西:

private void btnPSUPApprove_Click(object sender, EventArgs e) 
    { 
     string instanceId = this.cboPSUPItems.Text; 

     if (instanceId.Length > 0) 
     { 
      myArgs.Approved = true; 
      approved = "Yes"; 
      this.resumeHistory[ instanceId ].Clear(); 
      this.resumeHistory[ instanceId ].Add("Name: " + applicantName); 
      this.resumeHistory[ instanceId ].Add("Email:" + applicantEmail); 
      this.resumeHistory[ instanceId ].Add("Text:" + applicantText); 
      this.resumeHistory[ instanceId ].Add("Approved:" + approved); 
      this.resumeHistory[ instanceId ].Add("Denied:" + denied); 
      this.resumeHistory[ instanceId ].Add("PD Approval Requested:" + pDRequest); 
      resumeService.RaisePSUPApprovedEvent(new Guid(instanceId) , myArgs); 
      this.cboPSUPItems.Items.Remove(this.cboPSUPItems.SelectedItem); 
      txtPSUPNotes.Clear(); 
     } 
    } 

你可能要考慮使用集合/列表中instanceIds存儲也是如此。適用於任何工作流程邏輯。

喜歡的東西:

List<Guid> _instanceIds = new List<Guid>(); 

... 

_instanceIds.Add(instance.InstanceId); 
+0

嘿感謝您的答覆馬克。我將此作爲測試應用程序來熟悉WorkFlow Foundation。看完我又做了什麼,你是對的。我已經使用_instaneID變量刪除,並在每個後續事件被引發時傳遞下拉文本。我想知道的是,我如何從數據庫中獲取現有的工作流並填充信息?我正在考慮處理每個事件並將數據存儲到數據庫。這樣的事情可能嗎? – AProgrammer 2009-08-25 23:50:09

+0

當然。我認爲你遇到的問題是搞清楚一個特定的工作流程所處的狀態。工作流程狀態在二進制字段中作爲序列化數據持久化,因此很難確定哪個id屬於哪個狀態。您可能會發現從外部跟蹤它最容易。 這篇文章簡要介紹了持久性行爲,並且是一個很好的開始: http://blogs.msdn.com/kaevans/archive/2008/12/09/understanding-persistence-in-windows-workflow- foundation.aspx – MarcLawrence 2009-08-26 05:39:13