Tôi có thể sử dụng lại quy trình phê duyệt hộp sharepoint 2010 và tôi đang phê duyệt/từ chối lập trình công việc bằng cách sử dụng đoạn mã bên dưới mã biểu mẫu infopath (2010).Sharepoint Trong hộp phê duyệt Quy trình làm việc Phê duyệt/Từ chối vấn đề nhận xét khi lập trình thay đổi nó
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]);
if (isApprove)
{
ht[SPBuiltInFieldId.WorkflowOutcome] = "Approved";
ht["TaskStatus"] = "Approved";
ht[SPBuiltInFieldId.Comments] = "Approved by Manager";
ht["Comments"] = "Approved by Manager";
}
else
{
XPathNavigator navigatorRejectComments
= this.MainDataSource.CreateNavigator().SelectSingleNode
(XPATH_REJECT_COMMENTS, this.NamespaceManager);
ht[SPBuiltInFieldId.WorkflowOutcome] = "Rejected";
ht["TaskStatus"] = "Rejected";
ht[SPBuiltInFieldId.Comments] = navigatorRejectComments.Value.Trim();
ht["Comments"] = navigatorRejectComments.Value.Trim();
}
ht["FormData"] = SPWorkflowStatus.Completed;
web.AllowUnsafeUpdates = true;
isApproveReject = AlterTask(task, ht, true, 5, 100);
web.AllowUnsafeUpdates = false;
công tác Alter phương pháp
private static bool AlterTask(SPListItem task, Hashtable htData, bool fSynchronous, int attempts, int millisecondsTimeout)
{
if ((int)task[SPBuiltInFieldId.WorkflowVersion] != 1)
{
SPList parentList = task.ParentList.ParentWeb.Lists[new Guid(task[SPBuiltInFieldId.WorkflowListId].ToString())];
SPListItem parentItem = parentList.Items.GetItemById((int)task[SPBuiltInFieldId.WorkflowItemId]);
for (int i = 0; i < attempts; i++)
{
SPWorkflow workflow = parentItem.Workflows[new Guid(task[SPBuiltInFieldId.WorkflowInstanceID].ToString())];
if (!workflow.IsLocked)
{
task[SPBuiltInFieldId.WorkflowVersion] = 1;
task.SystemUpdate();
break;
}
if (i != attempts - 1)
Thread.Sleep(millisecondsTimeout);
}
}
return SPWorkflowTask.AlterTask(task, htData, fSynchronous);
}
Mã này hoạt động tốt, nhưng các ý kiến của nhiệm vụ là không nhận được thay đổi và nó không được bao gồm trong e-mail là tốt. Có gì sai với ht ["Bình luận"] mà tôi sử dụng? Nó không bị thay đổi trong các bình luận nhiệm vụ. Đây là quy trình công việc SharePoint 2010 và biểu mẫu infopath tôi đang sử dụng cũng là năm 2010.
Bất kỳ ai gặp phải sự cố tương tự?
Mã đó chắc chắn đã giúp tôi trong một dự án thực sự quan trọng. Bây giờ tôi sẽ làm việc trên ý kiến. Nếu tôi tìm thấy bất cứ điều gì hữu ích, tôi chắc chắn sẽ cho bạn biết. Cảm ơn! – harsimranb