Domeinmodellering in SAP CAP

Inleiding

'n Domeinmodel in SAP CAP is 'n model wat die statiese, data-verwante aspekte van 'n probleemdomein beskryf in terme van entiteit-verhoudingsmodelle. In hierdie artikel sal ons die domeinmodellering in SAP CAP in detail bestudeer.

Domeinmodellering

In eenvoudige woorde, 'n CDS in SAP CAP produseer domeinmodel op so 'n manier dat dit die besigheidsprobleem definieer in terme van sleutels, velde en aantekeninge. Die kode om 'n domeinmodel te genereer word in 'n CDS-skema (db/schema.cds) geskryf. Hierdie domeinmodelle kan in diensdefinisies, volhardingsmodelle, databasisse gebruik word of selfs binne 'n ander domeinmodel hergebruik word.

Voorbeeld Voorbeeld:

Naamruimte empInfo; gebruik {Currency, managed} vanaf '@sap/cds/common'; entiteit Werknemers: bestuur { sleutel-ID: Heelgetal; voornaam: gelokaliseerde String (111); van: gelokaliseerde String (1111); bestuurder: Vereniging met Bestuurders; dateofJoining: Heelgetal; salaris: Desimaal (9,2); geldeenheid: Geldeenheid; }

 

In hierdie voorbeeld het ons 'n lêer schema.cds geskep waar ons 'n entiteit Werknemers geskep het wat basiese besonderhede van 'n werknemer insluit

Hierdie hele skema het 'n naamruimte gekry, dws empInfo

Hierdie skema gebruik 'n standaard datatipe, bv Geldeenheid. Deur die standaard datatipe soos hierdie te gebruik, help ons om al die voorafbepaalde waardehulpe wat daarmee verband hou, te bring.

Ons gebruik CDS om 'n model te skep. In daardie CDS, gebruik ons

  1. Entiteite om stel unieke voorwerpe voor te stel, bv.
    1. Werknemer Basiese Inligting
    2. Werknemer kommunikasie inligting
    3. Werknemer Salaris Inligting
  2. Assosiasies om verhoudings te definieer
    1. Bestuurder assosiasie met 'n ander entiteit Bestuurder wat al die Bestuurders lys sal hê

Naamkonvensie en -aanbevelings

  1. Die naam van entiteit moet met 'n hoofletter begin en dit moet menslik leesbaar en selfverduidelikend wees - byvoorbeeld Werknemers
  2. Begin elemente met 'n kleinletter – byvoorbeeld voornaam
  3. Dit word aanbeveel om meervoudsvorm van entiteite te gebruik – byvoorbeeld Werknemers
  4. Dit word aanbeveel om enkelvoud van tipes te gebruik - byvoorbeeld Geldeenheid
  5. moenie kontekste herhaal nie – byvoorbeeld Employees.name in plaas van Employees.EmployeeName
  6. verkies eenwoordname – byvoorbeeld salaris in plaas van salarisBedrag
  7. gebruik ID vir tegniese primêre sleutels – byvoorbeeld ID vir Werknemer ID
  8. Jy kan Naamruimte gebruik om jou entiteite uniek te maak. Dit is soos kliëntkonsep in SAP waar jy duplikaatskemas (cd's-lêers) kan hê met unieke naamruimte om hulle te onderskei. Naamspasies is opsioneel, gebruik naamspasies as jou modelle dalk in ander projekte hergebruik kan word. Aan die einde van die dag is dit net voorvoegsels, wat outomaties op alle relevante name in 'n lêer toegepas word. - byvoorbeeld,

naamruimte skootrekenaar;entiteit Dell {}

... is gelykstaande aan:

entiteit skootrekenaar.Dell {}

  1. Jy kan kontekste vir geneste naamruimteafdelings gebruik. - byvoorbeeld,

naamruimte skootrekenaar;entiteit Dell {}           //> skootrekenaar.Dellkonteks Apple { entiteit MacBookPro {}       //> skootrekenaar.Apple.MacBookPro     entiteit MacBookAir {} }

 

Entities

Entiteite is soos tabelle met primêre sleutels. Ons kan CRUD-bewerkings uitvoer deur hierdie Entiteite te gebruik. Hou dit so plat as moontlik. Moenie oornormaliseer nie. Moenie nie-herbruikbare tipes gebruik nie. Hierdie afdeling is slegs vir modellering, slegs aantekeninge wat verband hou met individuele velde moet bygevoeg word en geen tegniese besonderhede (logika) moet bygevoeg word nie.

Tipes

Tipes is soos Domein in SAP ABAP, dit word gebruik om die tipe data-elemente te definieer.

aspekte

Aspekte is die uitbreidings van die modelle en word hoofsaaklik gebruik om die bestaande definisies en aantekeninge uit te brei. Sodra 'n model gedefinieer is, kan ons verskillende cd's-lêers (Aspect) gebruik om aantekeninge bo-op hulle by te voeg vir spesifieke taak.

Byvoorbeeld-

  • cDs– jou kerndomeinmodel, skoon, eenvoudig en verstaanbaar gehou
  • oudit-model.cd's– voeg bykomende velde by wat nodig is vir ouditering in 'n lêer
  • auth-model.cd's– voeg aantekeninge by vir magtiging.

Primêre sleutels

Soos tabelle en CD's in SAP ABAP, handhaaf ons Primêre sleutels vir Entiteit deur sleutelwoorde te gebruik sleutel.

'n Primêre sleutel kan oor die hele model hergebruik word deur die metodologie van algemene definisies te gebruik.

Ons kan 'n common.cds Model skep waar al die algemene definisies gestoor kan word.

// algemene definisies

entiteit StandardEntity { sleutel ID: UUID; } Nou kan hierdie algemene definisies soos hieronder hergebruik word: met behulp van { StandardEntity } vanaf './common'; entiteit Werknemer: StandardEntity {naam: String; ... } entiteit Bestuurder: StandardEntity { naam: String; ... }

 

Die algemene lêer is reeds by verstek geskep met 'n voorafbepaalde entiteit genaamd cuid.

Kartering van UUID's na OData

CDS karteer UUID's na Edm.Guid, by verstek, in al die OData-modelle. Die OData-standaard stel egter beperkende reëls vir Edm.Guid-waardes op – byvoorbeeld, slegs koppeltekenstringe word toegelaat – wat kan bots met bestaande data. Daarom laat ons toe dat die verstekkartering soos volg ignoreer word:

entiteit Boeke {

sleutel ID: UUID @odata.Typ:'Edm.String';

...

}

Indien nodig, kan jy ook die aantekening @odata.MaxLength byvoeg om die ooreenstemmende eienskap ook te ignoreer.

Vereniging

Dit word gebruik om verwantskap tussen twee entiteite te definieer. Soos ABAP CDS, gebruik ons ​​ook hier die woord Vereniging. Hier, die sleutelwoord baie dui op a 0..* kardinaliteit. Die beperkings vir kardinaliteit kan bygevoeg word as 'n beperking (waar voorwaarde) - byvoorbeeld deur gebruik te maak nie nul nie.

Komposisies

Anders as Assosiasie waar ons 'n veld van entiteit assosieer met die objekte van 'n hele entiteit, verwys die samestellings net na spesifieke veld van 'n ander entiteit. Dit het 'n ekstra voordeel van selfbestuurde diep bedrywighede (Invoeging / Opdateer) en kaskade-skrap (multi-afhanklike tabel-skrap).

// Definieer bestellings met ingeslote bestellingitemsentiteit Bestellings { sleutel ID: UUID; Items : Samestelling van baie Order_Items op Items.parent=$self;}entiteit Order_Items { // sal slegs deur bestellings verkry word  sleutel ouer : Assosiasie tot Bestellings; sleutelboek : Vereniging tot Boeke; hoeveelheid: Heelgetal;}

Beste praktyke

  1. Moenie tegniese besonderhede in Models byvoeg nie, ons gebruik aspektevir dit
  2. Gebruik kort name en eenvoudige plat modelle
  3. Moenie oor Normaliseer die entiteite in modelle nie
  4. Gebruik plaaslike heelgetalrye as jy werklik te doen het met hoë vragte en volumes. Andersins, verkies UUID's

Tot nou toe wat ons geleer het: Skep van model en aspekte boonop.

Domeinmodellering in SAP CAP

Los kommentaar

Hierdie webwerf gebruik Akismet om spam te verminder. Leer hoe jou opmerking verwerk is.