Mostrando entradas con la etiqueta navigation rules. Mostrar todas las entradas
Mostrando entradas con la etiqueta navigation rules. Mostrar todas las entradas

jueves, 10 de julio de 2014

Estructura de una regla de navegación

Descripción: Descripción de la estructura de una regla de navegación, cada uno de los elementos, así como sus posibles valores. 

vista reglas navegacion
vista reglas navegación

vista codigo regla navegacion
codigo regla navegación


navigation-rule: Este elemento es obligatorio, y puede contener más de un navigation-case que afecte a una misma página como origen.
En el ejemplo que tenemos, tenemos sólo un elemento navigation-rule aunque se está definiendo dos posibles páginas destino desde la misma página de origen.

from-view-id: Este elemento contiene la página o conjunto de páginas en forma de patrón, desde el cual se va a definir las posibles páginas de destino (navigation-case).
Sólo puede haber un único from-view-id en una regla de navegación.

navigation-case: Es un bloque, dentro navigation-rule, que va a contener todos los datos necesarios para indicar un caso de navegación concreto.
Si desde una página (indicada en from-view-id) se puede ir a varias páginas, se tendrá tantos bloques navigation-case como posibles destinos.

from-action
: Este elemento es opcional. Contendrá una Expresion del lenguaje (Expression language), que limitará la ejecución de la regla. Por ejemplo, que sea aplicable si una variable tiene un valor concreto.

from-outcome: Elemento obligatorio. Contendrá un valor, se utilizará para indicar la regla que se quiere aplicar.
En el ejemplo anterior, desde menuPrincipal.jspx se podrá ir a vistaTrabajadores.jspx a través del valor "vistaTrabajadores". Es el valor que se indica en el atributo action del link en menuPrincipal correspondiente.

to-view-id: Elemento obligatorio. Contiene la ruta a la página de destino.

redirect: Elemento opcional. Se utiliza para redireccionar la página.

Documentación referencia:
ADF Developer's guide
Creating Navigation Rules
http://download.oracle.com/otn_hosted_doc/jdeveloper/1013/adfdevguide.pdf

Otros artículos relacionados:
- Reglas de navegación - Navigation Rules
- Ejemplo cómo crear reglas de navegación 

Si te ha gustado este artículo, puedes seguir el blog por Blogger o Twitter

martes, 8 de julio de 2014

Notas sobre creación de regla navegación

Resumen: En este post se va a ver el comportamiento de la aplicación cuando se añade páginas nuevas y reglas de navegación.

En el artículo anterior (Ejemplo creación reglas de navegación), vimos cómo crear unas reglas de navegación desde una página principal (menuPrincipal), desde la cual se podría ir a otras páginas del proyecto.

Una vez creadas procedemos a ejecutar la aplicación para ver el comportamiento.

vista pagina menuPrincipal
vista ejecución menuPrincipal

vista pagina listado Departamentos
vista página listado de Departamentos

Nota: En el caso de que no se produzca la navegación esperada, habría que revisar los siguientes puntos (al menos)
- ¿Se ha puesto la regla de navegación en el campo "action"?. Parece una tontería, pero mientras hacía el tutorial se me olvidó :P
- Hacer un Rebuild del project ViewController. En ocasiones es necesaria esta operación para que la aplicación pueda incluir las nuevas reglas de navegación. En especial es recomendable cuando se producen cambios en el faces-config.
- ¿La regla de navegación es correcta?. Igual la hemos escrito manualmente o com resultado de una expresión del lenguaje o como valor devuelto de un bean, y lo hemos escrito mal.

Si ejecutamos la aplicación desde la página de ver los Departamentos (vistaDepartamentos).
Podemos ver que se ejecuta con normalidad.

Podíamos preguntarnos lo siguiente: ¿No habíamos dicho antes, que las reglas de navegación evitaba que alguien entrar directamente en una página en vez de pasar por un proceso definido?
Es cierto, las reglas de navegación son parte de ese proceso, que veremos más adelante en profundidad.

Por ahora, lo que interesa aprender en este momento inicial, es que se pueden definir unos flujos para movernos de una página a otra, y que eso es una regla de navegación.

Artículos relacionados:
- Ejemplo creación de regla navegación

Si te ha gustado este artículo, puedes seguir el blog por Blogger o Twitter

sábado, 5 de julio de 2014

Ejemplo crear reglas de navegación

Descripción:  En este artículo vamos a ver un ejemplo sobre cómo crear reglas de navegación paso a paso.
En el siguiente ejemplo vamos a crear una página de menú que nos permitirá ir a otras páginas según la opción seleccionada.

Nota: Puedes descargar el ejemplo en este enlace: Descargar ejemplo

Creamos una primera página que llamamos "menuPrincipal.jspx".
En esta página añadimos dos Links (commandLinks) que nos permitirá luego ver un listado de trabajadores de la empresa o bien el listado de departamentos.

vista menuPrincipal
vista menuPrincipal.jspx




Si observamos el atributo action (attribute action) que se nos muestra el inspector de propiedades (Property Inspector), podemos ver las reglas de navegación que nos ofrece para esa página.

