Domain Modeling in SAP CAP

Aféierung

En Domain Model am SAP CAP ass e Modell deen déi statesch, datenbezunnen Aspekter vun engem Problemdomän a punkto Entity-Relatiounsmodeller beschreift. An dësem Artikel wäerte mir d'Domain Modeling am SAP CAP am Detail studéieren.

Domain Modelléierung

An einfache Wierder, en CDS am SAP CAP produzéiert Domain Modell op esou eng Manéier datt et de Geschäftsproblem a punkto Schlësselen, Felder an Annotatiounen definéiert. De Code fir en Domainmodell ze generéieren ass an engem CDS Schema (db/schema.cds) geschriwwen. Dës Domain Modeller kënnen a Service Definitiounen, Persistenzmodeller, Datenbanken benotzt ginn oder souguer an engem aneren Domainmodell weiderbenotzt ginn.

Beispill Beispill:

Nummraum empInfo; benotzt {Währung, geréiert} vum '@sap/cds/common'; Entitéit Employéen: geréiert { Schlëssel ID: Integer; firstName: lokaliséiert String (111); LastName: lokaliséiert String (1111); Manager: Association zu Manager; dateofJoining: Integer; Pai: Dezimalzuel (9,2); Währung: Währung; }

 

An dësem Beispill hu mir e Fichier erstallt schema.cds wou mir eng Entitéit erstallt hunn Employéen déi Basisdetailer vun engem Employé enthält

Dëst ganzt Schema krut en Nummraum dh empInfo

Dëst Schema benotzt engem Standard Daten Typ dh Währung. De Standarddatentyp ze benotzen wéi dëst hëlleft eis all de virdefinéierte Wäerthëllefen am Zesummenhang mat deem ze bréngen.

Mir benotzen CDS fir e Model ze kreéieren. An deem CDS benotze mir

  1. Entitéite fir Set vun eenzegaartegen Objeten ze representéieren zB:
    1. Employé Basis Informatiounen
    2. Employé Kommunikatioun Informatiounen
    3. Employé Gehalt Informatiounen
  2. Associatiounen fir Relatiounen ze definéieren
    1. Manager Associatioun zu enger anerer Entity Manager déi all d'Manager Lëscht wäert hunn

Benennung Convention & Recommandatiounen

  1. Den Numm vun der Entitéit soll mat engem grousse Buschtaf ufänken an et soll mënschlech liesbar a selbsterklärend sinn - zum Beispill Mataarbechter
  2. Start Elementer mat engem klenge Buschtaf - zum Beispill, FirstName
  3. Et ass recommandéiert Pluralform vun Entitéiten ze benotzen - zum Beispill Mataarbechter
  4. Et ass recommandéiert eng eenzeg Form vun Typen ze benotzen - zum Beispill Währung
  5. widderhuelen net Kontexter - zum Beispill Employees.name amplaz Employees.EmployeeName
  6. léiwer ee-Wuert Nimm - zum Beispill, Pai amplaz SalaryAmount
  7. benotzen ID fir technesch Primärschoul Schlësselen - zum Beispill, ID fir Employé ID
  8. Dir kënnt Namespace benotzen fir Är Entitéite eenzegaarteg ze maachen. Et ass wéi Clientskonzept an SAP wou Dir duplizéiert Schemaen (cds Dateien) mat eenzegaartegen Nummraum hutt fir se ze differenzéieren. Nummraim sinn fakultativ, benotzt Nummraim wann Är Modeller an anere Projete weiderbenotzt kënne ginn. Um Enn vum Dag si se just Präfixe, déi automatesch op all relevant Nimm an engem Fichier applizéiert ginn. - zum Beispill,

Nummraum Laptop;Entitéit Dell {}

... ass gläichwäerteg mat:

entity laptop.Dell {}

  1. Dir kënnt Kontexter fir nestéiert Nummraim Sektiounen benotzen. - zum Beispill,

Nummraum Laptop;Entitéit Dell {}           //> Laptop.DellKontext Apple { Entity MacBookPro {}       //> laptop.Apple.MacBookPro     Entitéit MacBookAir {} }

 

Entitéiten

Entitéite si wéi Dëscher mat primäre Schlësselen. Mir kënnen CRUD Operatioun mat dësen Entitéiten ausféieren. Halt et sou flaach wéi méiglech. Net iwwer Normaliséieren et. Benotzt net net-reusable Typen. Dës Sektioun ass nëmme fir Modelléierung, nëmmen Annotatioun am Zesummenhang mat eenzelne Felder soll bäigefüügt ginn a keng technesch Detailer (Logik) solle bäigefüügt ginn.

