使用 cds init
初始化一個(gè) CAP 應(yīng)用,然后 npm install
, cds watch
啟動(dòng)服務(wù)器。
創(chuàng)建一個(gè) schema 文件,內(nèi)容如下:
namespace sap.ui.riskmanagement;using { managed } from '@sap/cds/common'; entity Risks : managed { key ID : UUID @(Core.Computed : true); title : String(100); } entity Mitigations : managed { key ID : UUID @(Core.Computed : true); risks : Association to many Risks on risks.miti = $self; }
注意,schema 文件可以定義 namespace.
這兩個(gè)模型的 key 由 CAP 服務(wù)器自動(dòng)填充,該服務(wù)器使用注釋 @(Core.Computed : true) 向服務(wù)用戶公開(kāi)。
只有 entity 還無(wú)法被 end user 消費(fèi),需要通過(guò) service 暴露給外部。
在 srv
文件夾里新建一個(gè)文件 risk-service.cds
,注意這個(gè)文件和 entity schema 文件在不同的文件夾(前者在 db
):
using { sap.ui.riskmanagement as my } from '../db/schema';@path: 'service/risk'service RiskService { entity Risks as projection on my.Risks; annotate Risks with @odata.draft.enabled; entity Mitigations as projection on my.Mitigations; annotate Mitigations with @odata.draft.enabled;}
使用 cds watch
看到的自動(dòng)生成的頁(yè)面:
這個(gè) index.html 的模板文件位置:
node_modules\@sap\cds-dk\node_modules\@sap\cds\app\index.html
在應(yīng)用程序安全文件 (xs-security.json) 中,role templates 屬性使您能夠定義一個(gè)數(shù)組,其中列出了訪問(wèn)特定應(yīng)用程序模塊所需的一個(gè)或多個(gè) roles
(具有相應(yīng)的范圍和任何必需的屬性)??梢远x多個(gè)角色模板,每個(gè)模板都有自己的范圍和屬性。
一個(gè)例子:
"role-templates": [ { "name" : "Editor", "description" : "View, edit, delete books", "scope-references" : [ "$XSAPPNAME.Edit", "$XSAPPNAME.Delete" ], "attribute-references": [ "Country", "CostCenter" ] },]
必須實(shí)例化角色模板。 對(duì)于角色模板中定義的任何屬性和具體的屬性值尤其如此,這些屬性需要定制,因此無(wú)法自動(dòng)提供。 只包含“本地”范圍的角色模板可以在沒(méi)有用戶交互的情況下被實(shí)例化。 對(duì)于 foreign scope 也是如此,其中范圍所有者已在某種白名單中聲明同意(例如,供“公共”使用或已知“朋友”使用)。
聯(lián)系客服