2012-04-27 27 views
2

我想了解如何在不知道具体活动类型的情况下恢复(加载)以前持久化的WF4活动。恢复持久化的窗口工作流4不知道具体活动类型的活动

为了加载一个持久的活动,我不仅需要其workflowId(我有),但我需要在活动的一个实例来传递的 - 所以我需要知道它的类型:

var workflowApplication = new WorkflowApplication(activity); // what type is activity? 
workflowApplication.Load(workflowId); 

问题在于它可能是多种类型之一 - 此活动旨在用于其他活动和工作流程中:它将消息发送到消息队列,书签然后持续存在。当通过消息队列接收到相应的消息时,它会恢复,但我不知道原始工作流的确切具体类型,而不检查持久性数据。这看起来像catch-22。我不能在不知道活动类型的情况下加载工作流,如果不加载工作流并检查其持久数据,我无法知道活动类型。

我觉得我失去了一些东西 - 是有没有办法不知道的活动,还是有办法重新加载持久性数据创建WorkflowActivity之前制定出的实际类型的activity可以创建一个托管WorkflowActivity?

回答

2

没有通过WF API进行本地支持,您必须提出自己的解决方案。

最快的方法:Store Extensibility使用InstancePromotedProperties表来保存自己的属性。

可能是正确的方法:PersistenceIOParticipant似乎是正确的做法。只需创建自己的表来存储任何你想要的东西,包括活动的类型。

使用自定义活动为您在某处保存,然后保留。由于各种原因,不是最好也不正确的做法。

+0

谢谢 - 我刚开始沿着这条路线走下去 - 很好,让它确认! – 2012-04-27 17:02:39