在不知道具体活动类型的情况下恢复持久化Window Workflow 4活动

时间:2012-04-27 10:35:17

标签: c# .net workflow-foundation-4 workflow-foundation

我试图理解如何在不知道活动的具体类型的情况下如何恢复(加载)先前持久的WF4活动。

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

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

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

我觉得我在这里遗漏了一些东西 - 有没有办法在不知道活动的情况下创建托管WorkflowActivity,或者在创建之前重新加载持久性数据以计算activity的实际类型的方法WorkflowActivity

1 个答案:

答案 0 :(得分:2)

通过WF API无法获得本机支持,您需要提供自己的解决方案。

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

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

在保留之前,使用自定义活动为您保存。出于各种原因,这不是最佳或最正确的方式。