一个业务页面同时需要航班基本信息、航班产生的碳排放数据以及来自另一套后端系统的业务属性时,最直接的做法往往是重新开发一个新的 OData 服务,把所有数据读取逻辑重新写一遍。但在 SAP Gateway 的设计里,还有另一条很有特点的路线。
已经存在的服务继续存在,已经实现的数据模型继续复用,我们只在它们上面增加一层组合关系,让多个独立的 OData Model 在消费端看来像一个新的统一服务。
SAP 把这套能力称为 Model Composition。
SAP 官方将 Model Composition 定位在较复杂的 Integration Scenario 中,文档直接列出了 SAP Business Warehouse、GenIL 和 SPI 等典型场景。它允许在 SAP_GWFND 内部把多个服务组合起来,已有 Service 和 Model Implementation 不需要因为新的消费场景而被重新开发。两个甚至更多服务,可以通过组合形成一个新的服务,同时保持原服务不变。
这里真正有意思的地方,并不是单纯把几个 Entity Type 拼进同一个$metadata,而是组合之后仍然可以建立 Association、Association Set 和 Navigation Property,并且 Gateway Hub 还能决定一次 Navigation Request 最终应该被路由到哪个 Service、哪个 System Alias、哪个 Backend。
这让 Model Composition 更像一层 OData 语义和运行时路由的编排机制,而不是简单的元数据复制。