domingo, 24 de mayo de 2015

BUG: Process Spaces Task Flows en WCP 11.1.1.8.x / SOA 11.1.1.7.x

Tras habilitar Process Spaces en la versión 11.1.1.8.3 y llegar hasta la 11.1.1.8.7 no me percaté de los siguientes problemas entre WCP - SOA de la máquina de desarrollo que uso:

  • El Worklist Task Flow que requiere la conexión BPEL lanzaba la siguiente excepción.

    java.lang.NoClassDefFoundError: oracle/webcenter/bpel/config/BPELHelper
    oracle.webcenter.concurrent.ExecutionException: oracle/webcenter/bpel/config/BPELHelper
    Caused by: java.lang.NoClassDefFoundError: oracle/webcenter/bpel/config/BPELHelper
            at oracle.webcenter.bpel.config.BPELHelper.<clinit>(BPELHelper.java:83)
            at oracle.webcenter.bpel.config.BPELHelper.<clinit>(BPELHelper.java:83)
            at oracle.webcenter.bpel.config.BPELHelper.<clinit>(BPELHelper.java:83)
            at oracle.webcenter.bpel.config.BPELHelper.<clinit>(BPELHelper.java:83)
            at oracle.webcenter.bpel.config.BPELHelper.<clinit>(BPELHelper.java:83)
            at oracle.webcenter.bpel.config.BPELHelper.<clinit>(BPELHelper.java:83)
            at oracle.webcenter.bpel.config.BPELHelper.<clinit>(BPELHelper.java:83)
  • Los Portales creados mediante plantilla de Portal de BPM se podía interactuar con los Task Flows. Sin embargo, si querías añadir un Task Flow de BPM en cualquier otra página éste se registraba como User Customization de la página. Esto hacía que los Task Flows de BPM que se añadían sólo se veían en View Mode y no podían ser configurados ni eliminados de la página (solo mediante WLST y modificando el MDS).

A qué se debe todo esto?

Oracle WebCenter Portal y BPM Process Spaces dependen de la librería compartida oracle.bpm.spaces(11.1.1,11.1.1) que a su vez siguiendo la cadena dependen de las librerías de chemistry-opencmis-client

Estas librerías se encuentran tanto en la WebCenter_HOME como en la SOA_HOME. Sin embargo, por sorpresa mía, en la WebCenter_HOME esta carpeta se encuentra totalmente vacía.

Solución?

He abierto un Oracle - SR para resolver este problema.
El workaround es copiar las librerías de la SOA_HOME e.g. /oracle/middleware/Oracle_SOA1/soa/modules/chemistry-opencmis-client a la ORACLE_HOME e.g. /oracle/middleware/Oracle_WC1/soa/modules/chemistry-opencmis-client y reiniciar los Managed Servers correspondientes (WC y SOA).

Después de ello podrás comprobar varias cosas:
  • La Worklist vuelve a funcionar
  • En el Resource Catalog aparecerán los iconos de los Task Flows de BPM (Que aparecían como enlace roto debido a problemas en el classloader de librerías).
  • Puedes añadir los Task Flows de BPM a las páginas de WebCenter Portal sin preocuparte de que se registren como Customizaciones de Usuario. Ahora son adheridas correctamente.
Nota: Actualizaré la información según se vaya actualizando el SR.

Integracion WCP - BPM: Access Denied (keyName=BPM-CRYPTO)

En los entornos de desarrollo es típico el ejecutar SOA y WebCenter en un mismo dominio de WebLogic.

En este caso en concreto se trata de un entorno con WebCenter Portal 11.1.1.8.7 y Oracle SOA/BPM 11.1.1.7.7. En el que se quiere habilitar Process-Spaces para poder usar los Task Flows de BPM dentro de los portales de WebCenter Portal.
BPM-Process Spaces
  Al habilitar la extensión de BPM Process Spaces para poder usar los Task Flows de BPM e intentar utilizar los Task Flows de BPM te puedes encontrar con la siguiente excepción:

Caused by: java.security.AccessControlException: access denied (oracle.security.jps.service.credstore.CredentialAccessPermission context=SYSTEM,mapName=BPM-CRYPTO,keyName=BPM-CRYPTO read)

A qué es debido esta excepción?.

