2010-01-14 58 views
2

我有一个正在使用parallell和OnTaskCreated活动的正在运行的工作流程。该解决方案已部署在多个客户端,我最近正在进行升级,需要更换工作流程组件。我进行升级时,服务器上有一些正在运行的工作流实例。升级解决方案后Sharepoint工作流程失败

从此没有任何工作,我似乎无法获得一个新的工作流程正常完成。我一直在这里得到这样的错误:

01/14/2010 16:14:33.73 w3wp.exe (0x1928)       0x2514 Windows SharePoint Services  Workflow Infrastructure   936l High  Engine RunWorkflow: System.Workflow.Activities.EventDeliveryFailedException: Event "OnTaskChanged" on interface type "Microsoft.SharePoint.Workflow.ITaskService" for instance id "7697ee64-7286-46f3-992e-cf3c18731f15" cannot be delivered. ---> System.NullReferenceException: Object reference not set to an instance of an object.  at Microsoft.SharePoint.Workflow.SPWorkflowHostServiceBase.LoadInstanceData(Guid instanceId, Boolean& compressedData)  at Microsoft.SharePoint.Workflow.SPWinOePersistenceService.LoadWorkflowInstanceState(Guid instanceId)  at System.Workflow.Runtime.WorkflowRuntime.InitializeExecutor(Guid instanceId, CreationContext context, WorkflowExecutor executor, WorkflowInstance workflowInstance)  at System.Workflow.Runtime.WorkflowRuntime.Load(Guid key, CreationCont... 
01/14/2010 16:14:33.73* w3wp.exe (0x1928)       0x2514 Windows SharePoint Services  Workflow Infrastructure   936l High  ...ext context, WorkflowInstance workflowInstance)  at System.Workflow.Runtime.WorkflowRuntime.GetWorkflow(Guid instanceId)  at System.Workflow.Activities.WorkflowMessageEventHandler.EventHandler(Object sender, ExternalDataEventArgs eventArgs)  --- End of inner exception stack trace ---  at System.Workflow.Activities.WorkflowMessageEventHandler.EventHandler(Object sender, ExternalDataEventArgs eventArgs)  at Microsoft.SharePoint.Workflow.SPWinOETaskService.RaiseEvent(SPWinOeWorkflow workflow, SPWorkflowEvent workflowEvent, Object workItem, IPendingWork workHandler)  at Microsoft.SharePoint.Workflow.SPWinOeHostServices.Send(SPWinOeWorkflow winoeworkflow, SPWorkflowEvent e)  at Microsoft.SharePoint.Workflow.SPWinOeEngine.RunWorkflow(Guid trackingId, SPWorkflowHostService ho... 
01/14/2010 16:14:33.73* w3wp.exe (0x1928)       0x2514 Windows SharePoint Services  Workflow Infrastructure   936l High  ...st, SPWorkflow workflow, Collection`1 events, TimeSpan timeOut) 

我一直在谷歌上搜索这个问题,我已经找到了多种解决方案,人们劝告终止所有工作流实例是由升级前。在我看来,解决方案是不可接受的,因为我可以拥有难以管理的运行工作流程数量。

我想知道这是否可能与Sharepoint Workflow Host相关,我可以在升级过程中以编程方式终止所有正在运行的工作流吗?

有人有一个想法,我怎么能解决这个问题?

回答

3

你应该听取这些人的意见,或者至少为自己调查他们为什么说这些事情。他们是对的,现在你知道为什么;你已经有效地使所有运行中的工作流程失效。

当工作流处于非活动状态/空闲状态和/或等待事件时,SharePoint会将二进制工作流序列化到数据库。如果在睡眠/序列化时换出程序集,当SharePoint中的WF托管基础架构试图反序列化工作流以恢复它时,它将失败,因为目标类型已更改(因为您已“升级”它)。

没有简单的方法来升级Sharepoint中的二进制工作流程;并排是唯一可行的方法。您碰撞程序集版本,创建一个新的WF关联,并设置旧的wrkflow关联来停止接受新的请求。旧的工作流程将使用旧的代码完成,新的工作流程将使用新的代码。没有其他办法,对不起。

-Oisin

+0

感谢您的回答,我碰到了集版本1.1.0.0从1.1.1.0去,会不会是工作流主机仅使用主要或次要版本,并因此认为我仍在使用相同的版本?对我来说奇怪的是,我似乎无法正常完成新的工作流程 – armannvg 2010-01-18 11:49:47

+0

我假设您在GAC中同时具有两个工作流程二进制文件,并且创建了新的工作流程关联和功能(未替换旧的工作流程?)我不好意思不提及您必须创建一个新功能来保持所有内容的独立性 - 许多人将该版本合并到功能名称中,例如“工作流程1.2” – x0n 2010-01-18 14:58:47

+0

不,我没有创建新功能。我只更新了版本号。对于工作流程组合,然后更改workflow.xml以使版本nr同步。工作流关联本身是在我的代码中的事件处理程序中配置的,并且我没有在那里更改任何内容。还有一个问题:)我删除了网络应用程序,这个错误发生在(不包含任何数据,所以这是确定的),然后创建一个新的Web应用程序,仍然得到相同的错误。某些工作流程类型信息是否存储在配置数据库中? – armannvg 2010-01-18 16:16:42

相关问题