sapui5 - SAPUI5 元数据在更改后不刷新
问题描述
SAPUI5
我们在服务维护方面遇到了问题。通过SEGW
事务对服务实体进行更改后,客户端加载的元数据GW
保持更改前的状态。
例如,有一个日期字段变成了字符串,并GW
抛出invalid or no mapping to system data types found
. 原因是试图将字符串日期值(如 '16.05.2019')放入日期类型(实体的元数据不会以某种方式刷新)。
我们尝试刷新这些缓存:
- 重新计算索引
- 世芯
- 全局缓存
通过:
- /iwfnd/cache_cleanup
- /ui2/invalidate_global_caches
- /ui5/app_index_calculate
我们还重新加载了元数据,甚至删除了实体并重新创建它——所有这些都失败了。
在/IWFND_GW_CLIENT
事务中显示更新的元数据。
只有重新创建具有不同名称的实体似乎可以解决它,但它似乎不是维护服务的好方法......
解决方案
/IWFND/CACHE_CLEANUP
是唯一与 OData 相关的,其他缓存用于部署的 UI5 应用程序。如果您处于具有多个后端系统的 GatewayHub 环境中,则必须在两个系统上运行事务。
如果事务不这样做,则两个系统都会进行另一个缓存清理,SAP 以不同的方式实现。这是我在 SEGW 后端系统中更改服务后所做的事情:
- 后端
SEGW
:重新生成运行时对象 - GatewayHub (GW)
/IWFND/GW_CLIENT
执行/sap/opu/odata/ZyourService_SRV/$metadata
。服务不变 - 在顶部菜单中的同一事务中:
Metadata -> Cleanup Cache -> on both systems
- 再次执行
/sap/opu/odata/ZyourService_SRV/$metadata
。有变化的服务 - 现在前端只剩下一个浏览器缓存,它可能包含过时的信息。通常,您的应用程序的硬刷新应该使浏览器重新加载元数据。在 Chrome 浏览器的开发者控制台中,在网络选项卡中,您还可以在控制台打开时禁用缓存。
- 对于最新的 GatewayHub 系统, SAP 引入了带有 CacheBuster 的 Odata 缓存和一个应该定期计划的程序
为确保令牌是最新的,必须定期执行报告 /UI5/UPD_ODATA_METADATA_CACHE。
推荐阅读
- google-smart-home - 本地履行不广播
- r - 有没有办法在 R 函数中保留日志?
- html - 为什么我所有的 svg 图标都堆积在左侧?(广场空间)
- firebase - 从firebase获取数据时如何过滤flutter中的项目
- scala - Scala 帮助写 Map
- javascript - 如何对勾选的 RadioButtons 求和
- python - AttributeError:“str”对象没有属性“get”——Discord.py
- azure-ad-b2c - ADB2C 如何在两个不同的应用程序之间共享用户令牌?
- python - SQLAlchemy update objects tree
- java - CameraX ImageCapture Hit timeout for jpeg 回调