Posts

Showing posts from 2011

SSXA: Obteniendo SiteContext y conexión RIDC en un Servlet

Image
Durante el desarrollo de sitios web con SSXA (Site Studio for eXternal Applications) nos habremos encontrado en numerosas ocasiones con los siguientes problemas: ¿Cómo obtengo el SiteContext del sitio web para poder generar, por ejemplo, enlaces a secciones en un Servlet?. ¿Cómo puedo conseguir la conexión RIDC que está siendo utilizada por el proyecto de Site Studio en un Servlet?. Obtener de manera "limpia" esta conexión nos asegura que cada vez que cambiemos la conexión a Site Studio del proyecto, no hay que realizar ningún cambio manual en código. Para ello haremos uso de API proporcionado por el core de las librerías de SiteStudio. Obtener el SiteContext en un Servlet. Obtención del SiteContext en un Servlet Obtener el cliente IDC para realizar consultas mediante API RIDC. Los pasos a seguir son los siguientes: Obtener una IdcClientFactory . Obtención de la factoría A partir de la factoría, obtener el cliente y el contexto. También podemos g

Integrando WebCenter Spaces en WebCenter Portal

Image
Cuando se desarrolla un portal con WebCenter Portal Framework es posible integrar la funcionalidad de WebCenter Spaces en el mismo. Enlace a la entrada tutorial de como configurarlo ¿Cómo integrar WebCenter Spaces API? WebCenter Spaces ofrece un Web Service que expone toda la funcionalidad con respecto a: Creación y gestión de grupos de espacios y plantillas. Gestión de usuarios y los espacios a los que pertenecen. Obtener información acerca de los espacios y plantillas de los mismos. Los pasos a seguir para la obtención del Data Control que nos permitirá el uso de manera fácil y transparente la funcionalidad ofrecida por el WebCenter Spaces API Client son los siguientes: Primero se debe comprobar que hay acceso al WSDL de WebCenter Spaces atacando a la siguiente URL. http://host:[spacesport]/webcenter/SpacesWebService?WSDL XML que define el WSDL de Spaces WSDL de Spaces para probarlo  Adherir la tecnología Web Service al proyecto de WebCenter (o aplicació

Extendiendo Oracle Composer

Image
Oracle Composer es un mecanismo de personalización y configuración en tiempo real de los distintos componentes ADF de nuestra aplicación o portal. En la entrada os traigo cómo añadir nuevos paneles a la barra de herramientas de Oracle Composer. Además, también os comento cómo extender el panel de propiedades asociado a componentes y manejar los eventos de Oracle Composer. Oracle Composer con un Panel propio adherido a la barra de herramientas Para añadir nuevos paneles hay que seguir los siguientes pasos: Crear un Task Flow que será el responsable de realizar las operaciones pertinentes de nuestro nuevo panel. Task Flow de cambio de Logo Crear el archivo de configuración de extensiones de Oracle Composer, pe_ext.xml, en la carpeta META-INF de nuestro proyecto (este archivo no se crea por defecto con WebCenter ni ADF Applications). Archivo pe_ext.xml con un panel nuevo El archivo pe_ext.xml contiene los siguientes elementos: <panels><panel></panel&

Oracle WebCenter Portal PS3: Bug al ejecutar Task Flows con inline-popups

Image
Uno de los Bug más curiosos que me encontré al aterrizar en la versión PS3 de Oracle WebCenter fue el siguiente: Al ejecutar Custom ADF Task Flows que a su vez ejecutan otros Task Flows en forma de Dialog/inline-popup en una aplicación de Oracle WebCenter Portal. Me encontré que los popups, en Firefox/Chrome, renderizaban la misma página del Portal en la que se encontraba el Task Flow invococador en lugar del Task Flow al que invocaba. Curiosamente este "Bug" no ocurría en Internet Explorer. Enlace de descarga Aquí os presento un sencillo ejemplo que presenta el curioso Bug y una solución de contingencia al mismo hasta que encuentre una solución limpia a ello. En primer lugar crear una Fusion Middleware Application (ADF) del cual generar una ADF JAR Library con los Custom ADF Task Flows que se van a ejecutar en la aplicación de WebCenter. Básicamente generar 2 ADF Bounded Task Flows: Uno basado en page-fragments (jsff), que actuará como el llamador. Uno basado

Oracle WebCenter Content (UCM): Propagación de metadatos de las carpetas