vista Property Inspector del componente Link

Opciones disponibles al pulsar el atributo action
Procedemos a crear las nuevas páginas para el proyecto vistaTrabajadores.jspx y vistaDepartamentos.jspx.


vista diseño faces-config
vista de diseño faces-config.xml



El funcionamiento de la página va a permitir ir del menu principal a cualquiera de las nuevas página creadas, de éstas al menú principal.
Para añadir una nueva regla de navegación tomamos el JSF Navigation Case.
Lo arrastramos a la página "Origen", y una vez ahí seleccionamos el destino de nuestra regla de navegacion.

jsf navigation case desde component palette
JSF Navigation Case desde Component Palette

asignando regla navegación
asignando la regla de navegación

asignar nombre a regla de navegación
asigna nombre a regla de navegación



A continuación se nos solicita un nombre para esta regla de navegación. Este nombre es el que nos referiremos para aplicar una regla en vez de otra. No se va a utilizar en el resto de la aplicación la página de destino, sino el nombre de la regla.
Si observamos en el property Inspector podemos ver algo más de la regla.

atributos navigation case
atributos navigation case



vista faces-config con las nuevas paginas
aviso por la nueva regla de navegación



En este caso aparece un triángulo amarillo indicándonos que una de las páginas no está creada completamente. Que está creada en el diagrama pero que ésta no tiene correspondencia con un fichero.

Hacemos doble click en la página de destino y se nos muestra la siguiente ventana, para crear la página.
Lo dejamos tal cual y le damos al "OK".
cuadro Create JSF Page
cuadro Create JSF Page



Tras hacerlo vemos que el icono de la nueva página se ha modificado, y también ha desaparecido el triángulo amarillo.

Si vamos a la página menuPrincipal, y seleccionamos el enlace de "ver Listado Trabajadores". Podemos ir a su atributo action, y comprobar cómo la nueva regla ya se encuentra disponible.

vista página menuPrincipal
vista página menuPrincipal



Ahora hacemos lo mismo para la otra página, para que pueda ser accedida desde "menuPrincipal".

Sobre el nombre de la regla, no tiene por qué ser el mismo nombre que la página a donde se va. Simplemente, debe ser lo suficientemente sencillo como para que podamos tenerlo en mente.
Recomendación: Aunque hay libertad para escribir la regla de navegación como queramos, mantener siempre una misma forma de escribirla (todo minúsculas, por ejemplo, o minúscula y el segundo nombre en mayúscula, como con las funciones en Java). 

asignar la regla de navegación al atributo action
asignar la regla de navegación al atributo action


resultado vista diseño faces-config
resultado vista diseño faces-config

Si vamos al faces-config, podemos observar en el apartado "Overview", cómo se han creado las reglas de navegación.

vista Navigation rules dentro de overview
vista Navigation rules dentro de overview



Si observamos el fuente (source), podemos ver el código generado. Es interesante estudiar este código, porque nos permite conocer bien su estructura, y también porque en el caso de que queramos modificar a través de código las reglas de navegación, sepamos dónde hacerlo.

codigo de las reglas de navegacion en faces-config
código de las reglas de navegación en faces-config

Enlace para Descargar ejemplo

Otros artículos relacionados:
-

jueves, 3 de julio de 2014

Reglas de navegación - Navigation Rules

Resumen: En este post vamos a ver cómo funciona la navegación en una aplicación Oracle ADF con las Reglas de Navegación ( navigation rules). Indicaremos el tipo de reglas que existen. Las reglas de navegación son el principal medio para pasar de una página a otra en 10g. En 11g se añaden también los task flows que permiten mayor flexibilidad.

En ADF, a diferencia de las páginas web, no es habitual tener enlaces en los que se llama a una página en .html o en este caso en .jspx,
pues a diferencia de las páginas html, hay información de estado que se pasa de una página a otra.

Nota: Por eso en los ejemplos anteriores indicaba que no se debe pulsar F5 ni estar pulsando el botón de retroceso (backspace), para navegar entre páginas.

La navegación entre las páginas se realiza habitualmente, con los mismos elementos que en una página web (un botón, un enlace).

Una de las ventajas de este sistema es que establecemos un flujo de ejecución entre páginas en el que no tenemos que preocuparnos si un usuario está autenticado o no cuando llega, sino que la misma aplicación emitirá un mensaje de error si alguien quisiera ir a una página concreta sin haber pasado por los puntos de entrada permitidos.

Las reglas para llegar a una página podrían dividirse o indicarse como:
- Desde una página JSF específica a otra.
- Desde una serie de página que cumplan un patrón ( pattern-based rule), por ejemplo solo aquellas páginas que estuvieran en un directorio.
- Desde cualquier punto de la aplicación. Esta es habitual para página de "Inicio" o de "Menú principal" en el cual muchas páginas de la aplicación podrán acceder a ésta.
 

Fuentes para el artículo:
Creating Navigation Rules
Oracle ADF Developer's Guide for Forms/4GL Developers


Otros artículos relacionados
-

Puedes seguirnos por Blogger o Twitter