簡體   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