4

我是sharepoint编程的新手。我有以下代码:

SPWorkflowTask  task = some_getter();
task["Status"] = "Canceled";    
task.Update();

我得到了 SPException:

Microsoft.SharePoint.SPException: "This task is currently locked by a running workflow and cannot be edited."
at Microsoft.SharePoint.SPListItem.PrepareItemForUpdate(Guid newGuidOnAdd, Boolean bMigration, Boolean& bAdd, Boolean& bPublish, Object& objAttachmentNames, Object& objAttachmentContents, Int32& parentFolderId)
at Microsoft.SharePoint.SPListItem.UpdateInternal(Boolean bSystem, Boolean bPreserveItemVersion, Guid newGuidOnAdd, Boolean bMigration, Boolean bPublish, Boolean bNoVersion, Boolean bCheckOut, Boolean bCheckin, Boolean suppressAfterEvents)
at Microsoft.SharePoint.SPListItem.Update()
at mycode

我相信我在做一些根本错误的事情。有谁能够帮助我?

4

5 回答 5

3

这是对此问题的专家评论:http: //geek.hubkey.com/2007/09/locked-workflow.html

而且,如果您已编辑任务列表中的列,此链接可能会有所帮助:http ://social.msdn.microsoft.com/Forums/en-US/sharepointworkflow/thread/8ec834b6-5408-4079-bdfb-b88d341b36bf/

希望这可以帮助

于 2008-12-17T12:15:38.517 回答
1

实际上,您可以使用 SPWorkflowTask.AlterTask(SPListItem task, Hashtable htData, bool fSynchronus) 方法修改任务扩展属性。此处的 Hashtable 包含扩展属性。

于 2009-03-12T10:42:28.707 回答
1

在您的 SPWeb 对象中,设置 AllowUnsafeUpdates = true。错误会消失。完成后请记住将 AllowUnsafeUpdates 设置为 false。

于 2009-04-12T22:56:42.333 回答
0

您需要将任务项的 SPBuiltInFieldId.WorkflowVersion 属性设置为 1 我在这里写过博客:http: //blogs.technet.com/b/meamcs/archive/2011/03/26/workflow-error-this-task -当前由运行工作流锁定且无法编辑.aspx

于 2011-03-28T13:50:15.883 回答
-1

遗憾的是,您无法从工作流外部修改工作流任务。您必须以某种方式告诉工作流来修改任务。我不是 100% 确定最好的方法是什么,我也对答案很感兴趣 :)

于 2008-12-16T15:03:14.967 回答