我在任务列表上实现了一项功能。
按下按钮时,所选任务即被批准。在任务列表中,字段已正确更新。该任务也在工作流日志中正确更新。
问题是工作流程未继续,并且未创建与下一个参与者关联的任务。要更新任务,请使用以下代码。
var context = new SP.ClientContext.get_current();
var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
var list = context.get_web().get_lists().getByTitle("Test");
var item;
for (item in selectedItems)
{
var listitem = list.getItemById(selectedItems[item].id);
listitem.set_item('Completed',true);
listitem.set_item('PercentComplete',1);
listitem.set_item('FormData','Completed');
listitem.set_item('Status','Approved');
listitem.set_item('WorkflowOutcome','Approved');
listitem.update();
}
我做错了什么? 我需要做些什么才能获得正常继续的批准?
谢谢,
答案 0 :(得分:1)
我有这个有效的代码:
//编辑
在我认为的第一个版本中,我删除了无用的代码行(现已注释),我认为SPBuiltInFieldId.TaskStatus
与Status
不同,但它们是相同的字段。
ht["Completed"] = "TRUE";
ht["PercentComplete"] = 1.0f;
//ht[SPBuiltInFieldId.PercentComplete] = 1.0f;
ht["Status"] = "Completed";
//ht[SPBuiltInFieldId.TaskStatus] = SPResource.GetString(new CultureInfo((int)elevWeb.Language, false), Strings.WorkflowStatusCompleted, new object[0]);
ht["WorkflowOutcome"] = outcome;
//ht[SPBuiltInFieldId.WorkflowOutcome] = outcome;
ht["TaskStatus"] = outcome;
ht["FormData"] = outcome;
所以我认为您需要像这样更改代码:
//编辑
问题是你必须将状态设置为Completed
,而将FormData
和WorkflowOutcome
设置为正确的工作流程结果,即Approved
var listitem = list.getItemById(selectedItems[item].id);
listitem.set_item('Completed',true);
listitem.set_item('PercentComplete',1);
listitem.set_item('Status','Completed');
listitem.set_item('FormData','Approved');
listitem.set_item('WorkflowOutcome','Approved');
listitem.update();