//将本文件定义的entity放在该命名空间内
namespace sap.ui.riskmanagement;
//从common这个库中引用了managed这个常用aspect,Common Types and Aspects | CAPire (cloud.sap)
using { managed } from '@sap/cds/common';
//下方Risks这个entity有了managed,就会附带四个字段,分别是createdAt, createdBy
//,ModifiedAt,ModifiedBy,数据类型分别是Timestamp和User,内容会自动更新
entity Risks : managed {
//UUID也是一个常见Aspect,此处是单点生成不重复ID,分布式生成请参阅Domain Modeling | CAPire (cloud.sap)
//Core.Computed设置为true时,该属性无法在write, create, update时由客户端更改,而是由服务器自动生成,Core.Immutable设置为true时则只是在update时无法由客户端更改 ,详情请参阅Providing Services | CAPire (cloud.sap) - Input Validation - @readonly – TIP
key ID : UUID @(Core.Computed : true);
title : String(100);
prio : String(5);
descr : String;
//miti为外键约束,表明本entity新条目的miti_ID必须在mitigation这个entity的key中存在,且只有一个
miti : Association to Mitigations;
impact : Integer;
criticality : Integer;
}
entity Mitigations : managed {
key ID : UUID @(Core.Computed : true);
description : String;
owner : String;
timeline : String;
//risks为外键约束,Risks entity 每一行的miti都应该存在于本entity主键中
risks : Association to many Risks on risks.miti = $self;
}
using { sap.ui.riskmanagement as my } from '../db/schema';
//没有标注路径时,默认监听服务名称的路径
//此处标注了路径,监听service/risk路径
@path: 'service/risk'
service RiskService {
//该entity实际映射了db中,my命名空间下Risks entity
entity Risks as projection on my.Risks;
//这里表明为Risks entity启用draft功能,该功能允许客户端在提交更改之前使用数据的草稿版本。适用于内容正式发布前需要创建、编辑和审查的情况
annotate Risks with @odata.draft.enabled;
entity Mitigations as projection on my.Mitigations;
annotate Mitigations with @odata.draft.enabled;
}
//该js文件名与其目标cds文件名一致
//引用cds库
const cds = require('@sap/cds')
/**
* Implementation for Risk Management service defined in ./risk-service.cds
*/
module.exports = cds.service.impl(async function() {
//在收到READ+Risks entity的请求之后,触发以下逻辑,将本来应该返回的数据交给以下函数,并将修改后的结果返回给请求
//实质上本来数据内不存在criticality的值,这里根据返回值里impact的值来添加criticality字段的值
this.after('READ', 'Risks', risksData => {
const risks = Array.isArray(risksData) ? risksData : [risksData];
risks.forEach(risk => {
if (risk.impact >= 100000) {
risk.criticality = 1;
} else {
risk.criticality = 2;
}
});
});
});
using { sap.ui.riskmanagement as my } from '../db/schema';
@path: 'service/risk'
service RiskService {
entity Risks @(restrict : [
{
grant : [ 'READ' ],
to : [ 'RiskViewer' ]
},
{
grant : [ '*' ],
to : [ 'RiskManager' ]
}
]) as projection on my.Risks;
annotate Risks with @odata.draft.enabled;
entity Mitigations @(restrict : [
{
grant : [ 'READ' ],
to : [ 'RiskViewer' ]
},
{
grant : [ '*' ],
to : [ 'RiskManager' ]
}
]) as projection on my.Mitigations;
annotate Mitigations with @odata.draft.enabled;
}
"cds": {
"requires": {
"[development]": {
"auth": {
"kind": "mocked",
"users": {
"risk.viewer@tester.sap.com": {
"password": "initial",
"ID": "risk.viewer@tester.sap.com",
"roles": [
"RiskViewer"
]
},
"risk.manager@tester.sap.com": {
"password": "initial",
"ID": "risk.manager@tester.sap.com",
"roles": [
"RiskManager"
]
}
}
}
}
}
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
15 | |
11 | |
10 | |
10 | |
9 | |
7 | |
7 | |
7 | |
7 | |
7 |