使用 cds init 初始化一个 CAP 应用,然后 npm install, cds watch 启动服务器。

创建一个 schema 文件,内容如下:

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.

这两个模型的 key 由 CAP 服务器自动填充,该服务器使用注释 @(Core.Computed : true) 向服务用户公开。

只有 entity 还无法被 end user 消费,需要通过 service 暴露给外部。

srv 文件夹里新建一个文件 risk-service.cds,注意这个文件和 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 看到的自动生成的页面:

这个 index.html 的模板文件位置:

node_modules@sap\cds-dk\node_modules@sap\cds\app\index.html

在应用程序安全文件 (xs-security.json) 中,role templates 属性使您能够定义一个数组,其中列出了访问特定应用程序模块所需的一个或多个 roles(具有相应的范围和任何必需的属性)。可以定义多个角色模板,每个模板都有自己的范围和属性。

一个例子:

"role-templates": [ { "name"                : "Editor", "description"         : "View, edit, delete books", "scope-references"    : [ "$XSAPPNAME.Edit", "$XSAPPNAME.Delete"  ], "attribute-references": [ "Country", "CostCenter" ]  },
]

必须实例化角色模板。 对于角色模板中定义的任何属性和具体的属性值尤其如此,这些属性需要定制,因此无法自动提供。 只包含“本地”范围的角色模板可以在没有用户交互的情况下被实例化。 对于 foreign scope 也是如此,其中范围所有者已在某种白名单中声明同意(例如,供“公共”使用或已知“朋友”使用)。

SAP CAP 项目 cds watch 生成的 index.html 的模板位置和权限控制相关推荐

  1. 企业级项目|用Python进行web开发企业统一用户认证和权限控制平台

    目前大家对Python的了解更多来源是数据分析.Ai.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...

  2. 软件项目最佳实践: 可编程的权限控制

    续 软件项目最佳实践: 又谈权限管理 当我们面对复杂的权限控制一愁莫展时,因为未来不明确需求而烦恼时,我们期望项目的权限控制是可编程的,但手中的代码不堪入目,只能暗自发誓接手下一个新项目时,一定重新设 ...

  3. 使用注解 @requires 给 SAP CAP CDS 模型添加权限控制

    使用 @requires 注解不需要提前导入: 输入命令行 cds watch,可以自动扫描并监控 .cds 等格式的文件内容变化: 使用 annotate + entity name + with ...

  4. SAP License:SAP实施项目中顾问与客户的有效沟通

    都知道沟通在项目中的重要性.既然重要,就必然要慎重对待.可是,如何慎重对待?怎样才算是有效的沟通?怎样才能做到有效的沟通? 首先要明确沟通的目的.对于实施顾问来讲,在SAP实施项目中,沟通的目的无非是 ...

  5. React学习笔记三 脚手架生成的index.js内容简介

    React脚手架生成的index.js内容简介 import React from 'react'; import ReactDOM from 'react-dom'; import App from ...

  6. vue可视化拖拽生成工具_GitHub - 1260215278/dragUI: 基于vuedraggable.js + uni 的可视化拖拽编程,自动生成项目,自动生成代码,自行导入第三方组件...

    dragUI 用于UNI可拖拽可视化编程 在线演示 效果图 基于 快速开始 参考uni官网安装普通uni项目(运行uni-app)运行到浏览器 另需要手动下载包npm install 项目目录 col ...

  7. 跟着团子学SAP PS—项目的成本流 F-02/CJ20N/CJ88/KKA2

    今天通过ETO模式的项目成本收集来总览性的讲讲项目的成本流,其他如基建(投资项目).研发项目等的结算相较简单就不再单独细讲. PS模块核算的最复杂的业务场景主要是ETO(Engineering-To- ...

  8. vue项目通过Electron生成桌面应用

    vue项目通过Electron生成桌面应用 一.安装 1. 把electron的官方demo下载下来 2. 安装cnpm 3. npm start 启动electron 4. 修改vue项目 5. 打 ...

  9. ABP教程-给项目添加SwaggerUI,生成动态webapi

    上一篇,我们是正式将ABP生成的代码项目,跑起来了,然后演示了下多租户的不同.那么这篇我们就来实现下SwaggerUI. Q:SwaggerUI是干什么的呢? A:他是一个能将我们的webapi,通过 ...

最新文章

  1. 社交网络图挖掘4--三角形计数问题
  2. 公开仓库中Docker镜像的漏洞分析结果发布
  3. OpenSSL状态机中可选消息的处理
  4. 问题 | FileNotFoundError: [Errno 2] No such file or directory: 'null'
  5. java继承与初始化
  6. centos6.5 Building the main Guest Additions module
  7. 设置IE默认文本模式的方法
  8. .net邮件发送帮助类
  9. 1.1浅谈Spring(一个叫春的框架)
  10. 创新驱动 | 悬镜安全持续入选《CCSIP 2021中国网络安全产业全景图》
  11. 西北大学计算机课表,西北大学课表
  12. 常见的加密算法原理与实现:MD5加密
  13. 看看别人怎么学习的。
  14. Linux中nexus使用ccproxy进行代理下载包
  15. 安卓桌面整理app_【小编分享】APP整理大法!跟杂乱无章的手机桌面说拜拜~
  16. OK6410A 开发板 (三) 3 u-boot-2021.01 boot 解析概览
  17. 插入数据时出现Duplicate entry ‘XXX‘ for key ‘XXX‘
  18. 我们、这样子相爱、什么都不计较,多好啊~
  19. 使用Gmail邮箱攻略
  20. MAC下连接Windows的远程桌面Microsoft Remote Desktop

热门文章

  1. factorybean 代理类不能按照类型注入_《Spring入门经典》:使用Spring进行依赖注入
  2. sql 查出一张表中重复的所有记录数据
  3. 关于活动目录中DNS没有SRV记录的解决方法
  4. spinner的理解
  5. IP地址便捷修改器 V3.5 绿色版
  6. 系统级alias vs Oracle ADR功能
  7. Java内存原型分析:基本知识
  8. 十、Linux文件系统基本操作(mount挂载,umount卸载)
  9. Unit Testing in iOS
  10. .Net程序员面试 中级篇 (回答Scott Hanselman的问题)