Posts

Showing posts from 2012

OTN WebCenter Portal: Rescatando Post de interés

Ante un problema con Oracle WebCenter existen dos lugares donde encontrar información (Oracle My Support y los foros oficiales): Oracle My Support: Para todo Partner de Oracle, se puede tener acceso ayuda por parte de la propia Oracle ante problemas serios. También, es un gran repositorio en el que consultar problemas que pueden haber sido resueltos. OTN WebCenter Portal : Foro oficial de WebCenter Portal donde la gente que trabajamos con el producto intentamos ayudar y compartir soluciones a problemas que se tienen con el producto. OTN WebCenter Content: Foro oficial de WebCenter Content (UCM) con ayuda relativa al gestor de contenidos y Site Studio. OTN JDeveloper & ADF: Para cualquier problema con el Framework base de los productos de Oracle, es el foro por excelencia.  En este post intentaré recoger algunos de los últimos Post interesantes que rescato de mis ratos libres por OTN: Ejecución en Threads de ADF BC: En este Post se comenta que para ejecutar transacciones

Bug en navegación de espacios en WebCenter Portal : Spaces PS5

Recientemente el blog de A-Team ha publicado información acerca del "bug" de WebCenter Portal : Spaces por el cual las navegaciones tanto de páginas como de espacios parece no funcionar. Enlace al post de A-TEAM En este post os quería comentar la solución temporal a dicho "bug" hasta que no se proporcione una solución oficial. Muchas veces las navegaciones de espacios son implementadas en puro JSTL  + HTML donde el enlace se genera mediante un: - <af:goLink destination="/webcenter/spaces/yourSpaceName"/> - <a href="/webcenter/spaces/yourSpaceName"/> En navegadores como IE 7 e IE8, al cabo de una cierta navegación y por cuestiones de caché de estos navegadores, la navegación deja de funcionar sin poder acceder a los espacios. ¿Cómo solucionar este problema? Mediante el uso de un <af:commandLink> o componente con actionListener. La solución lo que hace es ejecutar un Manage Bean del propio API de WebCenter para regi

Oracle WebCenter Portal / Spaces: Páginas corruptas en el MDS

Image
Durante la configuración en Runtime de las páginas creadas en portales, tanto de WebCenter Portal como de WebCenter Portal : Spaces, puede ocurrir que una EL Expression mal configurada deje la página corrupta y sin posibilidad de edición. En la versión PS5 de WebCenter, en caso de error se refresca la página perdiendo los últimos cambios realizados. Incluso puede aparecer otra ventana en la que se permite al usuario elegir entre eliminar la última " customización" o todas las realizadas. Error de Oracle Composer en un error al editar un componente en WebCenter PS5 Sin embargo, en versiones anteriores a la PS5 se hace necesario modificar manualmente el MDS para recuperar la página. ¿Cómo se puede arreglar dicha página?. Toda configuración realizada sobre las páginas son almacenadas en el MDS ( Metadata Repository Service ) y por lo tanto pueden recuperarse para ser modificadas. Existen dos formas de recuperar la página del MDS y solucionar el problema: - Mediant

ADF 11g: af:query + af:table con datos precargados al iniciar

Image
Al hacer Drag & Drop de una  Named Criteria de una View ( del Data Control de un  Application Module), se puede crear un formulario de búsqueda con una tabla asociada para el manejo de los datos de nuestra base de datos. Drag & Drop para formulario de búsqueda + tabla Cuando se ejecuta la vista se puede observar que por defecto la tabla está vacía puesto que no se ha realizado ninguna búsqueda. Tabla vacía nada más cargar la vista Esto se debe a que es necesario que se realice una búsqueda (aunque sea con los campos vacíos) para que la tabla se rellene. Sin embargo, modificando el binding asociado a la View Criteria sobre la que se basa el af:query se puede lograr precargar una búsqueda para que cuando se cargue la página salgan datos inicialmente. Para conseguirlo únicamente es necesario modificar el atributo InitialQueryOverriden poniendo su valor a true . Modificación del binding a la View Criteria para precargar la búsqueda Con esta configuración, al ejecut

ADF 11g: JDBC Connection vs Data Source

Image
Una de las dudas / problemas que surgen a la hora de desplegar aplicaciones ADF viene ligada con las conexiones a base de datos que se configuran en el Model de la aplicación. En esta entrada voy a intentar aclarar cuál es el modo correcto para configurar las conexiones a BBDD de una aplicación ADF. Cuando se comienza el desarrollo de una aplicación ADF con capa de negocio en base de datos. Lo primero que se hace es crear una conexión de Base de Datos desde las Application Resources. Conexión a BBDD configurada El siguiente paso es la creación de los ADF Business Components a partir de esa conexión a BBDD. ADF BC generados a partir de la conexión Como podrá observarse, también se ha generado un fichero llamado Model.jpx . Este fichero tiene, entre otras cosas, una conexión a BBDD. La conexión configurada en Model.jpx es la conexión de BBDD que utiliza la aplicación por defecto para generar los ADF Business Components . No es la utilizada por la aplicación en R

