SharePoint 2013 REST API AJAX 更新工作流任务

Posted

技术标签:

【中文标题】SharePoint 2013 REST API AJAX 更新工作流任务【英文标题】:SharePoint 2013 REST API AJAX update workflow task 【发布时间】:2016-11-04 21:46:44 【问题描述】:

我需要你的帮助。 我想完成自定义工作流任务,(SH 2010 WF)在 2013 年运行。 我一直在使用一段代码。在 javascript AJAX 中使用 Rest API 更新任务列表。 我用其他列表测试此代码并运行正常,但是当我想更新任务列表时。我收到了不同的错误消息。

如果我想更新 Title 提交,我收到了 ""message":"lang":"es-ES","value":"Value 不在预期范围内。","status" :400,"statusText":"错误请求""

如果我想更新结果字段,我可以在属性中看到该字段。

您对如何使用 Rest API 处理工作流任务及其内容类型有任何概念性描述

提前致谢 拉米罗

我将分享我的代码。

function updateJson(endpointUri,payload, success, error) 
          
    return getFormDigest('https://partner.coca-cola.com/sites/SLBU2013Test/POC').then(function (data) 
        $.ajax(       
           url: endpointUri,   
           type: "POST",   
           data: JSON.stringify(payload),
           contentType: "application/json;odata=verbose",
           headers:  
              "Accept": "application/json;odata=verbose",
              "X-RequestDigest" :  data.d.GetContextWebInformation.FormDigestValue,
              "X-HTTP-Method": "MERGE",
               "If-Match": "*"
           ,   
           success: success,
           error: error
        );
    );


function getItemTypeForListName(name) 
    console.log("SP.Data." + name.charAt(0).toUpperCase() + name.slice(1) + "ListItem");

    return"SP.Data." + name.charAt(0).toUpperCase() + name.slice(1) + "ListItem";



function updateListItem(webUrl,listTitle,listItemId,itemProperties,success,failure)


         var listItemUri =  webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/items(" + listItemId + ")";
         console.log(listItemUri);
         var itemPayload = 
             '__metadata': 'type': 'SP.Data.TasksListItem'
           ;
         for(var prop in itemProperties)
               itemPayload[prop] = itemProperties[prop];
               console.log(itemProperties[prop]);
         
         updateJson(listItemUri,itemPayload,success,failure);



function getFormDigest(webUrl) 
    return $.ajax(
        url: webUrl + "/_api/contextinfo",
        method: "POST",
        headers:  "Accept": "application/json; odata=verbose" 
    );


function Calcular ()

    var itemProperties = 'Status':'Completadas';
    updateListItem('https://partner.coca-cola.com/sites/SLBU2013Test/POC','Tasks',2,itemProperties,printInfo,logError);
    function printInfo()
    
        console.log('Item has been created');
    
    function logError(error)
        console.log(JSON.stringify(error));
    

;

【问题讨论】:

我们遇到了同样的问题。你找到解决办法了吗? 【参考方案1】:

还有一个类似的帖子。我的回答是进行一些屏幕抓取并将用户重定向到 UI。简而言之,我们无法使用 REST 更新列表,但可以使用 CSOM。无论如何,WF 忽略了任务更改。这是链接:Update task item programatically in Sharepoint with CSOM。

【讨论】:

以上是关于SharePoint 2013 REST API AJAX 更新工作流任务的主要内容,如果未能解决你的问题,请参考以下文章

Sharepoint 2013 通过 REST API:尝试创建项目时禁止出现错误 403

text 更新项REST API调用SharePoint 2013

javascript 删除项REST API调用SharePoint 2013

Sharepoint 2013:通过REST API确保用户

javascript 提取d.data REST API调用SharePoint 2013

SharePoint 2013 REST API AJAX 更新工作流任务