使用API​​提取工作流实例错误400

2020-09-22 22:50发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 上下文: 我想使用API​...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


上下文:

我想使用API​​来获取Workflow-instance,并将状态从运行更改为完成,我这样做的方式是 API集线器。 但是我遇到了错误400,但是我的代码中找不到格式或结构错误。

代码:

 function getWorkflowInstanceId(){
    $ .ajax({
    类型:" GET",
    网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/workflow-instances",
    成功:function(data,statusText,xhr){
 var instanceDetails =数据;
 var ID = instanceDetails [0] .id;
 $ .ajax({
 网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/xsrf-token",
 方法:" GET",
 标头:{
 " Authorization":"基本<...>",
 " X-CSRF-Token":"获取"
 },
 成功:功能(结果,xhr,数据){
 var令牌= data.getResponseHeader(" X-CSRF-令牌");
 $ .ajax({
 网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/task-instances/" + ID,
 方法:" PATCH",
 contentType:" application/json",
 数据:" {\"状态\":\"完成\",\"上下文\":{\" userCreationApproved \":\"" +" true" +" \"}}",
 标头:{
 " X-CSRF-Token":令牌
 },
 成功:function(){
 alert("您的批准已提交!");
 },
 错误:功能(错误){
 alert(error.statusText);
 }
 });
 },
 });
    },
    错误:function(errMsg){
 alert("不起作用" + errMsg);
    },
    contentType:" application/json"
    });
 }

 

在调试器中,我可以毫无错误地获取X-CSRF-Token和ID(workflow-instanceId)。

错误消息:

我在请求内容中找不到结构错误的格式。

所以任何建议对我都会很有帮助。

最诚挚的问候,

Joy Lee

(84.5 kB)
5条回答
hengyuye
2020-09-22 23:22

您好,Stefan,

您实际上明白了这一点。 是的,我弄错了。 我需要工作流实例ID来获取任务实例ID,然后使用任务实例PATCH API更改用户任务实例状态。 (最后我回到正确的方向,多么愚蠢的家伙)。

阅读您的评论后,我更改了密码。 如您所述,PATCH API仅期望一个简单的对象。 我没有传递数组,而不是传递数组的元素。

请在下面找到

获取任务ID:

 function getTaskInstanceId(){
 var taskID;
 $ .ajax({
 类型:" GET",
 异步:" true",
 网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/workflow-instances",
 标头:{
 definitionId:"审批者"
 },
 成功:函数(data1,statusText1,xhr1){
 var instanceID = data1 [0] .id;
 $ .ajax({
 类型:" GET",
 异步:" true",
 网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/task-instances?workflowInstanceId=" + instanceID,
 成功:函数(data2,statusText2,xhr2){
 taskID = data2 [0] .id; //taskId是数组的元素
 alert(" taskID是:" + taskID);
 },
 错误:功能(错误){
 alert("无法获取任务ID!" + error.statusText2);
 }
 });
 },
 错误:功能(错误){
 alert("无法获取工作流实例ID!" + error.statusText1);
 }
 });
 返回taskID;
 } 

调用补丁API:

 function onApprove(){
 var taskId = getTaskInstanceId();
 $ .ajax({
 网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/xsrf-token",
 方法:" GET",
 标头:{
 "授权":"基本cDE5NDMwMjkyODQ6TGp5MzMyNTk1",
 " x-csrf-token":"获取"
 },
 成功:函数(结果,xhr,数据){
 var令牌= data.getResponseHeader(" X-CSRF-令牌");
 $ .ajax({
 url:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/task-instances/" + taskId,//async:" false",
 方法:" PATCH",
 contentType:" application/json",
 数据:" {\"状态\":\"完成\",\"上下文\":{\" userCreationApproved \":\"" +" true" +" \"}}",
 标头:{
 " X-CSRF-Token":令牌
 },
 成功:function(){
 alert("您的批准已提交!");
 },
 错误:功能(错误){
 alert("无法在此ajax()中提交taskID");
 }
 });
     },
 错误:function(errMsg){
 alert("不适用于令牌" + errMsg);
 }
     });
 } 

修改后,我仍然遇到相同的问题,尽管我可以获得任务ID,但无法在jQuery.ajax中使用它来调用PATCH API。 然后我在Postman中尝试了一下,但仍然收到关于结构错误的错误400。

在第二个函数中," getTaskInstanceId()"是一个回调函数,但始终在jQuery.ajax运行结束后调用,因此我无法将taskId传递给jQuery.ajax。

如果您有任何建议,请随时回复我。

最诚挚的问候,

Joy Lee

一周热门 更多>