Services Designer
O modelo de serviços é construído com o Services Designer (SD) e permite efetuar a modelação dos serviços sobre entidades definidas no Entities Designer.
Ou seja, é neste modelo que é efetuada a definição da interface aplicacional (API) de um módulo. Esta interface é acessível internamente, entre módulos e/ou a partir de clientes web, mediante a acessibilidade associada ao serviço, definida em tempo de modelação.
Conceitos Principais
Os conceitos principais do modelo são os seguintes:
Module Reference
Representa a referência a um módulo, o que permitirá o acesso aos modelos definidos para esse módulo.
Cada modelo de serviços poderá ter mais do que um Module Reference.
Services
Representa uma funcionalidade exposta. É um agregador lógico dos métodos que contribuem para essa funcionalidade.
Também é a este nível que se define quais as operações standard (Create, Delete, Get e Update) que estarão disponíveis para este serviço, bem como as operações possíveis de realizar via API.
A definição de serviços permite criar uma camada que abstrai o domínio de entidades, interno ao módulo, do domínio de recursos que este expõe.
Existem 4 tipos de serviços:
- Standard: utilizado para operações de CRUD sobre entidades;
- Picking: serviço sem entidade e com dois resources custom que permitem definir e efetuar uma operação de picking;
- Settings: utilizado para definição de configurações;
- Custom: utilizado para serviços sem entidade, com um resource custom.
Service Operation
Corresponde a uma operação associada a um serviço. O resultado será um método que é incluído na classe associada ao serviço.
Dependendo da acessibilidade do serviço (publico, internal ou private), este estará disponível ou não nas várias camadas do serviço.
Service Group
Permite agrupar serviços cujas entidades tenham características comuns, assim, é possível criar código comum e que pode ser partilhado por diferente business managers.
Para tal, é necessário associar os serviços que podem partilhar essa base comum ao service group.
Service Action
Corresponde a uma ação a ser executada sobre o a entidade em edição pelo utilizador (Draft) durante a execução da aplicação.
Estes métodos REST estão presentes na camada “Controllers.App” e são usados unicamente pelos produtos.
Service Filter
Os servisse filters permitem definir quais os filtros aplicados a um serviço. Ou seja, serviços que têm service filters associados terão as pesquisas pela entidade via serviço com o filtro do service filter. Na TVF gerada para pesquisa é utilizada uma view SQL filtrada, invés da view SQL da entidade.
Esta view sql filtrada é igual a view da entidade mas os resultados são filtrados pela condição especificada no filtro.
List Operation e List Operation (Lookup)
Corresponde a uma operação de query associada a um serviço.
Dependendo do tipo, poderá será usada como fonte de dados para uma lista definida no modelo de apresentação, como fonte de dados de report ou como lista de pesquisa.
Resource e Resource Model
Permite definir um objeto a partir de uma entidade, ou sem qualquer associação a uma entidade (custom resource).
Os resource models podem estar ligados diretamente ao serviço ou a uma service operation.
Outputs Principais
Este modelo garante a geração de uma parte significativa do código referente aos serviços utilizados por um módulo, nomeadamente questões de acesso a operação CRUD e operações disponíveis via API (Pública), nomeadamente:
- Controllers.Api
- Controllers.App
- Module.Api
- Service Managers
- Domain Managers
Meta-modelo
A imagem seguinte apresenta uma visão simplificada do meta-modelo do modelo de serviços.
