How to?

Esta funcionalidade apenas estará disponível na próxima versão da framework.

Como modelar entidades Many-To-Many?

O padrão Many to Many passa a ser suportado ao nível das relações entre duas entidades, ou seja, passa a ser possível modelar entidades como tendo relação de muitos para muitos com outra qualquer entidade específica.

Isto significa que, ao nível da aplicação, ao aceder a uma entidade A é possível definir relações com entidade B e vice-versa.

Para modelar entidades many to many é necessário:

Modelo de Entidades

Para modelar entidades Many-To-Many é necessário, criar no modelo de entidades as entidades que se pretendem relacionar com Many-To-Many.

Após ter adicionado as entidades e os respetivos atributos, é necessário criar uma relação entre elas do tipo "Many-To-Many Association".

Ao ser efetuada esta associação, automaticamente será adicionado, a cada entidade, um atributo do tipo List da sua entidade relacionada Many to Many.

Imaginemos o cenário em que queremos ter uma associação Many-To-Many entre as entidades “Location” e “Access Level”.

Assim, é necessário criar estas entidades, adicionar os atributos pretendidos a cada uma delas e ligá-las entre si, com a seta de associação Many-To-Many.

Entidade Location e entidade AccessLevel com associação do tipo Many-To-Many entre si

Após isto, é necessário gravar o modelo.

Nota: este tipo de associação não é possível efetuar: para entidades do tipo Detail, Extensões (não base) e para entidades do tipo Value List.

Modelo de Serviços

No modelo de serviços é necessário gerar os serviços para ambas as entidades Location e AccessLevel (devem ser adiciondos ambos os serviços, excepto quando se trata de entidades externas).

Para tal basta, no modelo, clicar no botão direito do rato e selecionar a opção Services -> Generate Services, selecionando as duas entidades acima referidas.

Automaticamente serão gerados os serviços para cada uma das entidades selecionadas anteriormente, bem como as correspondentes list operations.

Serviços gerados para entidades com relação Many-To-Many

Após gerar os serviços devem selecionar-se os atributos pretendidos para cada list operation. Podem ser adicionados atributos tanto da entidade que estamos a tratar, como da sua entidade relacionada com Many-To-Many.

Aqui, se necessário, podem ser adicionadas resources específicas para cada um dos serviços. Esta operação é feita de forma igual para serviços de entidades sem relação Many-To-Many.

Após verificar que o modelo está válido, deve proceder-se à gravação do mesmo.

Modelo de Apresentação

No modelo de apresentação iremos, então, definir quais as operações associadas a cada uma delas, bem como definir como estas entidades irão ser apresentadas visualmente.

No modelo, clicar no botão direito do rato, e selecionar a opção Service -> Generate Operations, selecionando os serviços pretendidos.

Automaticamente serão criados os Editor View, Create Operation, EditOperation, List View e List Operation para cada um dos serviços selecionados.

Nota: pode ser possível apenas modelar a view referente a um dos serviços.

"Operações geradas para cada uma das entidades com relação Many-To-Many entre si"

Para cada operação de edit é necessário especificar qual a lista default a ser utilizada.

Após isto é necessário, então, definir como se pretende que cada um dos atributos seja apresentado nas respetivas views.

Para tal, basta aceder ao editor de layout dos editor views gerados, e adicionar cada um dos atributos pretendidos definindo as suas propriedades.

Exemplificando, se acedermos ao editor de layout do editor view Locations, podemos adicionar os atributos pretendidos e estarão disponíveis atributos de ambas as entidades.

Para adicionar atributos da entidade relacionada Many-To-Many, ou seja, atributos da entidade AccessLevel, é necessário selecionar esse atributo. Automaticamente, será definido o Content Display com o valor ManyToManyGrid. Isto específica um novo tipo de grelha que será composta por uma coluna inicial de seleção (atributo do tipo boolean).

Dentro desta ManyToManyGrid é, então, possível adicionar os atributos pretendidos da entidade relacionada (entidade AccessLevel), mas estes atributos apenas poderão ser read-only.

"Edição de layout de entidade com relação Many-To-Many"