这是Odata$批处理一章的第二部分。单击此处查看Odata$批处理第1部分
到目前为止,我们已经看到:
1)更改集在$batch中的默认行为。
2)更改集如何只能包含一个操作,以及每个更改集如何被视为单个LUW
3)以便在中有多个操作作为一个变更集,家居智能化系统价格,sapgw框架提供了一种延迟模式。这将改变默认的处理模式。这是通过在changes et begin method中标记defer mode=X来完成的。
对于defer mode:
1)method CHANGESET\u begin用cv\u defer\u mode=abap\u true重新定义
2)method CHANGESET\u PROCESS重新定义为具有创建物料+将物料扩展到工厂的逻辑
3)变更集中的所有操作被视为$batch request下的一个LUW
有2个变更集:
变更集C01–1 POST(用于物料创建)和1 PUT(物料更新)
变更集C02–1 POST和1 PUT
变更集C01
变更集C02
响应:
C01 POST响应
C01 PUT响应
C02 POST响应
C02 PUT响应
延迟处理旨在实现性能增益。允许在更改集中执行多个操作(单个LUW)。让我们比较一下默认处理和延迟处理之间的时间,
要检查邮递员所消耗的时间,请在下面添加标题参数"sap statistics=true"
默认处理模式请求包含:
1)两个检索操作,
2)两个变更集如下:
C01包含1个后处理操作
C02包含1个PUT操作
请求:
C01 GET请求
C01 POST&C02 PUT请求
响应如下:
GET响应
C01 POST响应
C01 PUT响应
所用时间为:
默认处理模式所用时间
查看tcode/IWFND/TRACES,我们看到GW所用的时间是395毫秒(ms)
前端跟踪
前端跟踪详细信息
另一个好的网关统计工具(tcode/IWFND/STATS)将显示以下总体结果:
网关统计工具
更多关于GW性能和测量时间的详细信息可以在这里找到。
移动到延迟模式处理。变更集begin和变更集process方法如前所述实现。现在让我们在延迟模式下运行早期操作。
请求:
获取请求
C01 POST&PUT请求
响应:
获取响应
获取&C01 POST响应
C01 PUT响应
所用时间为:
延迟模式所用时间
默认行为处理所用时间为395毫秒。
延迟处理模式所用时间为249毫秒。
我们看到性能增益因子为大约36%。性能还取决于其他因素,如:系统+网络资源。对于更多的操作,云服务器和服务器,延迟处理会有很好的性能,因为它对一个变更集只有一个LUW处理
如果有多个操作,一个操作可以使用内容ID引用引用另一个操作,而不是使用运行时可能不知道的实体键。
例如在我们的模型中,大数据培训班,我们一直在使用MaterialSet和MaterialPlantSet.
Odata模型
如果MaterialSet有后期操作。假设MAT1是新创建的。如果我们要为新生成的MAT1在MaterialPlantSet上运行一个POST,淘客返利,MaterialPlantSet需要在运行时了解新创建的材质。这是通过内容ID引用实现的。
操作之间的运行时关系
使用内容ID第二个操作可以引用第一个操作中生成的物料。让我们运行这个示例。
内容ID只能在延迟模式下使用,即在更改集中存在多个操作。
内容ID请求
响应:
内容ID响应
当框架调用CHANGESET\u BEGIN时,返现是什么意思,我们看到它收集了两个更改集操作以及内容ID引用
Debug–CHANGESET\u BEGIN方法
当调用CHANGESET\u PROCESS时,执行这两个操作。
Debug–CHANGESET\u PROCESS方法
Content ID的使用在销售订单头/项目或更像采购订单/项目的场景中非常有用。
因此我们基本上介绍了使用json的$batch requests的基础和高级特性。
我们确实看到了区别在默认处理和延迟处理之间。这将是所有的$batch请求实验。希望这些概念将是明确的,并将证明有益于那些使用$批处理请求。非常感谢。