Mantenimiento de una tabla n:m en ADF con SelectManyShuttle

Un ejemplo de cómo hacer un mantenimiento de una tabla de forma usable para el usuario seria utilizar el componente SelectManyShuttle. Uno de los casos que podemos utilizarlo es cuando tenemos una tabla que sale de una relación n:m, por ejemplo:

Tablas ejemplo
Imagen 1: Tablas ejemplo

Tenemos la tabla de usuarios, roles y ahora queremos guardar en la tabla usuarioRoles los roles asignados aún usuario. Para realizar esto crearemos una pantalla donde tendremos la tabla de usuarios y seleccionaremos uno de los usuarios y con el componente SelectManyShuttle le asignaremos los roles. En la pantalla también pondremos la tabla UsuariosRoles para ver los cambios.

Pasos a seguir:

Creamos una aplicación Fusion Web Application (ADF) y creamos los business components desde nuestra base de datos: nos pedirá la conexión a la base de datos y elegiremos las entidades que queremos utilizar. En este ejemplo: Usuario, Roles y UsuarioRoles. Obtendremos los siguientes business components:

Resultado de crear las entidades
Imagen 2: Resultado de crear las entidades

AppModule
Imagen 3: AppModule

Crearemos una página y también crearemos un Bean ligado a la página para darle las propiedades al selectManyShuttle:

Bean de la página
Imagen 4: Bean de la página

Bind de la página.
Imagen 5: Bind de la página.

Para poner el componente en nuestra página, sólo hay que arrastrarlo desde la paleta de componentes y lo insertamos sin informar nada. Ahora necesitamos crear los iteradores con los que trabajaremos. En la parte izquierda la de selección la rellenaremos en este ejemplo con los roles, mediante la instancia del viewObject RolesVO Roles1. Los valores seleccionados en nuestro caso serán los valores de la tabla usuarioRoles. En este ejemplo nos interesa elegir una instancia del viewObject usuarioRolesVO que esté relacionada mediante viewlink con el viewObject UsuarioVO, si miramos el AppModule de nuestro ejemplo este sería UsuarioRoles2.
Los Bindings de la página nos tienen que quedar como se ve en la Imagen 5.

Componente selectManyShutle
Imagen 6 : Componente selectManyShutle

Ahora crearemos los métodos que necesitamos para el componente en el Bean de la página para la parte izquierda la de selección crearemos el método getAll() y para la parte derecha de nuestro componente los métodos getSelected() y setSelectted(List selectedValues) para los valores seleccionados, el componente quedará como se ve en la Imagen 6. Una breve explicación del código sería la siguiente :

Código metodo getAll()
Imagen 7 : Código metodo getAll()

Código metodo setSelected() y getSelected()
Imagen 8 : Código metodo setSelected() y getSelected()

La pantalla podría quedar así:

Pantalla resultado
Imagen 9 : Pantalla resultado

Resumen:

Como podéis ver con ADF se puede llegar a hacer el mantenimiento de una tabla de una forma diferente, más visual y atractiva para el usuario. Para este ejemplo he utilizado JDeveloper 11.1.1.4.0.

Twitter
LinkedIn
Evolución, innovación y transformación
37 Service Expertise avalados por Oracle 
Nuestra propuesta de valor
Posts 100% Oracle
Sigue nuestro día a día