დომენის მოდელირება SAP CAP-ში

შესავალი

დომენის მოდელი SAP CAP-ში არის მოდელი, რომელიც აღწერს პრობლემის დომენის სტატიკურ, მონაცემებთან დაკავშირებულ ასპექტებს ერთეულთან ურთიერთობის მოდელების თვალსაზრისით. ამ სტატიაში დეტალურად შევისწავლით დომენის მოდელირებას SAP CAP-ში.

დომენის მოდელირება

მარტივი სიტყვებით, CDS SAP CAP-ში აწარმოებს დომენის მოდელს ისე, რომ განსაზღვრავს ბიზნეს პრობლემას გასაღებების, ველების და ანოტაციების თვალსაზრისით. დომენის მოდელის გენერირების კოდი იწერება CDS სქემაში (db/schema.cds). ამ დომენის მოდელების გამოყენება შესაძლებელია სერვისის განმარტებებში, მდგრადობის მოდელებში, მონაცემთა ბაზებში ან თუნდაც ხელახლა გამოყენებული დომენის სხვა მოდელში.

ნიმუშის მაგალითი:

სახელთა სივრცე empInfo; გამოყენებით {Currency, მართვადი}-დან '@sap/cds/common'; entity Employees: მართული { key ID: Integer; სახელი: ლოკალიზებული სტრიქონი (111); გვარი: ლოკალიზებული სტრიქონი (1111); მენეჯერი: ასოციაცია მენეჯერებს; შეერთების თარიღი: მთელი რიცხვი; ხელფასი: ათობითი (9,2); ვალუტა: ვალუტა; }

 

ამ მაგალითში ჩვენ შევქმენით ფაილი schema.cds, სადაც შევქმენით ერთეული Employees, რომელიც მოიცავს თანამშრომლის ძირითად დეტალებს.

მთელ ამ სქემას მიენიჭა სახელთა სივრცე, ანუ empInfo

ეს სქემა იყენებს მონაცემთა სტანდარტულ ტიპს, ანუ ვალუტას. მსგავსი სტანდარტული მონაცემთა ტიპის გამოყენება გვეხმარება მივიღოთ მასთან დაკავშირებული ყველა წინასწარ განსაზღვრული მნიშვნელობის დახმარება.

ჩვენ ვიყენებთ CDS მოდელის შესაქმნელად. ამ CDS-ში ჩვენ ვიყენებთ

  1. ერთეულები, რომლებიც წარმოადგენენ უნიკალური ობიექტების კომპლექტს, მაგ.:
    1. თანამშრომლის ძირითადი ინფორმაცია
    2. თანამშრომლების საკომუნიკაციო ინფორმაცია
    3. ინფორმაცია თანამშრომელთა ხელფასის შესახებ
  2. ასოციაციები ურთიერთობების განსაზღვრისთვის
    1. მენეჯერის ასოციაცია სხვა ერთეულთან მენეჯერთან, რომელსაც ექნება ყველა მენეჯერის სია

დასახელების კონვენცია და რეკომენდაციები

  1. სუბიექტის დასახელება უნდა იწყებოდეს დიდი ასოებით და ის უნდა იყოს ადამიანის წაკითხვადი და თვითგანმარტებადი - მაგალითად, თანამშრომლები
  2. ელემენტების დაწყება მცირე ასოებით - მაგალითად, firstName
  3. რეკომენდებულია ერთეულების მრავლობითი ფორმის გამოყენება - მაგალითად, თანამშრომლები
  4. მიზანშეწონილია გამოიყენოთ ტიპების ერთჯერადი ფორმა - მაგალითად, ვალუტა
  5. არ გაიმეოროთ კონტექსტები – მაგალითად, Employees.name ნაცვლად Employees.EmployeeName
  6. უპირატესობა მიანიჭეთ ერთსიტყვიან სახელებს - მაგალითად, ხელფასი ხელფასის ნაცვლად
  7. გამოიყენეთ ID ტექნიკური პირველადი გასაღებებისთვის - მაგალითად, ID თანამშრომლისთვის
  8. თქვენ შეგიძლიათ გამოიყენოთ სახელების სივრცე, რათა თქვენი ერთეულები უნიკალური გახადოთ. ეს ჰგავს კლიენტის კონცეფციას SAP-ში, სადაც შეგიძლიათ გქონდეთ დუბლიკატი სქემები (cds ფაილები) უნიკალური სახელების სივრცით მათი დიფერენცირების მიზნით. სახელთა სივრცე არჩევითია, გამოიყენეთ სახელთა სივრცეები, თუ თქვენი მოდელები შეიძლება ხელახლა იქნას გამოყენებული სხვა პროექტებში. დღის ბოლოს ისინი მხოლოდ პრეფიქსებია, რომლებიც ავტომატურად გამოიყენება ფაილის ყველა შესაბამის სახელზე. - მაგალითად,

