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

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

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

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

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

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

通过WF API没有原生支持,您需要提出自己的解决方案。

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

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

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