La instalación de SOA y WebCenter (tanto Portal como Content) traen consigo la siguiente librería compartida: oracle.soa.workflow.wc(11.1.1,11.1.1)

oracle.soa.workflow.wc shared-lib usando WebCenter HOME
Al abrir esta librería compartida en la consola de administración de WebLogic comprobamos que esta cogiendo las librerías de la home de Oracle_WC1 (Home de WebCenter).

Sin embago, en el Policy Store (en este caso en el fichero system-jazn-data.xml dado que es un entorno de desarrollo con policies en fichero, en uno productivo deberia comprobarse mediante WLST o Enterprise Manager Console) encontramos que las policies solamente están aplicadas sobre la la HOME de SOA.


 
  
   file:${soa.oracle.home}/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
  
 
 
  
   oracle.security.jps.JpsPermission
   VerificationService.createInternalWorkflowContext
  
  
   oracle.security.jps.service.policystore.PolicyStoreAccessPermission
   context=APPLICATION, name=*
   getApplicationPolicy
 
 ...

Solución?

La solución se basa en dar los permisos al modulo que corresponda con el despliegue oracle.soa.workflow.wc(11.1.1,11.1.1) en el policy-store. En este caso duplicar las policies asignadas para la home de SOA pero para la home de WC.
Si esta basado en fichero, solamente copiar y pegar el bloque cambiando la variable de la oracle home.

 
  
   file:${wc.oracle.home}/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
  
 
 
  
   oracle.security.jps.JpsPermission
   VerificationService.createInternalWorkflowContext
  
  
   oracle.security.jps.service.policystore.PolicyStoreAccessPermission
   context=APPLICATION, name=*
   getApplicationPolicy
 
 ...

En caso de Policy Store basado en base de datos hacerlo por WLST usando como ejemplo los siguientes scripts:

grantPermission(codeBaseURL="file:/u01/oracle/Middleware/Oracle_WC1/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar", permClass="oracle.security.jps.JpsPermission" ,permTarget="VerificationService.createInternalWorkflowContext" )
grantPermission(codeBaseURL="file:/u01/oracle/Middleware/Oracle_WC1/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar", permClass="oracle.security.jps.service.policystore.PolicyStoreAccessPermission" ,permTarget="context=APPLICATION, name=*" , permActions="getApplicationPolicy")

Para cualquier duda extra consultar el siguiente Document de Oracle My Support relacionado con este problema:
While Deploying A Project, The Application Link Is Not Visible Within BPM Workspace (Doc ID 1583533.1)

miércoles, 1 de abril de 2015

Content Presenter: Wizard vs Page Definition

Content Presenter es uno de los Task Flow más populares en WebCenter Portal dado que permite la visualización de contentidos en WebCenter Content así como Assets del viejo Site Studio.

Content Presenter para mostrar contenido de Site Studio y Content

Este post explica las diferencias principales entre configurarlo utilizando el Content Presenter Wizard en Runtime y configurarlo en Design/Runtime a través de los parámetros de entrada.

Configuración a través de la Page Definition.

Configuración por parámetros de Content Presenter

Esta configuración está pensada para desarrolladores que usan Content Presenter en sus desarrollos en Design Time o para configurar de una manera más "avanzada" en Runtime cuando se requiere el uso de EL Expressions complicadas.

Configuración a través del Wizard

Content Presenter Wizard

Permite al usuario final configurar de manera sencilla los contenidos a visualizar y qué plantillas utilizar.

Diferencias

Las preferencias establecidas en Page Definition sobrescriben las realizadas en el Wizard.

La configuración de parámetros de Task Flow, obviamente se guarda en la Page Definition. Sin embargo... dónde se guarda las del Wizard?.

La configuración realizada mediante el Wizard se guarda en el MDS (Metadata Service) en la ruta:

oracle\webcenter\doclib\scopedMD\[GUID_Espacio]\[NombrePagina.jspx]\TaskFlowId.xml

Al exportar del MDS se encontrará un fichero XML por cada Content Presenter de la página con la configuración realizada mediante el Wizard.


ACTIVE

dsTypeSingleNode

ucm#dDocName:000225




oracle.webcenter.content.templates.default.detail
false



Referencias: