Voorwoord - Dit bericht maakt deel uit van de SAP CAPM series.
Inhoudsopgave
Introductie
Een domeinmodel in SAP CAP is een model dat de statische, datagerelateerde aspecten van een probleemdomein beschrijft in termen van entiteit-relatiemodellen. In dit artikel zullen we de domeinmodellering in SAP CAP in detail bestuderen.
Domeinmodellering
Simpel gezegd, een CDS in SAP CAP produceert een domeinmodel op een zodanige manier dat het het bedrijfsprobleem definieert in termen van sleutels, velden en annotaties. De code om een domeinmodel te genereren is geschreven in een CDS-schema (db/schema.cds). Deze domeinmodellen kunnen worden gebruikt in servicedefinities, persistentiemodellen, databases of zelfs hergebruikt binnen een ander domeinmodel.
Voorbeeld voorbeeld:
Naamruimte empInfo; gebruikmakend van {Currency, managed} van '@sap/cds/common'; entiteit Werknemers: beheerd { key ID: Integer; firstName: gelokaliseerde String (111); lastName: gelokaliseerde String (1111); beheerder: Vereniging van Beheerders; dateofJoining: geheel getal; salaris: Decimaal (9,2); valuta: valuta; }
In dit voorbeeld hebben we een bestand schema.cds gemaakt waarin we een entiteit Werknemers hebben gemaakt die basisgegevens van een werknemer bevat
Dit hele schema heeft een naamruimte gekregen, namelijk empInfo
Dit schema gebruikt een standaard gegevenstype, namelijk Valuta. Door het standaard gegevenstype op deze manier te gebruiken, kunnen we alle vooraf gedefinieerde waardehulpmiddelen gebruiken.
We gebruiken CDS om een Model te maken. In die CDS gebruiken we
- Entiteiten die een reeks unieke objecten vertegenwoordigen, bijvoorbeeld:
- Basisinformatie werknemer
- Informatie over werknemerscommunicatie
- Salarisinformatie werknemer
- Associaties om relaties te definiëren
- Managerassociatie aan een andere entiteit Manager die alle Managerslijst zal hebben
Naamgevingsconventie en aanbevelingen
- De naam van de entiteit moet beginnen met een hoofdletter en moet leesbaar en duidelijk zijn voor mensen, bijvoorbeeld Werknemers
- Begin elementen met een kleine letter, bijvoorbeeld firstName
- Het wordt aanbevolen om de meervoudsvorm van entiteiten te gebruiken, bijvoorbeeld Werknemers
- Het wordt aanbevolen om enkelvoudige vorm van typen te gebruiken, bijvoorbeeld Valuta
- herhaal geen contexten, bijvoorbeeld Employees.name in plaats van Employees.EmployeeName
- geef de voorkeur aan namen van één woord, bijvoorbeeld salaris in plaats van salarisbedrag
- gebruik ID voor technische primaire sleutels, bijvoorbeeld ID voor werknemers-ID
- U kunt Namespace gebruiken om uw entiteiten uniek te maken. Het is als een klantconcept in SAP, waar u dubbele schema's (cds-bestanden) kunt hebben met een unieke naamruimte om ze te onderscheiden. Naamruimten zijn optioneel, gebruik naamruimten als uw modellen mogelijk opnieuw worden gebruikt in andere projecten. Uiteindelijk zijn het slechts voorvoegsels, die automatisch worden toegepast op alle relevante namen in een bestand. - bijvoorbeeld,
naamruimte laptop; entiteit Dell {}
..… is gelijk aan:
entiteit laptop.Dell {}
- U kunt contexten gebruiken voor geneste naamruimtesecties. - bijvoorbeeld,
naamruimte laptop; entiteit Dell {} //> laptop.Dellcontext Apple { entiteit MacBookPro {} //> laptop.Apple.MacBookPro entiteit MacBookAir {} }
Entiteiten
Entiteiten zijn als tabellen met primaire sleutels. We kunnen CRUD-bewerkingen uitvoeren met behulp van deze entiteiten. Houd het zo plat mogelijk. Niet te veel normaliseren. Gebruik geen niet-herbruikbare soorten. Deze sectie is alleen voor modellering, alleen annotaties met betrekking tot individuele velden mogen worden toegevoegd en er mogen geen technische details (logica) worden toegevoegd.
Types
Typen zijn als domein in SAP ABAP, het werd gebruikt om het type gegevenselementen te definiëren.
aspecten
Aspecten zijn de uitbreidingen van de Modellen en worden voornamelijk gebruikt om de bestaande definities en annotaties uit te breiden. Zodra een model is gedefinieerd, kunnen we verschillende cds-bestanden (Aspect) gebruiken om er annotaties aan toe te voegen voor een specifieke taak.
Bijvoorbeeld-
- cds– uw kerndomeinmodel, schoon, eenvoudig en begrijpelijk gehouden
- audit-model.cds– voegt extra velden toe die nodig zijn voor controle in een bestand
- auth-model.cds– voegt annotaties toe voor autorisatie.
Primaire sleutels
Net als tabellen en CDS in SAP ABAP, onderhouden we primaire sleutels voor entiteit met behulp van trefwoord sleutel.
Een primaire sleutel kan in het hele model worden hergebruikt door gebruik te maken van de methodologie van algemene definities.
We kunnen een common.cds-model maken waarin alle algemene definities kunnen worden opgeslagen.
// veelvoorkomende definities
entiteit StandardEntity { sleutel-ID: UUID; } Deze algemene definities kunnen nu als volgt worden hergebruikt: gebruik { StandardEntity } from './common'; entiteit Werknemer: StandardEntity { naam: String; ... } entiteit Manager: StandardEntity { naam: String; ... }
Het gemeenschappelijke bestand is standaard al gemaakt met een vooraf gedefinieerde entiteit met de naam sommige.
UUID's toewijzen aan OData
CDS wijst standaard UUID's toe aan Edm.Guid in alle OData-modellen. De OData-standaard stelt echter beperkende regels voor Edm.Guid-waarden - bijvoorbeeld alleen koppeltekenreeksen zijn toegestaan - die in strijd kunnen zijn met bestaande gegevens. Daarom staan we toe dat de standaardtoewijzing als volgt wordt overschreven:
entiteit Boeken {
sleutel-ID: UUID @odata.Type:'Edm.String';
...
}
Indien nodig kunt u ook de annotatie @odata.MaxLength toevoegen om ook de bijbehorende eigenschap te overschrijven.
Vereniging
Het wordt gebruikt om de relatie tussen twee entiteiten te definiëren. Net als ABAP CDS gebruiken we ook hier het woord Vereniging. Hier, het sleutelwoord veel geeft een aan 0..* kardinaliteit. De beperkingen voor kardinaliteit kunnen worden toegevoegd als een beperking (waarvoorwaarde) - bijvoorbeeld met behulp van niet nul.
Composities
In tegenstelling tot Association, waar we een entiteitsveld associëren met de objecten van een hele entiteit, verwijzen de composities alleen naar een specifiek veld van een andere entiteit. Het heeft extra voordeel van zelfbeheerde diepe bewerkingen (invoegen/bijwerken) en trapsgewijze verwijdering (verwijdering van meerdere afhankelijke tabellen).
// Definieer bestellingen met ingesloten OrderItemsentiteit Bestellingen { sleutel-ID: UUID; Items: Samenstelling van veel Order_Items op Items.parent=$self;}entity Order_Items { // is alleen toegankelijk via Bestellingen key parent : Associatie met Orders; sleutelboek : Associatie bij Boeken; hoeveelheid: geheel getal;}
Beste oefeningen
- Voeg geen technische details toe in Modellen, we gebruiken aspectendaarvoor
- Te gebruiken korte namen en eenvoudige platte modellen
- Normaliseer de entiteiten in Modellen niet te veel
- Gebruik lokale integer-reeksen als u echt te maken hebt met hoge belastingen en volumes. Geef anders de voorkeur aan UUID's
Tot nu toe wat we hebben geleerd: creatie van model en aspecten er bovenop.
0 reacties