SHAREPOINT开箱审批工作流程批准/拒绝评论,当编程改变它的问题 [英] Sharepoint Out of the box Approval Workflow Approve/Reject comments issue when programmatically altering it

查看:257
本文介绍了SHAREPOINT开箱审批工作流程批准/拒绝评论,当编程改变它的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个可重复使用的开箱即用的SharePoint审批工作流2010,而我编程批准/拒绝使用InfoPath formcode(2010年)内下面的代码片段的工作流程。

I have a re-usable out of the box sharepoint approval workflow 2010, and I am programmatically approve/reject workflow using the below code snippet inside infopath formcode (2010).

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;

任务阿尔特法

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);
}

此代码工作正常,但任务的意见是没有得到改变,它不包括在电子邮件为好。这有什么错HT [意见]我用?它没有得到改变了任务评论。这是SharePoint 2010的工作流程和我使用InfoPath表单也是2010。

This code works fine, but the comments of the task is not getting altered and it is not included in the e-mail as well. Is there anything wrong with ht["Comments"] that I use? It is not getting altered in task comments. This is SharePoint 2010 workflows and infopath form i am using is also 2010.

任何人都面临着类似的问题?

Anyone faced similar problem ?

推荐答案

要添加注释,当你批准/拒绝它,你只需要AlterTask之前,使用该行任务:

To add a comment to a task when you Approve/Reject it, you just need to use the line before AlterTask:

ht["ows_FieldName_Comments"] = comments;

在任务被批准,你可以看到在工作流历史记录列表中的注释。

After the task is approved you can see the comments in the Workflow History List.

您也可以从一个任务的所有综合意见有:

You can also get all the consolidated comments from a task with:

Hashtable extProperties = SPWorkflowTask.GetExtendedPropertiesAsHashtable(currentTask);

string consolidatedComments = extProperties["FieldName_ConsolidatedComments"].ToString();



祝你好运!

Good luck!

这篇关于SHAREPOINT开箱审批工作流程批准/拒绝评论,当编程改变它的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