[Sharepoint]How to Complete Task using code and send to next task

来源:互联网 发布:算法的国内研究现状 编辑:程序博客网 时间:2024/06/06 20:29

为了实现批量签核,需在代码中实现完成task并自动生成下一步task的功能.

先在Task列表中找到相应的task记录, 如下代码中是 taskListItem , 且在工作流中有一个 checkbox 域-- Result 来标记签核结果

Hashtable data = new Hashtable();                    data[SPBuiltInFieldId.Completed] = "TRUE";                    data[SPBuiltInFieldId.PercentComplete] = 1;                    data[SPBuiltInFieldId.TaskStatus] =                        SPResource.GetString(new CultureInfo((int)taskListItem.Web.Language, false),                                                      "WorkflowTaskStatusComplete", new object[0]);                    data[taskListItem.Fields["Result"].Id] = "TRUE";                    //data[taskListItem.Fields["Outcome"].Id] = "Completed";                    data[SPBuiltInFieldId.Outcome] = "Completed";                    data[SPBuiltInFieldId.FormData] = SPWorkflowStatus.Completed;                    //data[SPBuiltInFieldId.TaskStatus] = "#";   // This would mean that the task has been Approved                     //ht["TaskStatus"] = "@";   // This would mean that the task has been Rejected                     web.AllowUnsafeUpdates = true;                    SPWorkflowTask.AlterTask(taskListItem, data, true);


 

另外也可以根据表单记录来找到task然后实现签核

SPSite site = new SPSite("http://servername/");using (SPWeb web = site.OpenWeb()){  SPList list = web.Lists["TestList"];  SPListItem item = list.GetItemById(22);  SPWorkflow workflow = item.Workflows[0];  SPWorkflowTask task = workflow.Tasks[0];  Hashtable ht = new Hashtable();         ht[SPBuiltInFieldId.Completed] = "TRUE";  ht["Completed"] = "TRUE";  ht[SPBuiltInFieldId.PercentComplete] = 1.0f;  ht["PercentComplete"] = 1.0f;  ht["Status"] = "Completed";  ht[SPBuiltInFieldId.TaskStatus] = SPResource.GetString(new CultureInfo((int)task.Web.Language, false), Strings.WorkflowStatusCompleted, new object[0]);  ht[SPBuiltInFieldId.WorkflowOutcome] = "Approved";  ht["TaskStatus"] = "Approved";  ht["FormData"] = SPWorkflowStatus.Completed;  web.AllowUnsafeUpdates = true;  SPWorkflowTask.AlterTask((task as SPListItem), ht, true);}


 

 

 

参考:

http://social.msdn.microsoft.com/Forums/en-US/sharepointworkflow/thread/f2dc501d-f47b-4f47-a9f8-78b6af96ad60

http://social.technet.microsoft.com/Forums/en-SG/sharepoint2010programming/thread/0b915df7-6cef-4121-ba2d-999662659a27