【问题标题】:Sharepoint workflow fails after upgrading solution升级解决方案后 Sharepoint 工作流失败
【发布时间】:2010-01-17 05:58:27
【问题描述】:

我有一个正在运行的工作流,它同时使用了并行活动和 OnTaskCreated 活动。该解决方案已部署在多个客户端,我最近正在进行升级,需要更换工作流程序集。升级时,我在服务器上有一些正在运行的工作流实例。

从那以后没有任何工作,我似乎无法正常完成新的工作流程。我总是在这里遇到这个错误:

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 有关,我可以在升级期间以编程方式终止所有正在运行的工作流吗?

有人知道我该如何解决这个问题吗?

【问题讨论】:

    标签: sharepoint sharepoint-2007 wss-3.0


    【解决方案1】:

    你应该听那些人的,或者至少自己调查一下他们为什么要说这些话。他们是对的,现在你知道为什么了;您已经有效地搞砸了所有正在运行的工作流程。

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

    在 sharepoint 中升级二进制工作流没有简单的方法;并排是唯一可行的方法。您提升程序集版本,创建新的 WF 关联并设置旧的 wrkflow 关联以停止接受新请求。旧工作流程将使用旧代码完成,新工作流程使用您的新代码。没办法,抱歉。

    -奥辛

    【讨论】:

    • 感谢您的回答,我将程序集版本从 1.1.0.0 转到 1.1.1.0,可能是工作流主机仅使用主要或次要版本,因此认为我仍在使用同一个版本?对我来说奇怪的是,我似乎无法正常完成新的工作流程
    • 我假设您在 GAC 中有两个工作流二进制文件,并创建了一个新的工作流关联和功能(没有替换旧的?)我没有提到您必须创建一个新功能来保留一切都分开 - 许多人将版本合并到功能名称中,例如“工作流程 1.2”
    • 不,我没有创建新功能。我只更新了版本nr。对于工作流程序集,然后更改 workflow.xml 以使版本 nr 同步。工作流关联本身是在我的代码中的事件处理程序中配置的,我没有在那里进行任何更改。还有一个问题 :) 我删除了发生此错误的 Web 应用程序(不包含任何数据,所以没关系),然后创建了一个新的 Web 应用程序,但仍然遇到相同的错误。某些工作流类型信息是否存储在配置数据库中?
    • 不要忘记也重新启动 SPTimerV3 服务(每次部署等) - 它也会将您的工作流程序集的副本也加载到内存中。是的,很多东西都保存在数据库中——你的指导原则应该是工作流升级实际上是一个完全的工作流,与旧的并排。
    • 我必须创建一个新功能吗?我在 workflow.xml 中创建了一个新的工作流,给它一个新的 guid 并更新了执行工作流关联的代码,因此它使用了新版本,但仍然没有运气。工作流程仍在进行中,有什么想法吗?我重新启动了计时器服务和 IIS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2014-04-17
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2015-02-08
    相关资源
    最近更新 更多