Posts

Showing posts from 2014

WebCenter Portal y WebCenter Content con Framework Folders

Desde la versión 11.1.1.8.3 de WebCenter Portal es posible utilizar la integración WebCenter Portal - WebCenter Content usando Framework Folders en vez de folders_g como componente de organización por carpetas del contenido. En caso de tener una base de datos Oracle, es obligatorio que Oracle WebCenter Content use OracleTextSearch como motor de búsqueda en vez de DATABASE.FULLTEXT . En el caso de DATABASE.FULLTEXT ocurrirá una excepción en Portal como la que sigue: oracle.webcenter.content.integration.spi.ucm.UCMBridge isRecursiveSearch SEVERE: Repository UCM_Conn is not configured for full text search capabilities. Esta excepción puede despistar puesto que DATABASE.FULLTEXT es full text . El siguiente código es el responsable del test del indexador configurado. public boolean isRecursiveSearch() throws UCMSearchValidationException { if (UCMCoreUtils.isFwkFolder()) { SearchConstants.SearchEngine searchEngine = SearchConstants.SearchEngine.getEngine(getS

Multilenguaje en una WebCenter Framework Portal

Image
Hace tiempo publiqué una solución de multidioma basada en un ADF Phase Listener. Sin embargo, esta solución tuvo ciertos bugs y problemas que me hicieron retirarla del Blog . Plntilla por defecto con cambio de Idioma Enlace a la versión en inglés No me he olvidado de ello y ahora presento una nueva solución y aquí la traigo :). Esta solución resuelve los siguientes paradigmas del multidioma: Traducción de literales del portal. Traducción de los Navigation Resource del Navigation Model según la Locale actual. Se basa en: Una solución de multidioma basada en preferencia de usuario (Cookie). Un ADF Phase Listener para la invalidación del Navigation Model .   Filtro y Cookie de preferencia de usuario Implementación de un Java Filter que sobreescribirá las Locales permitidas según la Locale actual. Se apoya en un RequestWrapper para la sobrescritura de estas Locales . Por defecto, el lenguage es inglés. public final class LocaleFilter implements Filter { /

Recursos / Assets de Framework Portal despues de un re-despliegue

Image
Los recursos / assets de WebCenter Framework Portal son referenciados en el archivo generic-site-resources.xml que se encuentran en la ruta de MDS bajo el GUID de portal por defecto. /oracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed Versión en inglés La administración de WebCenter Framework Portal permite la edición y gestión de los recursos de portal que estan registrados en dicho archivo. Recursos / Assets de Portal En el caso de WebCenter Portal, hay múltiples de ellos, uno por cada GUID de Portal creado con Portal Builder (además de el por defecto). Ejemplo de fragmento del archivo por defecto de generic-site-resources.xml

ADF11gR1: Task Flow ejecutados en Dialogo/Popup

Image
Hay dos modos de ejecutar un Task Flow en popup. Versión en inglés Generando la Bounded Task Flow basada en páginas JSPX en lugar de fragmentos JSFF. Con ello se consigue que el Task Flow pueda ser llamado como diálogo en una actividad de otro Task Flow . Task Flow invocado como inline-popup Usando la Bounded Task Flow como Region dentro de un af:popup Ventajas e Inconvenientes de cada solución Solución basada en TF-Call JSPX Ventajas: Se puede utilizar el framework de ADF para llamar en módo diálogo el Task Flow. El Task Flow puede devolver valores a su vuelta usando el Return Values . Inconvenientes: Mayor dificultad para aplicar estílos específicos al Diálogo/Popup. El Task Flow no puede ser embebido como Region . Solución basada en Region embebida en un af:popup Ventajas: Se puede reutiliz

Migrando los ejemplos a GitHub

Image
Para evitar pérdidas de código asociado a algunos de los ejemplos he abierto mi propio repositorio de GitHub donde dejaré el anterior y futuro código que postee por el blog. Repositorio GitHub con los ejemplos Mientras no esté todo migrado a https://github.com/DanielMerchan los enlaces seguirán bajando los ejemplos de Dropbox. Un saludo.

af:panelTabbed, Task Flows y WebCenter Portal

Image
Los Task Flow en ADF 11gR1 (framework en el cual se basa WebCenter Portal 11g) se cargan de manera secuencial. Esto significa que hasta que el último Task Flow no finaliza su primera actividad la página no es renderizada. Existe un truco del ATEAM para simular un Lazy Loading de los Task Flows . http://www.ateam-oracle.com/improving-adf-page-rendering-time/ Existe un número mágico que dice de no tener más de 8 Task Flows por página. En numerosas ocasiones, estos Task Flows se encuentran en componentes af:panelTabbed separados por pestañas. El problema reside en que todos los Task Flows (incluyendo las pestañas no visibles) ejecutarán todos los Task Flows que contengan. Ejecución de los 3 Task Flows aunque los otros dos no se vean   Cómo ejecutar solo los componentes de la pestaña actual ? Configuración de la activación de los Task Flows Andrejus explica como configurar la propiedad de Activation de los Task Flow. Con esta propiedad se puede controlar la activación y des

Task Flows que navegan usando el Navigation Model de WebCenter Portal

Image
Cuando una Bounded Task Flow necesita realizar una navegación de Portal basada en el Navigation Model del mismo necesita incluir una actividad de tipo parentAction para propagar a la aplicación de Portal de que ha ocurrido una navegación de Portal y que debe de actualizar los estados del Navigation Context. Content Presenter incluye por defecto la actividad wcnav_parentAction Qué información debe contener esta parentAction? La parentAction debe contenter la siguiente la siguiente acción de Root : <parent-action id="wcnav_parentAction"> <root-outcome>wcnav_outcome</root-outcome> </parent-action> Configuación que debe llevar todos los Task Flow que usen internamente el Navigation Model Qué puede implicar no tener esta acción?. Popups con ventanas vacías o contextos de navegación que no reflejan el estado actual y el CurrentNavigationModel . Referencia: Visualizando Navegaciones en WebCenter Portal 11.1.1.8.3

Oracle ACE Associate

Image
Como algunos sabéis, hace poco más de una semana fuí aceptado dentro del programa Oracle ACE, más especificamente dentro del nivel de entrada Oracle ACE Associate. Agradecer a todos aquellos que no sólo seguís el blog, sino que también en el foro de OTN de WebCenter compartís vuestras dudas y soluciones a toda la comunidad de Oracle WebCenter. Ser Oracle ACE significa más energíá para seguir compartiendo mis experiencias y soluciones a los problemas del día a día que pueden suponer trabajar con la Oracle Fusion Middleware. Pronto espero realizar los siguientes cambios al blog: Actualizar entradas con tecnologías actuales como Oracle ADF Mobile, ADF 12c, SOA/BPM e incluso WebCenter Sites. Corregir entradas antiguas las cuales están obsoletas o cree cuando el conocimiento que tenía era menos claro. Seguir tratando de mantener la dualidad blog Spanish - English para mantener a la mayor parte del mundo informada. Y, por supuesto, seguir en el foro de OTN WebCenter Portal / Con

WebCenter Portal con WebCenter Content (Contribución y Presentación) al mismo tiempo

Image
WebCenter Portal puede ser configurado para utilizar varios Repositorios de Contenido al mismo tiempo Versión en inglés Varios repositorios de WebCenter Content   Content Presenter con múltiples repositorios Este post cubre un escenario peculiar como el siguiente: "El contenido debe ser mostrado desde dos repositorios de contenido distintos según el Rol del usuario. Si el usuario es un usuario contribuidor entonces el contenido debe ser consumido desde el repositorio de Contribución. En caso contrario, el contenido será servido desde el repositorio de Presentación" . Escenario propuesto El escenario ideal es tener totalmente separados Portal-Content de contribución/presentación. Sin embargo, puede que solamente se tenga una instancia de WebCenter Portal . ¿Cómo se puede conseguir este dinamismo entre repositorios basado en Roles de usuario?   Primero recordar lo siguiente con respecto a Content Presenter : Hay dos maneras de configurarlo: Us

Evitar eliminar las policies y credenciales al borrar una aplicación de WebCenter Portal

Image
Una de las preguntas mas frecuentes a la hora de desplegar, re-desplegar y borrar una aplicación de WebCenter Portal es qué pasa con las policies, credenciales, usuarios y grupos. (English version) Cuando se genera el archivo .EAR de la aplicación de WebCenter Portal . Este archivo trae, por defecto, las politicas, credenciales y usuarios generados en desarrollo. Esta configuración se lleva a cabo desde Application Properties -> Deployment -> Security Deployment Options . Propiedades de seguridad durante el empaquetamiento y despliegue   ¿ Qué significan cuando estan Checked estas propiedades?. En el caso de Application Policies y Credentials hará que éstas creadas durante el despliegue o sobre escritas durante el re-despliegue de la aplicación. Esto significa que se perderán los cambios realizados en el entorno de destino post-deployment. En caso de Usuarios y Grupos estos serán creados en el Identity Store configurado en el entorno de destino. ¿ Qué significan

Usando Resource Action Handler Tag

Image
Una de las taglibs mas usadas por el Framework de WebCenter Portal es la del Resource Action Handler ( <rah:resourceActionBehavior> RAH Tag Enlace versión inglés. Descarga de la aplicación de ejemplo Este tag permite la creación de enlaces y navegar a los detalles de los recursos/servicios definidos en WebCenter (oracle.webcenter.doclib, oracle.webcenter.page...) .  Estos servicios estan definidos en el archivo de configuración service-definition.xml (ya sea dentro de una ADF JAR Lib como la mayoría de servicios OOTB o dentro de la propia aplicación de Portal). Durante la configuración de un nuevo servicio, éste suele enlazarse a un Task Flow como resource-viewer (detalle del recurso) o a una clase URL Rewriter que generara una URL con parámetros hacia la página donde se encuentra el recurso. Uno de los ejemplos más comunes de uso de esta taglib es el fragmento de resultados del servicio de búsqueda. Cada link de cada elemento de resultado usa rah:resourceActionB

Integrando WebCenter Likes / Comments API - I

Image
Este post es un ejemplo de como usar el API de Activity Streaming para manejar los Likes y Comentarios de los servicios / contenidos de WebCenter Portal. Enlace a la versión en inglés   Lista de gente que ha hecho Like a una actividad "La parte de los comentarios será ampliada en Integrando WebCenter Likes / Comments API-II" (Pronto) Hay un servicio por defecto que permite aplicar la funcionalidad de Likes sobre contenidos. Descargar LikesCommentsExtension JDeveloper Project Por ejemplo: Document Manager Task Flow permite la funcionalidad de “Like“/“Unlike” sobre los contenidos almacenados en WebCenter Content . Document Explorer trae por defecto Like How can I add the same functionality to the Content Presenter Templates? Este ejemplo hace uso de Activity Streaming API aplicado sobre un contenido mostrado por Content Presenter. Para ello, obtiene toda la información necesaria del contenido a partir de la variable  oracle.webcenter.content.integra

CTRL + Shift + C: Acceso al modo contribución por Java

Image
La manera estándar de acceder al modo contribución es mediante la combinación CTRL + Shift + C. Modo contribución Sin embargo, puede que se requiera poder realizar lo mismo mediante otra combinación de teclas o simplemente desde un botón. Para ello no hay más que usar el siguiente fragmento de código. import oracle.adfinternal.view.page.editor.bean.PageEditorPanelBean; import oracle.adfinternal.view.page.editor.utils.Utility; if (ModeContext.getCurrent().isInEditMode()) { return; } PageEditorPanelBean pgEditorPanelBean = PageEditorPanelBean.getCurrentInstance(); pgEditorPanelBean.toggleCCView(); Utility.refreshPageCustomizable(); JDeveloper advertirá que oracle.adfinternal solamente es para uso interno y que estas clases no deberían usarse. Sin embargo, no hay ninguna clase para realizar esto en el API Público como lo hay para cambiar a modo edición (Composer: CTRL + Shift + E). Por ello esta advertencia puede ser "omitida". Advertencia de uso inte

Extender WebCenter Portal Analytics

Image
Recientemente he publicado un artículo técnico de cómo extender WebCenter Analytics para recolectar eventos producidos en Content Presenter. Enlace a la página del artículo (en inglés) Enlace directo al PDF. Enlace directo al código. En este artículo se describe lo siguiente: Modelo de datos usado por WebCenter Analytics. Cómo se registra un nuevo evento. Cómo utilizar el API para recolectar información de los nuevos eventos. Extender Content Presenter para añadir los eventos Contenido visto en una plantilla de detalle. Contenido visto en una plantilla de listado. Espero que sirva para entender y conocer mejor el API de WebCenter.