Image
La propagación de Metadata de las carpetas a los contenidos almacenados en la misma se realiza mediante la siguiente configuración. Primer se debe seleccionar en la configuración del componente Folders_g de Oracle WebCenter Content ( UCM ) los metadatos que van a ser propagados. Configuración de qué metadatos propagar En las carpetas que queremos que propaguen metadatos, debemos indicarles en el metadato Inhibit Propagation que lo haga estableciéndolo al valor “False” . Metadato que indica la propagación Al realizar Check-in de nuevos contenidos en la carpeta desde UCM , los metadatos propagados estarán auto-rellenados. Sin embargo, cuando realizamos una carga masiva de contenidos desde BatchLoader en una carpeta determinada, no se rellenan automáticamente los metadatos propagados desde la carpeta. Por ello es necesario ejecutar la función Propagate desde la sección info de la carpeta. Función de propagación de metadatos en la info de una carpeta Un saludo a

Procesamiento de XML y uso de XSLT en aplicaciones de SiteStudio o WebCenter

Image
Una de los problemas más comunes a la hora de utilizar XSTL (JSTL para XML), o transformaciones XSL (x:transform por ejemplo) en nuestras aplicaciones de Oracle WebCenter o SiteStudio XA (SSXA) suele residir en el SAX Parser registrado tanto en WebLogic, como en nuestra aplicación. El error más usual es el siguiente: XML-22108: (Error) Invalid Source - URL format is incorrect. XML-22000: (Fatal Error) Error while parsing XSL file (weblogic.xml.jaxp.RegistryXMLReader cannot be cast to oracle.xml.parser.v2.SAXParser). ¿Qué significa este error?.  Que WebLogic por su lado esta utilizando y tiene registrado los "Factory" de la librería xerces.jar y por nuestro lado tenemos en nuestro Classpath de la aplicación la librería de  Oracle XML Parser v2.  ¿Cómo se soluciona este error?. Las posibles soluciones a este error tienen 2 vertientes principalmente: Registrar en WebLogic el Parser Oracle XML Parser v2 e incluirlo en su classpath. (Solución 1). Directamente en

Site Studio (SSXA): Cache de consultas RIDC

Image
Una de las novedades de Site Studio for eXternal Applications (SSXA) es la posibilidad de "cachear" los resultados procedentes de consultas RIDC. Por ello únicamente es necesario añadir, en las consultas "cacheables", los siguientes parámetros: __ssxaCacheEnabled: Flag que establece si vamos a cachear la consulta. Para ello establecerlo a true. __ssxaCacheKey: Para el caso en el que se quiera especificar la clave de caché a utilizar. __ssxaCacheFields: Campos que se van a usar para "cachear" el contenido. Si no se especifica utilizará toda la información local. __ssxaCacheTTL: Es el tiempo de vida del contenido en caché medido en milisegundos. Por defecto, si no se especifica valor es de 5 minutos. Un ejemplo de uso: Ejemplo de servicio RIDC cacheado En el caso de querer administrar/monitorizar la caché manualmente. Se puede acceder a su administración desde la consola del Content Server de Oracle WebCenter Content (UCM): Navegar ha

Rendimiento en aplicaciones de WebCenter (Performance)

Hola. Aquí os traigo un breve bloque de referencias sobre como mejorar el rendimiento de nuestros portales de WebCenter. Por un lado, en el capítulo 22 de la documentación oficial de Oracle  encontramos diferentes formas de mejorar el rendimiento de nuestra aplicación. En ella podemos encontrar varios tipos de configuraciones que podemos realizar tanto a nivel de aplicación como de configuración externa: Configuración del DataSource de WebCenterDS recomienda que se incrementen los "pooles" iniciales de conexión al igual qué parámetros que por defecto vienen en un valor bastante bajo. Configuraciones de la JVM y WebLogic como pueden ser el aumento de la memoria asignada a la JVM ó la configuración del garbage collector Configuración de la duración de la sesión y del tiempo de expiración de las JSP de nuestra aplicación de WebCenter para la liberación de memoria de aquellos recursos que son usados con menor frecuencia. "Setting ADF Client State Token" . Es e

Integración WebCenter - UCM (PS3): Obtener conexión RIDC mediante Java (II)

Hola. Respecto al a entrada:  Integración WebCenter - UCM (PS3): Obtener conexión RIDC mediante Java  añadir que existe una librería para el acceso al nombre de la conexión primaria RIDC configurada en nuestra aplicación de WebCenter: String connectionName = DocLibADFConfigUtils .getPrimaryConnectionName(); Con ella podremos acceder al nombre configurado de la conexión UCM de forma transparente. Un saludo.

