繁体   English   中英

如何在Workflow Sharepoint 2010中重新分配工作流程任务?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM