我有几个应该在单个批量请求中并行启动的调用。此请求是函数导入调用和两个读取请求。 sapui5版本为1.38.17,本期使用的odata模型为v2。
这是请求电话。
var oContext = this.getView().getBindingContext();
var oModel = this.getModel();
oModel.setDeferredGroups(["CSC"]);
oModel.setChangeGroups({
"FunctionImport1": {
groupId: "CSC",
changeSetId: "CSC1",
single: false
},
"ToRead1Set": {
groupId: "CSC",
changeSetId: "CSC1",
single: false
},
"ToRead2Set": {
groupId: "CSC",
changeSetId: "CSC1",
single: false
}
});
oModel.callFunction("/FunctionImport1", {
method: "POST",
groupId: "CSC",
changeSetId: "CSC1",
urlParameters: {
"Arg1": oContext.getObject("GUID"),
"Arg2": "",
"Arg3": ""
}
});
var sGUID1= oContext.getObject("ToRead1/GUID");
var sGUID2 = oContext.getObject("ToRead2/GUID");
oModel.read(oModel.createKey("/ToRead1Set", { GUID: sGUID2 }), {
groupId: "CSC",
changeSetId: "CSC1"
});
oModel.read(oModel.createKey("/ToRead2Set", { GUID: sGUID2 }), {
groupId: "CSC",
changeSetId: "CSC1"
});
oModel.submitChanges({
groupId: "CSC"
});
最初只有callFunction
和读取操作调用。
在我发现请求不在同一批次后,我添加了setDeferredGroup
电话,但这没有帮助。在那之后,我尝试添加setChangesGroups
,但也没有。
这是sapui5 odata模型发送的内容。
--batch_e90b-96a1-4abd
Content-Type: multipart/mixed; boundary=changeset_f22c-3b40-d8af
--changeset_f22c-3b40-d8af
Content-Type: application/http
Content-Transfer-Encoding: binary
POST FunctionImport1?Arg1='123123123123'&Arg2=''&Arg3='' HTTP/1.1
sap-contextid-accept: header
Accept: application/json
Accept-Language: en
DataServiceVersion: 2.0
MaxDataServiceVersion: 2.0
x-csrf-token: prD6hap9bHc_pk8kt1Q7pg==
Content-Type: application/json
--changeset_f22c-3b40-d8af--
--batch_e90b-96a1-4abd
Content-Type: application/http
Content-Transfer-Encoding: binary
GET ToRead1Set('') HTTP/1.1
sap-contextid-accept: header
Accept: application/json
Accept-Language: en
DataServiceVersion: 2.0
MaxDataServiceVersion: 2.0
x-csrf-token: prD6hap9bHc_pk8kt1Q7pg==
--batch_e90b-96a1-4abd
Content-Type: application/http
Content-Transfer-Encoding: binary
GET ToRead2Set('') HTTP/1.1
sap-contextid-accept: header
Accept: application/json
Accept-Language: en
DataServiceVersion: 2.0
MaxDataServiceVersion: 2.0
x-csrf-token: prD6hap9bHc_pk8kt1Q7pg==
--batch_e90b-96a1-4abd--
请注意,批处理ID和changesSet ID是相同的,因此,逻辑上它对于每个请求都是相同的批处理,但实际上后端和SAP Netweaver网关服务认为它是三个单独的批处理请求。
所以,问题是 1.它是SAPUI5 bug还是Gateway bug,如果它是一个bug呢? 2.如果没有使用--batch行对请求进行精神划分,我如何将此请求放入单批请求中。
我开始考虑捕获已形成的有效负载并在这个特定情况的请求之间手动剪切 - 分隔符,因为无法找到另一种方法。