UCM: Filtrar metadatos del formulario de Check-in de una Carpeta

Image
Hola. Hoy os traigo una entrada relacionada con WebCenter Content (Oracle UCM). En esta ocasión indicaré los pasos para poder filtrar los metadatos que son mostrados al usuario en el caso de que cree una carpeta en nuestro repositorio de contenidos. Los pasos a seguir son los siguientes: Acceder a Administration > Admin Applets > Configuration Manager que es donde se establecen los metadatos, perfiles, reglas etc... que usa Oracle UCM. Configuration Manager Navegar a la pestaña Rules y darle a Add para añadir una nueva regla. Rellenando los siguientes campos: Regla configurada Name: Nombre de la regla Descripción: Es de buena costumbre especificar de qué se trata la regla :). Seleccionar la opción Is global rule with priority para indicar que es una regla global. Activar la opción Use rule activation condition para indicar en qué caso se desea que la carpeta no muestre los metadatos en los formularios de Check-in. Añadir dando a Edit la siguiente regla de a

Integración WebCenter - UCM (PS3): Obtener conexión RIDC mediante Java

Image
Hola a todos. Algo que no he encontrado documentado por la red (por lo que puede que cambie en futuras versiones) es cómo conseguir mediante API de WebCenter la conexión RIDC a nuestro servidor de contenidos UCM. Por ello, indagando cómo WebCenter Spaces atacaba a los servidores de contenido configurados en la EnterpriseManager o cómo atacar a los propios configurados en JDeveloper me encontré con la siguiente clase: oracle.webcenter.content.stellent.StellentUtils; Gracias a esta clase podemos obtener la conexión UCM por el nombre configurado desde la EnterpriseManager o en nuestro JDeveloper mediante la llamada: StellentUtils.getIdcClient("NOMBRE_CONEXION"); Aquí os dejo un pequeño fragmento de lo que sería un método que devolviese una conexión RIDC a nuestro servidor de contenidos: Acceso RIDC mediante StellentUtils Por otro lado siempre tenemos la opción de usar el API JCR para acceder a nuestra conexión y a partir de ahí obtener un cliente de acceso

ADF BC: Valor procedente de una Secuencia

Image
Hola. Hoy os traigo tres formas distintas de establecer el valor de un atributo de una Entity Object al valor de una secuencia de base de datos. Cambiando el tipo de dato del atributo a DBSequence. Esta solución consiste en cambiar el tipo de dato del atributo de nuestra Entity Object a DBSequence. Al realizar este cambio podemos observar en la parte inferior de la pantalla de propiedades se ha habilitado la posibilidad de configurar el nombre de la secuencia de base de datos que deseamos utilizar para dicho atributo. Atributo de entidad con Type: DBSequence No genera el valor final de la secuencia hasta que se realiza commit . Por ello si se contribuyen tablas asociadas a la del valor autogenerado pueden encontrarse valores negativos temporales hasta que se realice el commit de los datos. Programáticamente en la creación de la fila Esta solución consiste en sobrescribir el método create de una fila y forzar la llamada a la secuencia de base de datos para establecer el

Multilenguaje en una aplicación de WebCenter Portal

Actualización 09/09/2014: Nueva solución Link Espanol: goo.gl/Pqcs9s Link Inglés: goo.gl/1X3vr1 Update 09/09/2014: New solution Spanish Link: goo.gl/Pqcs9s English Link: goo.gl/1X3vr1

Custom Skin ADF: Modificación de los estilos y traducción de literales

Image
Hola a todos :). Hoy os traigo un ejemplo de cómo realizar nuestra Custom   Skin  a nuestros componentes ADF. El Custom Skin  engloba 2 puntos fundamentalmente: La sobre-escritura de estilos  de los componentes ADF. La modificación/traducción de los literales por defecto que vienen en los componentes ADF. En el siguiente ejemplo vamos a crear una aplicación básica en la que cambiaremos un estilo y un texto de un componente ADF. En primer lugar debemos crear en la carpeta WEB-INF de nuestra aplicación Fusion Middleware (ADF) un archivo XML con el siguiente nombre: trinidad-skins.xml  . Fichero trinidad-skins.xml En este archivo se pueden definir tantos Skins como se necesite: Contenido de trinidad-skins.xml Los campos a rellenar por cada Skin son: Id: Identificador único del Skin . Family: Nombre de la familia. Este nombre es importante dado que es el que se utiliza para seleccionar el Skin en la aplicación. Extends: En caso de estar extendiend