სახელთა სივრცის ლეპტოპი; ერთეული Dell {}

..… უდრის:

ერთეული ლეპტოპი.Dell {}

  1. თქვენ შეგიძლიათ გამოიყენოთ კონტექსტები ჩასმული სახელთა სივრცის სექციებისთვის. - მაგალითად,

სახელთა სივრცის ლეპტოპი; ერთეული Dell {}           //> ლეპტოპი.Dellკონტექსტი Apple { ერთეული MacBookPro {}       //> ლეპტოპი.Apple.MacBookPro     ერთეული MacBookAir {} }

 

პირები

ერთეულები ჰგავს ცხრილებს პირველადი გასაღებებით. ჩვენ შეგვიძლია შევასრულოთ CRUD ოპერაცია ამ ერთეულების გამოყენებით. შეინახეთ ის რაც შეიძლება ბრტყელ მდგომარეობაში. ნუ გადააჭარბებთ ნორმალიზებას. არ გამოიყენოთ მრავალჯერადი გამოყენებადი ტიპები. ეს განყოფილება განკუთვნილია მხოლოდ მოდელირებისთვის, უნდა დაემატოს მხოლოდ ცალკეულ ველებთან დაკავშირებული ანოტაცია და არ უნდა დაემატოს ტექნიკური დეტალები (ლოგიკა).

სახეები

ტიპები ჰგავს Domain-ს SAP ABAP-ში, ის გამოიყენება მონაცემთა ელემენტების აკრეფილის დასადგენად.

ასპექტები

ასპექტები არის მოდელების გაფართოება და ძირითადად გამოიყენება არსებული განმარტებებისა და ანოტაციების გასავრცელებლად. მოდელის განსაზღვრის შემდეგ, ჩვენ შეგვიძლია გამოვიყენოთ სხვადასხვა cds ფაილი (ასპექტი), რათა დავამატოთ ანოტაციები მათ თავზე კონკრეტული ამოცანისთვის.

Მაგალითად-

  • cds– თქვენი ძირითადი დომენის მოდელი, ინახება სუფთა, მარტივი და გასაგები
  • audit-model.cds– ამატებს ფაილში აუდიტისთვის საჭირო დამატებით ველებს
  • auth-model.cds- ამატებს ანოტაციებს ავტორიზაციისთვის.

ძირითადი გასაღებები

ცხრილებისა და CDS-ების მსგავსად SAP ABAP-ში, ჩვენ ვინარჩუნებთ ძირითად გასაღებებს ერთეულისთვის საკვანძო სიტყვის გამოყენებით გასაღები.

პირველადი გასაღები შეიძლება ხელახლა იქნას გამოყენებული მოდელში საერთო განმარტებების მეთოდოლოგიის გამოყენებით.

ჩვენ შეგვიძლია შევქმნათ common.cds მოდელი, სადაც ყველა საერთო განმარტება შეიძლება იყოს შენახული.

// საერთო განმარტებები

