【学习系列】SAP RAP 6:行为定义-Concurrency Control
前言
前一篇中介绍了行为定义中编号Numbering的使用方式,本篇介绍下RAP行为定义中的并发控制Concurrency Control,并发控制可以防止不同用户同时访问数据库并互相干扰,确保只有在保证数据一致性的情况下才能更改数据,并发控制有两种方式:乐观并发控制和悲观并发控制。
正文
乐观并发控制
乐观控制并发依赖于ETag字段,即数据每一次更改都会刷新指定的ETag字段,并且乐观并发控制仅在通过OData消费业务对象时才有意义,所以ETag也称为OData ETag。
下面说明了对同一实例进行操作的两个不同客户的ETag检查:
如上图所示,假定两个用户同时要对一个订单进行更改,那么用户1和用户2都需要先get到当前的ETag,假定用户1先执行了在upate请求,将ETag附加在请求header中一并传给后端,后端在判断本次传进来的ETag是不是跟上一次一致,如果一致则更改成功,并将ETag设置为一个新的值;然后用户2晚一点也发起了update请求,这次后端对比ETag时,发现已经和传入的ETag不一致了,那么系统就会阻止本次修改请求,避免覆盖用户1更改的内容。
在上面SAP官方的运行示例图中可以看到,读取ETag的行为是通过READ方法读取的,在managed场景中,这是由框架自动完成的,