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)