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

为了实现批量签核,需在代码中实现完成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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值