我的知识星球 里有一个朋友提出了 SAP OData 服务 metadata 缓存方面的疑问,本文就来详细说一说:
jerry,啥时候有时间给介绍一下fiori的Metadata数据系统的处理机制吧。我现在在做的一个项目,用rap开发的。rap开发的service binding,在maintain service注册时,开始注册的服务命名错了。后来发现了后就删除了重新创建了一次。结果就出现了一个很有意思的现象,有时候打开app,界面上的那些filtertable控件都不显示了。用前端的error_log看系统有个错误,是和以前创建的那个服务有关。可是那个服务明明已经删除了。后来我debug了一下,发现系统表/iwfnd/i_med_vaa表里确实有一条和以前的服务绑定的数据,很奇怪。我尝试了各种正常操作都不能删除这条数据。而且,更奇怪的是,前端的app并不是每次都会没有控件,有时候会有。下午大体跟了一下代码,感觉这个东西和metadata有关,还与缓存有关。感觉系统好像用到了share object缓存了数据,当缓存数据不存在时就会从vaa表去取,结果由于选的那条数据对应的服务不存在了就会异常,从而刷不出显示控件;而缓存有数据时就会用缓存的数据,所以就能显示。可缓存的数据怎么来的呢?感觉应该有个job会定时处理。可是搜了一圈,只找到一个ui5/upd_odata_metadata_cache的程序。可是这程序修改的表好像不是vaa的。感觉这里面的东西挺多的,jerry能给大体