Menu

Este documento descreve e fundamenta a forma como foi modelado e implementado o Menu.

Desenho

A solução adotada passa pela existência de 4 entidades: entidade Menu, que representa uma página de menu com várias operações; entidade IdentityMenu que se relaciona com a entidade Menu e tem como objetivo identificar um menu personalizado para um role específico. Um Menu possui um conjunto de MenuItem’s, que são as operações propriamente ditas disponíveis no menu, podendo levar a ações finais (abrir uma view por exemplo) ou levar a outros submenus.

O modelo de entidades definido é o seguinte:

Entidade Menu

A entidade Menu e a entidade MenuItem possuem, além de uma caption normal, uma caption localizada, para que seja possível ao utilizador visualizar o menu na sua língua respetiva.

Modelo de Serviços

A nível de serviços, existe um sobre a entidade Menu. Este serviço possui duas service operations associadas:

  • GetRootMenu: service operation que devolve o menu root e todos os menuitems associados.
  • GetNamedMenu(name): service operation que devolve um menu específico.

São estas service operations que permitem a navegação através do menu, sendo feito o pedido de um menu sempre que se navega para dentro de um menu.

Service Operations

Arquitetura

A arquitetura lógica pode ser definida no seguinte esquema:

Arquitetura