3

在 WF4 中将实例存储数据库从生产服务器复制到开发服务器的正确方法是什么?我们有一个在 AppFabric 和 IIS 上使用 Windows Workflow Foundation 4 的应用程序。我们有一台带有 SQL Server 2008 R2 的机器,它为生产环境托管我们的实例存储数据库,还有一台单独的机器,也带有 SQL Server 2008 R2,为开发环境托管我们的实例存储数据库。现在,我们需要将生产环境中的确切状态复制到开发环境中。对于简单的业务数据库,我只是要求我们的数据中心备份开发业务数据库(Oracle 服务器),然后将开发业务数据库完全替换为生产数据库的副本(也是单独的机器)。

但事实证明它没有。复制后,在开发环境中运行应用程序,每当它尝试恢复实例书签或调用作为已启动工作流的一部分的实例操作时,我们都会在具有标识符的服务实例上获得“操作”[操作名称]' [guid]' 目前无法执行。请确保操作以正确的顺序执行,并且使用中的绑定提供有序交付保证”异常消息。

另一方面,如果我们开始一个新的工作流程,它可以正常工作并且可以毫无问题地持续到最后。通过简要查看 System.Activities.DurableInstancing.InstancesTable,在我看来,在复制之后,无法正确识别以前的工作流实例,并且 WF4 尝试启动新实例,这导致“操作顺序不正确”事物。例如,这些新创建的实例的 ServiceDeploymentId id 与从生产中复制的实例中的不同。但我对 WF4 的经验真的很少,而且对发生的事情几乎一无所知。(在创建这篇文章之前,我确实从 StackExchange 和其他来源搜索了答案。)

我们如何创建生产 WF4 实例存储的副本,一旦在我们的开发服务器中,将在开发环境中与我们的应用程序一起使用,因为它具有与生产相同的应用程序状态?谢谢。

请帮忙(2013 年 9 月 10 日)

再一次问好。我想知道为什么到目前为止还没有对这篇文章的评论。事实上,使用生产环境中的数据更新开发或 QA 环境中的数据是很常见的事情。而且我几乎可以肯定,WF4 工作流程也会定期以某种方式完成这项工作。这是将 WF4 工作流的状态从一个数据库服务器(生产)复制到另一个数据库服务器(QA 或开发)的问题,以便在 QA 或开发环境中运行的应用程序可以“获得”与生产服务器相同的应用程序状态,从那里可以继续推进和使用从生产中复制的工作流程,但在其自己的环境中,无缝。拜托,如果有人这样做了,或者知道怎么做,并且很乐意阐明这个问题,这将不胜感激。谢谢并恭祝安康。

4

1 回答 1

3

Jesús López在这个MSDN 线程中给了我答案,在那里我提出了与 StackOverflow 线程中完全相同的问题。

首先,他问:“工作流服务(xalmx 文件)的 [IIS] 路径在生产中与开发中是否相同?如果路径不同是因为虚拟目录不同,那么 WorkflowHostType 列也不同,这可能会导致问题。”</p>

在让他知道 IIS站点名称在生产环境和开发环境中实际上是不同的之后,即使工作流服务的其余路径相同,他回答说:“两个 [IIS 站点]必须具有相同的名称。我刚刚测试过了。我在 IIS 中更改了站点名称,突然 WorkflowHostType 发生了变化。因此,空闲的持久工作流将不再加载。” 然后他补充说:“请看这篇文章,它解释了 WorkflowHostType 是如何生成的:Broken WF4 workflow rehydration ”。

这就是诀窍!在我的例子中,我只需要在开发环境中重命名 IIS 站点名称以与生产环境中的 IIS 站点名称完全匹配。一旦我们的数据中心使用生产数据库服务器中的实例存储副本更新了开发数据库服务器中的 WF4 实例存储,开发应用程序就正确地获取了与生产应用程序相同的 WF4 状态,因为复制的工作流被正确识别和加载。最后,我们可以将这个系统的业务数据和WF4状态从生产环境复制到开发环境中,并在不接触生产数据的情况下调查生产问题。

正如 Jesús 帮助我理解的那样,原因是:托管 WF4 工作流服务(.xamlx 文件)的 IIS 应用程序的完整路径必须完全相同,包括 IIS 站点名称,如果要在它们之间复制 WF4 实例存储数据库应用程序(在不同的环境中),因为显然服务文件名、站点名称和路径都是WorkflowHostType 列的值计算的一部分。这样,应用程序为每个空闲的持久化工作流查找的工作流主机类型的值将匹配复制的实例存储数据库中 System.Activities.DurableInstancing.InstancesTable 的 WorkflowHostType 列中的相应值,从而允许系统正确从复制的实例存储数据库中的数据中识别并重新激活这些工作流。

我希望这些信息可以帮助其他人经历与我相同的情况。如果您认为这个答案需要进一步澄清,请告诉我。

最好的问候,大家。

于 2013-10-01T20:15:52.710 回答