Refrescar un UI Component externo a una af:region

Image
Un caso muy común en el desarrollo con WebCenter Portal / Spaces es el de refrescar componentes de la página según acciones que se ejecuten en los Task Flow que esta incluye. Enlace a la descarga del ejemplo ¿Cómo refrescar un UI Component según lo que haya ocurrido en un Task Flow? Esta pregunta se responde fácilmente. Eventos Contextuales La mayoría de  Task Flows  de WebCenter, como por ejemplo el de People Connections, disparan eventos según las acciones que se realicen en los mismos. Por ejemplo en People Connections las acciones de aceptar, ignorar o declinar una petición son disparadas. En el siguiente ejemplo se va a simular esta problemática refrescando un af:outputLabel según los eventos que dispare un Task Flow. "Antes de comenzar el ejemplo, recomiendo una lectura del ejemplo de Eventos Contextuales" . En el ejemplo el caso es el siguiente: UI Component que se refresca por PPR de una af:region Tenemos un componente af:outputLabel

ADF 11g: af:progressIndicator y af:statusIndicator

Image
En muchas ocasiones se ejecutan servicios o procesos duros en los que la aplicación parece quedar "congelada". Para evitar que el usuario de la aplicación crea que nuestra aplicación "pasó a mejor vida" ADF nos proporciona dos componentes: Enlace a la descarga del ejemplo Interfaz del ejemplo af:statusIndicator . Es el "simpático" iconito de la O de Oracle que cambia de icono a otro girando en el caso de que haya algún proceso en ejecución de la aplicación. Es posible modificar estos iconos (referencia a como hacerlo más adelante). Icono sin actividad   af:progressIndicator.  Es una barra de progreso típica que indica el estado de una operación. Siempre se puede usar cuando realmente se sabe el estado de la operación que se está realizando como, por ejemplo, insertar numerosas filas a base de datos (sabemos por que row del total vamos). Barra de progreso ¿Cómo usar cada una de ellas? af:statusIndicator Es el más sencillo puesto

ADF 11g: Variables de página

Image
Una duda que suele surgir a la hora de crear la pageDef de una página es la siguiente: Enlace a descarga del ejemplo ¿Para qué sirve el 'executable' variables? Una de las funcionalidades que nos permite es la creación de "variables" asociadas a Data Controls (como cuando hacemos Drag & Drop de una View Object y genera el Iterator ). Pero, por otro lado nos permite la generación de variables del tipo que queramos (por ejemplo java.lang.String). Executable variables de una pageDef ¿Cómo puedo crear una variable? En la propia pageDef lo podemos realizar desde la vista Structure o desde la propia pageDef haciendo click derecho en el propio ejecutable variables. Seleccionar en Insert Inside Variables -> variable para crear una variable. Creación de una variable en el executable variables (I) Dar un nombre lógico y el tipo de datos de la variable. Creación de una variable en el executable variables (II) Generar un binding a dicha variab

ADF 11g: No se puede encontrar o invalida su entidad propietaria

Image
Un error clásico cuando se hace un Create  de una fila para una entidad es: Enlace de descarga del ejemplo " oracle.jbo.InvalidOwnerException: JBO-25030: La entidad de detalle Y con la clave de fila null no se puede encontrar o invalida su entidad propietaria. " Error al realizar una operación  Create  en una tabla  Detalle  sin su  Maestro ¿A que se debe este error? Cuando se tiene un modelo de datos en el que existen entidades "Maestro - Detalle" se hace muy común este problema. El problema reside en la creación de filas en la entidad  Detalle sin que la entidad  Maestra se encuentre en la misma página. Supongamos el siguiente modelo de datos:  Modelo de datos, Tabla Maestro-Detalle. Dado un idioma, tienes los portales asociados Como se puede comprobar, existe una relación de Foreign Key entre PortalesWeb e Idiomas por el campo ID del idioma. Esto lo que supone es que: Tabla Idioma es la maestra. Tabla PortalesWeb es el detalle. Por lo

ADF 11g: Paso de parámetros entre llamadas a Task Flows

Image
Es muy común dividir los Task Flows en más Task Flows para facilitar el mantenimiento de los mismos. Esto hace que en numerosas ocasiones sea necesario pasar parámetros entre el Task Flow que actúa de Llamador y el Task Flow que actúa de Llamado . Enlace a descarga del Ejemplo: EjemploParamTaskFlows. Por ello traigo un ejemplo sencillo y explicativo de como se realiza el paso de parámetros entre Task Flows. Para comenzar, tenemos 2 Task Flows: El   Llamador: Es una Bounded Task Flow basada en fragmentos que contiene una única vista encargada de realizar la llamada a otro Task Flow. Está basada en fragmentos dado qu e lo incrustaremos en una página de prueba llamada startApplication.jspx. Task Flow Llamador El Llamado: Es una Bounded Task Flow basada en páginas puesto que será ejecutada por el Llamador en modo " diálog / inline-popup" . Contendrá una lógica inicial basada en el parámetro consumido de entrada que decidirá a qué página de la Task Flow se va a nave