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

时间:2011-01-21 22:38:12

标签: workflow workflow-foundation-4

问题:

是否有一种简单的方法可以找出用于创建工作流的活动类型?

背景:

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

查看SqlWorkflowInstanceStore数据库,我没有看到存储在任何地方的类型名称,我看不到很容易将其关联起来,而不是自己创建另一个表来存储该信息。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我猜你有两个选择,但两者都不是最佳选择:

  • 您可以使用提升的属性,因为Maurice已经建议将信息存储在InstancePromotedPropertiesTable中,并避免创建自己的表。有一篇很好的文章on MSDN
  • 如果您决定创建自己的表格,我建议您实施PersistenceIOParticipant。查看the sample,您始终可以存储类型名称或XAML而不是路径。