在不知道活动的具体类型的情况下恢复持久化的窗口工作流 4 活动

本文关键字:活动 持久化 窗口 恢复 工作流 类型 不知道 情况下 | 更新日期: 2023-09-27 18:32:22

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

为了加载持久化的活动,我不仅需要它的workflowId(我有),而且我还需要传入活动的实例 - 所以我需要知道它的类型:

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

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

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

在不知道活动的具体类型的情况下恢复持久化的窗口工作流 4 活动

没有通过 WF API 执行此操作的本机支持,您必须提出自己的解决方案。

最快的方法:存储扩展性以使用 InstancePromotedProperties 表来保存您自己的属性。

可能是正确的方法

:持久性IOParticipant似乎是正确的方法。只需创建自己的表即可存储所需的任何内容,包括活动类型。

在保留之前,使用自定义活动将其保存在某个位置。由于各种原因,这不是最好或正确的方法。