ერთეული StandardEntity { გასაღების ID : UUID; } ახლა ეს ჩვეულებრივი განმარტებები შეიძლება ხელახლა იქნას გამოყენებული, როგორც ქვემოთ: გამოყენებით { StandardEntity }-დან './common'; entity Employee : StandardEntity { სახელი : String; ... } entity Manager : StandardEntity { name : String; ...}

 

საერთო ფაილი უკვე შექმნილია ნაგულისხმევად წინასწარ განსაზღვრული ერთეულით დასახელებული კუიდი.

UUID-ების დახატვა OData-ზე

CDS ასახავს UUID-ებს Edm.Guid-ზე, ნაგულისხმევად, OData-ს ყველა მოდელში. თუმცა, OData სტანდარტი აწესებს შემაკავებელ წესებს Edm.Guid მნიშვნელობებისთვის – მაგალითად, დაშვებულია მხოლოდ ჰიპენირებული სტრიქონები – რაც შეიძლება ეწინააღმდეგებოდეს არსებულ მონაცემებს. ამიტომ, ჩვენ დავუშვებთ ნაგულისხმევი რუკების გადაფარვას შემდეგნაირად:

ერთეულის წიგნები {

გასაღების ID: UUID @odata.ტიპი:'Edm.String';

...

}

საჭიროების შემთხვევაში, თქვენ ასევე შეგიძლიათ დაამატოთ ანოტაცია @odata.MaxLength შესაბამისი თვისების გასაუქმებლად.

ასოციაცია

იგი გამოიყენება ორ ერთეულს შორის ურთიერთობის დასადგენად. ABAP CDS-ის მსგავსად, აქაც ვიყენებთ სიტყვას ასოციაცია. აი, საკვანძო სიტყვა ბევრი მიუთითებს ა 0..* კარდინალობა. კარდინალურობის შეზღუდვები შეიძლება დაემატოს როგორც შეზღუდვა (სადაც მდგომარეობა) - მაგალითად, გამოყენებით არ არის ნული.

კომპოზიციები

ასოციაციისგან განსხვავებით, სადაც ჩვენ ვაკავშირებთ ერთეულის ველს მთელი ერთეულის ობიექტებთან, კომპოზიციები უბრალოდ ეხება სხვა ერთეულის კონკრეტულ ველს. მას აქვს დამატებითი უპირატესობა თვითმართვადი ღრმა ოპერაციებით (ჩასმა/განახლება) და კასკადური წაშლა (მრავალ დამოკიდებული ცხრილის წაშლა).

// ბრძანებების განსაზღვრა შემავალი OrderItems-ითერთეული ორდერები { გასაღების ID : UUID; Items : მრავალი Order_Items-ის შემადგენლობა Items.parent=$self;}entity Order_Items { // ხელმისაწვდომი იქნება მხოლოდ შეკვეთების საშუალებით  მთავარი მშობელი: შეკვეთების ასოციაცია; საკვანძო წიგნი: ასოციაცია წიგნებს; რაოდენობა: მთელი რიცხვი;}

საუკეთესო პრაქტიკა

  1. არ დაამატოთ ტექნიკური დეტალები მოდელებში, ჩვენ ვიყენებთ ასპექტებიამისათვის
  2. გამოყენება მოკლე სახელები და მარტივი ბრტყელი მოდელები
  3. ნუ გადააჭარბებთ მოდელებში ერთეულების ნორმალიზებას
  4. გამოიყენეთ ლოკალური მთელი რიგი მიმდევრობები, თუ ნამდვილად გაუმკლავდებით დიდ დატვირთვას და მოცულობას. წინააღმდეგ შემთხვევაში, უპირატესობა მიანიჭეთ UUID-ებს

აქამდე რა ვისწავლეთ: მოდელის შექმნა და მის თავზე ასპექტები.

დომენის მოდელირება SAP CAP-ში

დატოვე კომენტარი

ეს საიტი იყენებს Akismet- ს, რათა შეამციროს სპამი. შეისწავლეთ თქვენი კომენტარის მონაცემები დამუშავებული.