我正在开发一个简单的SharePoint顺序工作流,它应绑定到文档库.将小工作流程与文档库关联时,我检查了这些选项
允许具有"编辑项目权限"的经过身份验证的用户手动启动此工作流.
创建新项目时启动此工作流程.
更改项目时启动此工作流程.
现在我将文档上传到此库,工作流程启动,例如发送邮件.它完成了,一切都很好.
当我在新项目上选择编辑属性并保存更改时,将再次触发工作流程.绝对是我们的期望.
即使在Copy.asmx Webservice的帮助下将新项目复制到库中,工作流程也会正常启动.
但现在我想通过SharePoint WebService Lists.asmx更新项目.
我的CAML在这里:
1 NewValue
项目正在更新(时间戳已更改并且还具有虚拟属性)但工作流程不会再次启动.
这种行为可以在我们的开发和测试系统上重现.
检查错误日志(C:\ Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS)我发现了一条奇怪的错误消息:
09/25/2008 16:51:40.17 w3wp.exe (0x1D94) 0x1D60 Windows SharePoint Services General 6875 Critical Error loading and running event receiver Microsoft.SharePoint.Workflow.SPWorkflowAutostartEventReceiver in Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Additional information is below. : The object specified does not belong to a list.
有谁可以证实这种行为?或任何解决方案提示?
我随时向您通报有关该主题的任何进展.
最后,我们完成了Microsoft的支持服务流程并获得了解决方案!
首先,微软称这是一个错误.这是一个小错误,因为有一个很好的解决方法,所以可能需要一些更长的时间,直到这个错误将被修复(支持技术人员说下一个服务包或下一个版本(!)的东西).
但现在为了这个问题.
reaseon
我们来看看我的问题中的CAML代码:
1 NewValue
由于任何原因,Workflow Manager无法使用ID,我们在第二行输入.奇怪的是,所有其他SharePoint命令都使用ID,但不使用Workflow Manager.Workflow Manager使用"完全限定"的文档名称.因此,由于我们没有任何线索并且未输入任何完全限定的文档名称,因此Workflow Manager默认使用当前文档库的名称.现在错误消息开始有意义:
The object specified does not belong to a list.
当然,对象(文档库)不属于列表,它是列表.
解决方案
我们必须在CAML查询中再添加一行:
/sites/mySite/myDocLib/myFolder/myDocument.txt
FileRef将完全限定的文档名称传递给Workflow Manager,它现在非常开心 - 启动项目的工作流程.
请注意,您必须包含完整的绝对服务器路径,省略您的服务器名称(例如,在您的SPItem的ServerRelativePath属性中找到).
完整的CAML查询:
1 /sites/mySite/myDocLib/myFolder/myDocument.txt NewValue
未来
也许这种未记录的行为可能会在即将推出的一个服务包中修复,也许不会.Microsoft支持道歉,并将发布有关此主题的MSDN文章.对于下个月,我希望关于stackoverflow的这篇文章能够帮助开发人员处理相同的情况.
谢谢阅读!