2009-08-25 116 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