首次运行时Sharepoint工作流程失败但在手动运行时成功

时间:2009-03-04 14:21:55

标签: sharepoint sharepoint-2007 sharepoint-api

我们正在使用一个infopath表单,在提交时应该启动自定义.NET工作流程。基本上,表单中的信息用于创建新的sharepoint站点。我所看到的是第一次工作流运行(在提交表单后自动),工作流错误。当我在失败后立即手动运行工作流程时,工作流程运行良好。

this.workflowProperties.Item["Client Name"]

我已将问题调试到上面的行,其中workflowProperties的类型为Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties。工作流首次运行时,上面列出的属性(以及所有其他属性)为空。第二次运行时,客户端名称属性应该是(从infopath表单填充)。

另一个重要的信息是,这个工作流程运行良好超过一年,几周前突然开始无法正常工作,没有特别的原因。过去一个月我们遇到了一些权限问题,但我看不出这与工作流程问题有什么关系。我登录的用户是网站集管理员。我使用相同的用户手动关闭工作流程(成功)。我认为工作流程不会像登录用户那样运行(当它在表单提交时自动运行时)。

整个情况的另一个有趣的皱纹:应用程序总共有3个自定义工作流程。 2是在视觉工作室制作的 - 其中一个工作正常,另一个则显示上述行为。最后一个是在sharepoint设计师中制作的,并且失败了。

我愿意在这一点上尝试任何事情。我在开发服务器上(显示生产的确切症状)所以我可以尝试任何事情。

4 个答案:

答案 0 :(得分:1)

我猜这与从设置字段值的提交操作异步触发的工作流有关。您是否可以尝试从列表中明确地获取项目,而不是使用工作流属性中的项目。如下所示:

SPListItem l_item = 
      workflowProperties.Item.List.Items.GetItemById(
                 workflowProperties.Item.Id
      );

我不确定,但值得一试。

要记住的另一件事是SPContext.Current对象如果从EventReceiver调用则为null,但如果手动调用则该对象有效。听起来这不是问题所在,但它仍然需要注意。

答案 1 :(得分:1)

如果InfoPath表单是从Vista或Win 7计算机提交的,则可能会遇到以下问题:获取InfoPath表单中字段的NULL值。尝试添加大约10秒的延迟活动,看看您是否能够从InfoPath获取字段的值。

有关详细信息,请参阅此链接:Why does my SharePoint workflow fail when the client is running Vista or Windows 7?

答案 2 :(得分:0)

尝试查看SharePoint日志。

它们位于LOGS文件夹中的12-Hive下 - 打开最新版本并查找其中包含“工作流基础结构”的内容,这可能会指向正确的方向。

答案 3 :(得分:0)

“解决方案”是导出并转移到新服务器。基本上只需使用STSADM进行导出操作,然后在新服务器上导入相同的文件。

请参阅:

http://sharepointdogs.wordpress.com/2008/07/30/content-migration-or-backuprestore-in-moss-2007/

我在这个问题上与微软支持人员通电了几个小时 - 对于可能遇到此问题的其他人来说,转移到新服务器是我的建议。