嘿所有,我已经使用Windows WorkFlow Foundation创建了一个WinForms来处理持久性活动。我使用.NET 3.0 SQL和VS2005作为IDE,使用C#作为代码语言。此外,公司的发展政策赋予了我环境。所以在恐龙决定升级之前,我一直坚持使用VS2005。
我的问题是,我能够一次使用1个工作流程,并且我希望能够处理多个工作流程。当我单击表单上的“提交”按钮时,我希望能够创建一个新的WorkFlow实例。
我创建了运行时并添加了所有适当的服务。我挂钩持久性,当我点击提交时我启动了一个WorkFlow的实例。我是WorkFlow Foundation的新手,MSDN链接对我来说几乎没有任何帮助。如果有人能在我的源代码中将我放在正确的方向,那将会有所帮助。
我附上了一个指向我项目源代码的链接。
提前致谢!
答案 0 :(得分: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 );