[英]How to Reassign Workflow Tasks in Workflow Sharepoint 2010?
我是SharePoint 2010的初学者。我有一个创建任务的SharePoint 2010工作流。 该任务具有自定义表单,提交表单后将执行自定义代码。 但是,如果实际用户无法提交任务,我想将当前任务重新分配给其他用户。
我在http://sharepoint.aspcode.net/view/635399286724222582137494/correct-way-to-reassign-workflow-tasks-in-visual-studio-wf中找到了代码。 代码如下:
web.AllowUnsafeUpdates = true;
//SPUser Approver = workflowProperties.Web.AllUsers["To"];
int tid = onTaskChanged1_AfterProperties1.TaskItemId;
SPListItem currentTaskItem = workflowProperties.TaskList.GetItemById(tid);
string TaskApproval = (currentTaskItem["Approval"].ToString());
if (TaskApproval.Length > 0)
{
//workflowProperties.LogComment(TaskApproval, "The item was " + TaskApproval + " by " + Approver.Name);
if (TaskApproval == "Reassigned")
{
Hashtable ht = new System.Collections.Hashtable();
ht[SPBuiltInFieldId.WorkflowVersion] = 1;
ht[SPBuiltInFieldId.AssignedTo] = currentTaskItem["ReassignedTo"];
ht["ReassignedTo"] = null;
ht["Approval"] = string.Empty;
//currentTaskItem.SystemUpdate();
SPWorkflowTask.AlterTask(currentTaskItem, ht, false);
}
else
{
//perform actions if item is not reassigned
}
}
我在任务列表中创建了两个字段,分别是“批准”和“重新分配给”。 在“批准”字段中,我放置了值“重新分配”,在“重新分配到”字段中,是将任务重新分配给的用户的值。
但我得到这个错误:
该任务当前被正在运行的工作流锁定,无法进行编辑
这是我发现的错误:
http://i.imgur.com/4arY4By.jpg
如何纠正这个问题? 在执行代码之前是否需要先暂停工作流程?
终止工作流程(因为它确实挂起了,您无法做很多事情)并开始新的工作流程。
现在打开SharePoint 2010命令行管理程序(PowerShell)并运行以下命令(或类似代码):
$s = Get-SPSite("http://intranet")
$w = $s.RootWeb
$i = $w.GetFile("http://intranet/Shared Documents/Instructions.txt").Item
$t = $i.Tasks[0]
$ht = new-object Hashtable
$ht["TaskStatus"] = "Approved"
[Microsoft.SharePoint.Workflow.SPWorkflowTask]::AlterTask($t, $ht, $false)
在我经过测试的任何环境中,这都将起作用并正确完成批准周期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.