Zorte

Aarte si wéi Domain an SAP ABAP, et huet benotzt fir déi getippten Datenelementer ze definéieren.

Aspekter

Aspekter sinn d'Extensiounen vun de Modeller a ginn haaptsächlech benotzt fir déi existent Definitiounen an Annotatiounen ze verlängeren. Wann e Modell definéiert ass, kënne mir verschidde CDs Dateien benotzen (Aspect) fir Annotatiounen op hinnen fir spezifesch Aufgaben ze addéieren.

Zum Beispill-

  • cds- Äre Kär Domain Modell, propper gehal, einfach a verständlech
  • audit-model.cds- füügt zousätzlech Felder derbäi fir Audit an enger Datei
  • auth-model.cds- füügt Annotatiounen fir Autorisatioun.

Primär Schlësselen

Wéi Dëscher & CDS an SAP ABAP, behalen mir Primärschlëssel fir Entitéit mat Schlësselwuert Schlëssel.

E primäre Schlëssel kann iwwer de Modell weiderbenotzt ginn andeems Dir d'Methodologie vu gemeinsame Definitioune benotzt.

Mir kënnen e common.cds Model erstellen wou all déi gemeinsam Definitioune gespäichert kënne ginn.

// gemeinsam Definitiounen

Entitéit StandardEntity { Schlëssel ID: UUID; } Elo kënnen dës gemeinsam Definitioune weiderbenotzt ginn wéi hei ënnen: benotzt { StandardEntity } vun './common'; Entity Employé: StandardEntity { Numm: String; ... } Entity Manager: StandardEntity { Numm: String; ... }

 

D'gemeinsame Datei ass scho standardiséiert mat enger virdefinéierter Entitéit mam Numm erstallt cuid.

Mapping UUIDs op OData

CDS Kaarten UUIDs op Edm.Guid, Par défaut, an all OData Modeller. Wéi och ëmmer, den OData Standard stellt restriktiv Reegele fir Edm.Guid Wäerter op - zum Beispill, nëmmen Bindestrecke sinn erlaabt - déi mat existéierende Donnéeën konflikt kënnen. Dofir erlaben mir d'Default Mapping wéi follegt ze iwwerschreiden:

Entity Books {

Schlëssel ID: UUID @odat.Typ: 'Edm.String';

...

}

Wann néideg, kënnt Dir och d'Annotatioun @odata.MaxLength addéieren fir och déi entspriechend Eegeschafte ze iwwerschreiden.

Associatioun

Et gëtt benotzt fir d'Relatioun tëscht zwou Entitéiten ze definéieren. Wéi ABAP CDS, och hei benotze mir d'Wuert Associatioun. Hei, de Schlësselwuert vill beweist eng 0..* Kardinalitéit. D'Restriktiounen fir Kardinalitéit kann als Aschränkung dobäi ginn (wou Konditioun) - zum Beispill, benotzt net null.

Kompositioune

Am Géigesaz zu der Associatioun wou mir e Feld vun der Entitéit mat den Objete vun enger ganzer Entitéit associéieren, bezéien d'Kompositioune just op spezifescht Feld vun enger anerer Entitéit. Et huet extra Virdeel vu selbstverwalte Deep Operatiounen (Insert / Update) a kaskadéiert Läschen (Multi Dependent Dësch Läschen).

// Definéieren Uerder mat enthale OrderItemsEntitéit Commanden { Schlëssel ID: UUID; Artikelen : Zesummesetzung vu ville Order_Items op Items.parent=$self;}entity Order_Items { // soll nëmmen duerch Commanden zougänglech ginn  Schlëssel Elterendeel: Associatioun fir Bestellungen; Schlësselbuch : Associatioun zu Bicher; Quantitéit: Integer;}

Beschte Praktiken

  1. Füügt keng technesch Detailer a Modeller derbäi, mir benotzen Aspekterdofir
  2. benotzt kuerz Nimm an einfach flaach Modeller
  3. Net iwwer Normaliséieren d'Entitéiten a Modeller
  4. Benotzt lokal ganz Zuelen Sequenzen wann Dir wierklech mat héije Lasten a Bänn handelt. Soss, léiwer UUIDs

Bis elo wat mir geléiert hunn: Schafung vu Modell an Aspekter op der Spëtzt.

Domain Modeling in SAP CAP

Hannerlooss eng Bemierkung

Dëse Site benotzt Akismet fir Spam ze reduzéieren. Léiert wéi Är Kommentarfaten veraarbecht ginn.