Моделювання домену в SAP CAP

введення

Модель домену в SAP CAP — це модель, яка описує статичні, пов’язані з даними аспекти проблемної області в термінах моделей зв’язків сутності. У цій статті ми детально вивчимо моделювання домену в SAP CAP.

Моделювання домену

Простіше кажучи, CDS у SAP CAP створює модель домену таким чином, що визначає бізнес-проблему з точки зору ключів, полів та анотацій. Код для створення моделі домену записується в схемі CDS (db/schema.cds). Ці моделі домену можна використовувати у визначеннях послуг, моделях збереження, базах даних або навіть повторно використовувати в іншій моделі домену.

Приклад прикладу:

Простір імен empInfo; за допомогою {Currency, managed} з '@sap/cds/common'; сутність Співробітники: керований { ID ключа: ціле число; ім'я: локалізований рядок (111); прізвище: локалізований рядок (1111); менеджер: Асоціація до менеджерів; dateofJoining: ціле число; оклад: Десятковий (9,2); валюта: валюта; }

 

У цьому прикладі ми створили файл schema.cds, де ми створили сутність Employees, яка містить основні відомості про співробітника

Цій схемі надано простір імен, тобто empInfo

Ця схема використовує стандартний тип даних, тобто валюта. Використання стандартного типу даних, подібного до цього, допомагає нам принести всі попередньо визначені значення, пов’язані з ним.

Ми використовуємо CDS для створення моделі. У цьому CDS ми використовуємо

  1. Сутності для представлення набору унікальних об'єктів, наприклад:
    1. Основна інформація про співробітника
    2. Інформація про зв'язок співробітників
    3. Інформація про зарплату співробітників
  2. Асоціації для визначення відносин
    1. Асоціація менеджера з іншим менеджером сутності, який матиме весь список менеджерів

Конвенція та рекомендації щодо найменування

  1. Назва організації має починатися з великої літери, і вона має бути зрозумілою і зрозумілою – наприклад, Employees
  2. Починайте елементи з малої літери – наприклад, ім’я
  3. Рекомендується використовувати форму множини суб’єктів – наприклад, Співробітники
  4. Рекомендується використовувати форму однини типів – наприклад, Currency
  5. не повторюйте контексти – наприклад, Employees.name замість Employees.EmployeeName
  6. віддавайте перевагу однослівним назвам – наприклад, salary замість salaryAmount
  7. використовуйте ідентифікатор для технічних первинних ключів – наприклад, ідентифікатор для ідентифікатора співробітника
  8. Ви можете використовувати простір імен, щоб зробити ваші сутності унікальними. Це схоже на концепцію клієнта в SAP, де ви можете мати повторювані схеми (CD-файли) з унікальним простором імен, щоб розрізняти їх. Простіри імен є необов’язковими, використовуйте простори імен, якщо ваші моделі можуть бути повторно використані в інших проектах. Зрештою, це лише префікси, які автоматично застосовуються до всіх відповідних імен у файлі. - наприклад,

ноутбук простору імен;об’єкт Dell {}

..… еквівалентно:

entity ноутбук.Dell {}

  1. Ви можете використовувати контексти для вкладених розділів простору імен. - наприклад,

ноутбук простору імен;об’єкт Dell {}           //> ноутбук.Dellконтекст Apple { entity MacBookPro {}       //> ноутбук.Apple.MacBookPro     сутність MacBookAir {} }

 

Суб'єкти

Сутності схожі на таблиці з первинними ключами. Ми можемо виконувати операцію CRUD за допомогою цих сутностей. Тримайте його якомога рівним. Не перестарайтеся. Не використовуйте типи, які не можна використовувати повторно. Цей розділ призначений лише для моделювання, слід додавати лише анотації, пов’язані з окремими полями, і не слід додавати технічні деталі (логіку).

типи

Типи подібні до домену в SAP ABAP, він використовується для визначення типів елементів даних.

Аспекти

Аспекти є розширеннями моделей і в основному використовуються для розширення існуючих визначень та анотацій. Після визначення моделі ми можемо використовувати різні файли компакт-дисків (Aspect), щоб додати анотації поверх них для певного завдання.

Наприклад-

  • компакт-дисків– ваша основна модель домену, яка зберігається чистою, простою та зрозумілою
  • audit-model.cds– додає у файл додаткові поля, необхідні для аудиту
  • auth-model.cds– додає анотації для авторизації.

Первинні ключі

Як таблиці та CDS в SAP ABAP, ми підтримуємо первинні ключі для Entity за допомогою ключового слова ключ

Первинний ключ можна повторно використовувати в моделі за допомогою методології загальних визначень.

Ми можемо створити модель common.cds, де можна зберігати всі загальні визначення.

// поширені визначення

entity StandardEntity { ID ключа: UUID; } Тепер ці загальні визначення можна повторно використовувати, як показано нижче: використовуючи { StandardEntity } з './common'; entity Employee : StandardEntity { name : String; ... } Менеджер сутностей : StandardEntity { назва : рядок; ... }

 

Загальний файл уже створено за замовчуванням із попередньо визначеною сутністю з іменем cuid.

Відображення UUID в OData

CDS відображає UUID на Edm.Guid за замовчуванням у всіх моделях OData. Однак стандарт OData встановлює обмежувальні правила для значень Edm.Guid – наприклад, дозволені лише рядки через дефіс – які можуть конфліктувати з наявними даними. Тому ми дозволяємо замінити відображення за замовчуванням наступним чином:

entity Books {

ID ключа: UUID @odata.Type:'Edm.String';

...

}

Якщо необхідно, ви також можете додати анотацію @odata.MaxLength, щоб також замінити відповідну властивість.

Association

Він використовується для визначення відносин між двома сутностями. Як і ABAP CDS, тут ми також використовуємо це слово Асоціація. Ось ключове слово багато вказує на a 0..* кардинальність. Обмеження на потужність можна додати як обмеження (умова де) – наприклад, використовуючи не нульовий.

Композиції

На відміну від асоціації, де ми пов’язуємо поле сутності з об’єктами цілого об’єкта, композиції лише посилаються на конкретне поле іншої сутності. Він має додаткову перевагу самостійно керованих глибоких операцій (вставка/оновлення) та каскадного видалення (видалення кількох залежних таблиць).

// Визначення замовлень із наявними OrderItemsentity Orders { ID ключа: UUID; Items : Склад багатьох Order_Items на Items.parent=$self;}entity Order_Items { // доступ до нього здійснюється лише через замовлення  ключовий батько : Асоціація з замовленнями; ключова книга: Асоціація до книг; кількість: ціле;}

Найкращі методи

  1. Не додавайте технічні деталі в Models, ми використовуємо Аспектидля того
  2. використання короткі назви і прості плоскі моделі
  3. Не перевищуйте нормалізацію сутностей у моделях
  4. Використовуйте локальні цілі послідовності, якщо ви справді маєте справу з великими навантаженнями та обсягами. В іншому випадку віддавайте перевагу UUID

До цих пір те, що ми навчилися: створення моделі та аспектів на додачу.

Моделювання домену в SAP CAP

Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.