Modelagem de Domínio no SAP CAP

Introdução

Um modelo de domínio no SAP CAP é um modelo que descreve os aspectos estáticos relacionados a dados de um domínio de problema em termos de modelos de relacionamento de entidade. Neste artigo estudaremos detalhadamente a Modelagem de Domínio no SAP CAP.

Modelagem de Domínio

Em palavras simples, um CDS no SAP CAP produz um modelo de domínio de tal forma que define o problema do negócio em termos de chaves, campos e anotações. O código para gerar um modelo de domínio é escrito em um esquema CDS (db/schema.cds). Esses modelos de domínio podem ser usados ​​em Definições de Serviço, Modelos de Persistência, Bancos de Dados ou até mesmo reutilizados dentro de outro modelo de domínio.

Exemplo de exemplo:

Namespace empInfo; usando {Moeda, gerenciada} de '@sap/cds/common'; entidade Funcionários: gerenciados { key ID: Integer; firstName: String localizada (111); lastName: String localizada (1111); gestor: Associação de Gestores; data de junção: inteiro; salário: Decimal (9,2); moeda: Moeda; }

 

Neste exemplo criamos um arquivo schema.cds onde criamos uma entidade Employees que inclui detalhes básicos de um Employee

Todo esse esquema recebeu um namespace, ou seja, empInfo

Este esquema usa um tipo de dados padrão, ou seja, Moeda. Usar o tipo de dados padrão como esse nos ajuda a trazer todas as ajudas de valor predefinido relacionadas a ele.

Usamos CDS para criar um modelo. Nesse CDS, usamos

  1. Entidades para representar um conjunto de objetos únicos, por exemplo:
    1. Informações básicas do funcionário
    2. Informações de comunicação do funcionário
    3. Informações sobre o salário do funcionário
  2. Associações para definir relacionamentos
    1. Associação de Gestor a outro Gestor de entidade que terá toda a lista de Gestores

Convenção de nomenclatura e recomendações

  1. O nome da entidade deve começar com letra maiúscula e deve ser legível e autoexplicativo – por exemplo, Funcionários
  2. Iniciar elementos com uma letra minúscula – por exemplo, firstName
  3. Recomenda-se usar a forma plural de entidades – por exemplo, Funcionários
  4. Recomenda-se usar a forma singular de tipos - por exemplo, Moeda
  5. não repita contextos – por exemplo, Employees.name em vez de Employees.EmployeeName
  6. prefira nomes de uma palavra – por exemplo, salário em vez de salárioAmount
  7. use ID para chaves primárias técnicas – por exemplo, ID para ID de funcionário
  8. Você pode usar Namespace para tornar suas entidades exclusivas. É como o conceito de cliente no SAP, onde você pode ter esquemas duplicados (arquivos cds) com namespace exclusivo para diferenciá-los. Os namespaces são opcionais, use namespaces se seus modelos puderem ser reutilizados em outros projetos. No final do dia, eles são apenas prefixos, que são aplicados automaticamente a todos os nomes relevantes em um arquivo. - por exemplo,

namespace laptop;entidade Dell {}

..… é equivalente a:

laptop de entidade.Dell {}

  1. Você pode usar contextos para seções de namespace aninhadas. - por exemplo,

namespace laptop;entidade Dell {}           //> laptop.Dellcontexto Apple { entidade MacBookPro {}       //> laptop.Apple.MacBookPro     entidade MacBookAir {} }

 

Entidades

Entidades são como tabelas com chaves primárias. Podemos realizar a operação CRUD usando essas Entidades. Mantenha-o o mais plano possível. Não normalize demais. Não use tipos não reutilizáveis. Esta seção é apenas para modelagem, apenas anotações relacionadas a campos individuais devem ser adicionadas e nenhum detalhe técnico (lógica) deve ser adicionado.

Tipos

Os tipos são como o domínio no SAP ABAP, usado para definir os tipos de elementos de dados.

Aspectos

Aspectos são as extensões dos Modelos e são usados ​​principalmente para estender as definições e anotações existentes. Uma vez que um modelo é definido, podemos usar diferentes arquivos cds (Aspect) para adicionar anotações sobre eles para tarefas específicas.

Por exemplo-

  • cds– seu modelo de domínio principal, mantido limpo, simples e compreensível
  • audit-model.cds– adiciona campos adicionais necessários para auditoria em um arquivo
  • auth-model.cds– adiciona anotações para autorização.

Chaves Primárias

Como tabelas e CDS no SAP ABAP, mantemos chaves primárias para Entidade usando palavras-chave chave.

Uma chave primária pode ser reutilizada em todo o modelo usando a metodologia de definições comuns.

Podemos criar um modelo common.cds onde todas as definições comuns podem ser armazenadas.

// definições comuns

entidade StandardEntity { chave ID : UUID; } Agora essas definições comuns podem ser reutilizadas conforme abaixo: using { StandardEntity } from './common'; entidade Funcionário : StandardEntity { nome : String; ... } entidade Gerente : StandardEntity { nome : String; ... }

 

O arquivo comum já é criado por padrão com uma entidade predefinida chamada cuid.

Mapeando UUIDs para OData

O CDS mapeia UUIDs para Edm.Guid, por padrão, em todos os modelos OData. No entanto, o padrão OData coloca regras restritivas para valores Edm.Guid – por exemplo, somente strings hifenizadas são permitidas – que podem entrar em conflito com os dados existentes. Portanto, permitimos que o mapeamento padrão seja substituído da seguinte maneira:

entidade Livros {

ID da chave: UUID @odata.Type:'Edm.String';

...

}

Se necessário, você também pode adicionar a anotação @odata.MaxLength para substituir a propriedade correspondente também.

Associação

É usado para definir o relacionamento entre duas entidades. Assim como o ABAP CDS, aqui também usamos a palavra Associação. Aqui, a palavra-chave muitos indica um 0 .. * cardinalidade. As restrições de cardinalidade podem ser adicionadas como uma restrição (onde condição) – por exemplo, usando não nulo.

Composições

Ao contrário da Associação onde associamos um campo de entidade com os objetos de uma entidade inteira, as composições apenas se referem a um campo específico de outra entidade. Possui vantagem extra de operações profundas autogerenciadas (Inserir/Atualizar) e exclusão em cascata (exclusão de tabela multidependente).

// Define pedidos com OrderItems contidosentidade Orders { key ID : UUID; Itens : Composição de muitos Order_Items em Items.parent=$self;}entity Order_Items { // deve ser acessado apenas por meio de Pedidos  pai chave : Associação a Ordens; livro chave: Associação aos Livros; quantidade : inteiro;}

Práticas recomendadas

  1. Não adicione detalhes técnicos em Modelos, usamos Aspectospor isso
  2. Use nomes curtosmodelos planos simples
  3. Não normalize demais as entidades em modelos
  4. Use sequências inteiras locais se você realmente lida com cargas e volumes altos. Caso contrário, prefira UUIDs

Até agora o que aprendemos: Criação de Modelo e Aspectos em cima dele .

Modelagem de Domínio no SAP CAP

Deixe um comentário

Este site usa o Akismet para reduzir o spam. Saiba como seus dados de comentário são processados.