尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ABAP CDS Transactional Query 的 Feature Scope,Projection Layer 到底允许我们做什么

ABAP CDS Transactional Query 的 Feature Scope,Projection Layer 到底允许我们做什么 在 RAP 项目里写到define view entity ... as projection on ...时,很容易产生一种错觉,Projection View 好像只是把底层 CDS View Entity 的字段重新挑一遍,留下需要暴露给 OData Service 的部分即可。真正做过较复杂的 RAP Business Object 之后会发现,事情远没有这么简单。一个真实的业务对象往往同时面对多种消费场景。销售订单后台维护界面需要展示内部状态、审批信息和技术字段,移动端应用可能只需要订单号、客户、金额和处理状态,合作伙伴 API 又可能要求另一套字段名称、另一套 association 导航关系以及更严格的数据过滤。如果为了每一种消费场景复制一套底层 Business Object,数据模型很快就会失控。SAP 为此把 Projection Layer 放在 RAP Business Object 与具体 Service 之间。官方文档将 CDS transactional query 定义为一种 CDS projection view,主要用于 RAP 中针对某个具体服务调整数据模型。它可以做 service-specific projection,也允许一定程度的数据模型扁平化,并承载 UI annotation、value help、计算、defaulting 等更贴近消费场景的配置。这种设计和 Clean Core 的思想其实非常契合。底层 interface layer 描述稳定的业务语义,projection layer 描述特定应用怎样看待这份业务数据,service definition 与 service binding
返回列表