2012-10-09 53 views
1

我正在尝试创建托管在IIS中的状态机工作流的原型。客户端是一个Web表单应用程序。恢复托管在工作流服务中的状态机工作流

我想要实现的是长期运行的“向导”风格的过程,坚持到数据库。状态机工作流程基本上根据工作流程的状态来控制当前的Web表单页面。

我想知道如何找到当前状态名称以“恢复”工作流程的一个实例。想象一下,有人正在通过向导程序的一半,然后决定停下来,稍后再回来完成。

我发现了一种解决方案,即将当前状态名称存储在数据库中,并与工作流实例相关联的字段;然而,这对我来说并不是一个优雅的解决方案。当然,有一种简单的方法可以使用Workflow Services来确定工作流实例的当前状态?

谢谢你们,非常感谢你们的帮助!

回答

0

没有这样做的标准方式。基本方法是使用TrackingParticipant并跟踪事件。请参阅this example作为起点。

+0

嗨,莫里斯,非常感谢您的帮助。我已经从您提供的链接实施了状态机跟踪器。这将状态添加到XML格式的InstancePromotedPropertiesTable中。我想写一个与上面类似的TrackingParticipant,它只将CurrentState名称写入我选择的表中。你知道我有没有办法做到这一点?我曾尝试创建自己的TrackingParticipant;但是,我无法从TrackingRecord对象中找到状态机数据。我曾尝试投射到各种派生类,但没有运气。谢谢你的时间。 – zunkie

+0

你可以在这里找到源代码:http://www.symbolsource.org/Public/Metadata/NuGet/Project/Microsoft.Activities.UnitTesting/2.0.3.9/Release/.NETFramework,Version%3Dv4.0.1/Microsoft。 Activities.Extensions/Microsoft.Activities.Extensions/Tracking/StateMachineStateTracker.cs?ImageName = Microsoft.Activities.Extensions – Maurice

+0

当前状态是[StateMachineStateRecord.StateName](http://msdn.microsoft.com/en-us/library/ system.activities.statements.tracking.statemachinestaterecord.statename.aspx) – Maurice

相关问题