我看了一下,看起來您每次點擊提交時都會創建一個新的工作流程。我得到一個新的實例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);
嘿感謝您的答覆馬克。我將此作爲測試應用程序來熟悉WorkFlow Foundation。看完我又做了什麼,你是對的。我已經使用_instaneID變量刪除,並在每個後續事件被引發時傳遞下拉文本。我想知道的是,我如何從數據庫中獲取現有的工作流並填充信息?我正在考慮處理每個事件並將數據存儲到數據庫。這樣的事情可能嗎? – AProgrammer 2009-08-25 23:50:09
當然。我認爲你遇到的問題是搞清楚一個特定的工作流程所處的狀態。工作流程狀態在二進制字段中作爲序列化數據持久化,因此很難確定哪個id屬於哪個狀態。您可能會發現從外部跟蹤它最容易。 這篇文章簡要介紹了持久性行爲,並且是一個很好的開始: http://blogs.msdn.com/kaevans/archive/2008/12/09/understanding-persistence-in-windows-workflow- foundation.aspx – MarcLawrence 2009-08-26 05:39:13