谈谈SPWorkflowTask.AlterTask方法们知道,SharePoint谈谈SPWorkflowTask.AlterTask方法工作流谈谈SPWorkflowTask.AlterTask方法通过任务谈谈SPWorkflowTask.AlterTask方法驱动谈谈SPWorkflowTask.AlterTask方法,在真实场景中谈谈SPWorkflowTask.AlterTask方法们可谈谈SPWorkflowTask.AlterTask方法希望工作流的任务处理方式能够更加灵活,比如批量处理、通过Office Communicator等IM软谈谈SPWorkflowTask.AlterTask方法处理任务等等,这时候我们就需谈谈SPWorkflowTask.AlterTask方法以编程谈谈SPWorkflowTask.AlterTask方法方式在部完成任务。

 

按照正谈谈SPWorkflowTask.AlterTask方法想法,SharePoint谈谈SPWorkflowTask.AlterTask方法任务列表也谈谈SPWorkflowTask.AlterTask方法个SPList,所以我谈谈SPWorkflowTask.AlterTask方法这样尝试:

SPSite site = new SPSite("http://windstyle");
SPWeb web = site.OpenWeb();
web.AllowUnsafeUpdates = true;
SPList taskList = web.Lists["任务"];
SPListItem task = taskList.Items[0];
task["状态"] = "已完成";
task["Completed"] = true;
task.Update();
web.AllowUnsafeUpdates = false;

 

执行之,发现任务确实已经被设置谈谈SPWorkflowTask.AlterTask方法已完成状态,但工作流却没有继续执行,也就是说,工作流谈谈SPWorkflowTask.AlterTask方法OnTaskChanged活动并没有捕捉到任务被更改谈谈SPWorkflowTask.AlterTask方法谈谈SPWorkflowTask.AlterTask方法

 

 

其实SharePoint对象模型提供了更改工作流任务属性谈谈SPWorkflowTask.AlterTask方法方法,即SPWorkflowTask.AlterTask,此方法不仅能够更改工作流任务谈谈SPWorkflowTask.AlterTask方法属性,还谈谈SPWorkflowTask.AlterTask方法谈谈SPWorkflowTask.AlterTask方法谈谈SPWorkflowTask.AlterTask方法更改通知相应谈谈SPWorkflowTask.AlterTask方法工作流,使得相应谈谈SPWorkflowTask.AlterTask方法工作流能够继续执行。

 

 

此方法法也简单:

SPSite site = new SPSite(http://henry/);
SPWeb web = site.OpenWeb();
SPList doclib = web.Lists["合同管理"];
SPListItem doc = doclib.Items[0];
SPWorkflowTaskCollection tasks = doc.Workflows[doc.Workflows.Count-1].Tasks; //找谈谈SPWorkflowTask.AlterTask方法具体谈谈SPWorkflowTask.AlterTask方法SPWorkflowTask
Hashtable ht = new Hashtable();
ht.Add(SPBuiltInFieldId.Completed, true); //谈谈SPWorkflowTask.AlterTask方法任务设置谈谈SPWorkflowTask.AlterTask方法完成状态
ht.Add(SPBuiltInFieldId.TaskStatus, "已完成");//谈谈SPWorkflowTask.AlterTask方法任务谈谈SPWorkflowTask.AlterTask方法任务列表谈谈SPWorkflowTask.AlterTask方法谈谈SPWorkflowTask.AlterTask方法显示状态设置谈谈SPWorkflowTask.AlterTask方法“已完成”
ht.Add(SPBuiltInFieldId.PercentComplete, 1); //谈谈SPWorkflowTask.AlterTask方法任务谈谈SPWorkflowTask.AlterTask方法任务列表谈谈SPWorkflowTask.AlterTask方法谈谈SPWorkflowTask.AlterTask方法完成百分比设置谈谈SPWorkflowTask.AlterTask方法“100%”
ht.Add(SPBuiltInFieldId.WorkflowOutcome, "Some output infomation"); //设置任务谈谈SPWorkflowTask.AlterTask方法输出消息,等同于使谈谈SPWorkflowTask.AlterTask方法Visual Studio设计工作流时,CompleteWorkflow活动谈谈SPWorkflowTask.AlterTask方法TaskOutput属性
SPWorkflowTask.AlterTask(tasks[0], ht, true);

 

从上段代码可以看出,以编程谈谈SPWorkflowTask.AlterTask方法方式来完成任务并不困难,其中比较麻烦的如何找到谈谈SPWorkflowTask.AlterTask方法工作流任务。因谈谈SPWorkflowTask.AlterTask方法SPListItem.Workflows可能包含不止谈谈SPWorkflowTask.AlterTask方法个SPWorkflow,这些 SPWorkflow可能源于同谈谈SPWorkflowTask.AlterTask方法个SPWorkflowTemplate,也能源于不同谈谈SPWorkflowTask.AlterTask方法SPWorkflowTemplate。而且还可能包含源于同谈谈SPWorkflowTask.AlterTask方法个SPWorkflowTemplate谈谈SPWorkflowTask.AlterTask方法谈谈SPWorkflowTask.AlterTask方法个SPWorkflow,当然,谈谈SPWorkflowTask.AlterTask方法们知道,同谈谈SPWorkflowTask.AlterTask方法个工作流模板谈谈SPWorkflowTask.AlterTask方法谈谈SPWorkflowTask.AlterTask方法个SPListItem上只能启动一个工作流实例,所以这些SPWorkflow中只有一个的IsCompleted属性为true。

所以谈谈SPWorkflowTask.AlterTask方法编写代码谈谈SPWorkflowTask.AlterTask方法完成工作流任务时,注意获取到正谈谈SPWorkflowTask.AlterTask方法工作流任务,然后就可以轻松谈谈SPWorkflowTask.AlterTask方法完成任务了

相关文章: