Workflow 加载持久化工作流时如何告知活动类型

Workflow 加载持久化工作流时如何告知活动类型,workflow,workflow-foundation-4,Workflow,Workflow Foundation 4,问题: 有没有一种简单的方法可以找出创建工作流所使用的活动类型 背景: 我正在编写自己的基于Windows Workflow 4宿主引擎的WorkflowApplication,在尝试从数据库中加载持久化工作流时遇到了一些问题。我正在使用WorkflowApplication.Load(Guid)方法启动工作流,但这要求我已经创建了WorkflowApplication 查看SqlWorkflowInstanceStore数据库,我看不到存储在任何地方的类型名称,也看不到易于关联的名称,除非我自

问题:

有没有一种简单的方法可以找出创建工作流所使用的活动类型

背景:

我正在编写自己的基于Windows Workflow 4宿主引擎的
WorkflowApplication
,在尝试从数据库中加载持久化工作流时遇到了一些问题。我正在使用
WorkflowApplication.Load(Guid)
方法启动工作流,但这要求我已经创建了
WorkflowApplication


查看
SqlWorkflowInstanceStore
数据库,我看不到存储在任何地方的类型名称,也看不到易于关联的名称,除非我自己创建另一个表来存储该信息。

使用工作流服务时,相对URL用于确定WorkflowServiceHost是否拥有工作流实例,这是通过数据库中的ServiceDeploymentsTable表完成的。当您使用Workflow应用程序时,没有类似的机制,因此您必须自己运行


可以做的一件事是使用属性提升将类型存储在InstancePromotedProperties表中。它可以避免您创建新表,但这并不是解决问题的理想方法。

我想您有两种方法可供选择,这两种方法都不是最优的:

  • 您可以使用Maurice已经建议的提升属性将信息存储在InstancePromotedProperties表中,从而避免创建自己的表。有一篇好文章
  • 如果您决定创建自己的表,我建议您实现一个。签出后,您可以始终存储类型名称或XAML,而不是路径

我只想说,在我从事这个项目的过程中,您的网站对我非常有用。它似乎是找到WF4更深入信息的唯一地方。在
持久性IOParticipant
上做出了卓越的贡献!