从 Service Group 到 F4 Value Help,读懂 SAP Gateway Foundation OData V4 的元数据、路由与授权设计
在 SAP Gateway Foundation 里调试一个 OData V4 服务时,经常会遇到一种很有意思的现象。业务服务本身已经在/IWFND/V4_ADMIN中发布,普通的 Entity Set 请求也完全正常,可到了 SAP Fiori 页面,点击某个字段旁边的 F4 输入帮助,浏览器却突然发出另一条看起来完全不同的请求。这个请求既不是原来的 Entity Set,也不像开发人员手工注册过的第二个 OData 服务,而是一个由 Gateway Framework 生成和管理的 F4 help service。如果仍然沿用 OData V2 时代那种一个 Service 对应一套注册、路由和授权的思维,很容易在这里走错方向。SAP Gateway Foundation 的 OData V4 运行时采用了一个非常关键的设计,配置边界不再单纯围绕某一个业务 Service,而是围绕 Service Group。路由、启动授权以及发布等配置都落在 Service Group 这一层。SAP 官方文档明确说明,Service Group 中的管理和配置会作用于组内服务,像 routing 这样的配置只需要维护一次。正因为这个设计,F4 help service 才呈现出一种很特别的身份。它在协议层面确实像一个能够接受 OData 请求的服务,在部署和管理层面却不是一个需要独立配置的普通业务服务,而更接近父 OData V4 服务在运行时派生出来的辅助服务。SAP 官方对这一点描述得很直接,一个 Service Group 在逻辑上包含分配给这个组的父 OData V4 服务所需要的 F4 help service。F4 请求进入 Gateway 之后,框架会先执行 S