我试图理解如何在不知道活动的具体类型的情况下如何恢复(加载)先前持久的WF4活动。
为了加载一个持久化的活动,我不仅需要它workflowId
(我有),但我也需要传递一个活动的实例 - 所以我需要知道它的类型:
var workflowApplication = new WorkflowApplication(activity); // what type is activity?
workflowApplication.Load(workflowId);
问题在于它可能是多种类型之一 - 此活动旨在用于其他活动和工作流程:它将消息发送到消息队列,书签然后保留。当通过消息队列接收到相应的消息时,它会恢复,但我不知道原始工作流的确切具体类型,而不检查持久性数据。这看起来像捕获22。我无法在不知道活动类型的情况下加载工作流程,如果不加载工作流程并检查其持久化数据,我无法知道活动类型。
我觉得我在这里遗漏了一些东西 - 有没有办法在不知道活动的情况下创建托管WorkflowActivity,或者在创建之前重新加载持久性数据以计算activity
的实际类型的方法WorkflowActivity
?
答案 0 :(得分:2)
通过WF API无法获得本机支持,您需要提供自己的解决方案。
最快的方法:Store Extensibility使用InstancePromotedProperties表来保存自己的属性。
可能正确的方法:PersistenceIOParticipant似乎是正确的做法。只需创建自己的表来存储您想要的任何内容,包括活动的类型。
在保留之前,使用自定义活动为您保存。出于各种原因,这不是最佳或最正确的方式。