viernes, 11 de enero de 2019

Importar y configurar un proyecto Maven en Eclipse

Cuando vamos a trabajar con un proyecto Maven que tenemos en nuestro SVN y lo vamos a configurar en nuestro entorno de desarrollo, necesitamos realizar los siguientes pasos:

1º) Hacemos checkout del SVN del proyecto, y con el asistente lo descargamos como proyecto Java.

 

 

2º) Debemos seleccionar la opción "Import" del menú "File", para a continuación importar el proyecto como Maven.

 

3º) Por último, seleccionamos la opción de convertir a Proyecto Maven, haciendo click derecho en el proyecto.

Integración BPM con WCC

Se plantea la posibilidad de integrar BPM con WCC, de tal manera que al realizar, por ejemplo, un checkin de un documento, lance un proceso de aprobación.

Apoyándonos en la siguiente documentación (https://blogs.oracle.com/practicalbpm/webcenter-content-ucm-bpm-integration, y en https://docs.oracle.com/cd/E21764_01/doc.1111/e16759/toc.htm) permitimos dicha integración.

1. Prepare the UCM environment for integration with SOA. 

This step is only required when the
UCM and SOA domains were created separately and the UCM domain is not extended
for SOA.

a. Copy the “soa” folder from SOA_ORACLE_HOME to UCM_ORACLE_HOME
For example: Copy D:\Oracle\Middleware\Oracle_SOA1\soa to D:\Oracle\Middleware\Oracle_UCM1\soa

b. Update the class path in setDomainEnv on the UCM server

Windows:
Edit setDomainEnv.cmd in
%DOMAIN_HOME%\bin

Add :  set POST_CLASSPATH=%ORACLE_HOME%\soa\modules\oracle.soa.mgmt_11.1.1\soa-infra-mgmt.jar;%POST_CLASSPATH%
UNIX
Edit SetDomainEnv.sh in
$DOMAIN_HOME/bin
Add: POST_CLASSPATH="${ORACLE_HOME}/soa/modules/oracle.soa.mgmt_11.1.1/soa-infra-mgmt.jar${CLASSPATHSEP}${POST_CLASSPATH}"

c. Enable Cross Domain Security
Perform the following steps in both UCM and SOA console
1. Login to the Weblogic server console (http://localhost:7001/console/)
2. Select the domain name under Domain Structure. Navigate to the Security Tab
3. Check “Cross Domain Security Enabled”


4. Enter the same credential for both UCM and SOA
d. Restart the servers 

2. Enable UCM-BPEL Integration Component

a. Login to content server, navigate to the Admin Server
b. Select component manager for the server on which the component needs to be installed

c. Click on “Advanced Component Manager” and enable the BPELIntegrationComponent


d. Login to the Weblogic Administration console of UCM. Navigate to servers, select the UCM server and click Restart SSL.


3. Configure connection to SOA server

a. Navigate to Administration -> Oracle BPEL Administration -> Connection Configuration

b. From the “Connection Menu” select Add connection
Enter the following credentials

Note: The Provider URL contains the SOA server’s hostname and port.
You can test this be running the wlst script in the SOA server and connect to t3://servername:[port]
c. Test the connection. If successful you should see the following screen. Revisit   steps 1 – 3 if there is an error.


4. Process Configuration

a. Navigate to Administration -> Oracle BPEL Administration -> Process Configuration
b. From the process menu select “Add Process”
c. Select the BPM/BPEL process from the drop down

d. Click Save
e. Go to Actions “Upload Payload” Map the process input fields to the Metadata fields in UCM
Añadir leyenda

  
5. Update the SOA composite to enable UCM integration

a. Add the following line to Composite.xml in the SOA/BPM project as shown
<binding.adf serviceName="YourUniqueServiceName" registryName=""/>
 

6. Configure Workflow in UCM 

a. Login to content server
b. Navigate to Administration -> Admin Applets
c. Launch the Workflow Admin Applet
d. Add a new Workflow criteria


e. Click on edit criteria workflow. The following screen is where the event trigger condition is set. In this case the workflow will be triggered for Document Type that matches “Document”


f. Edit initiateprocess
g. Add the users that have access to the workflow and document check in for which the workflow is triggered
 

h. Add the following lines under Exit conditions
wfGet("conversationId") and 
obIsInstanceClosed("BPEL", wfGet("conversationId"))
 

i. On Events tab click Edit for Entry. Add the line <$wfReleaseDocument()$> before <$endif$> to automatically approve the document. If you do not add this step the document state will be
“Pending” and the user has to manually go to Content Management -> Active Workflows -> My Workflow Assignments to approve the document.
<$if not conversationId$>
<$obConfigID="BPEL"$>
<$obInvokeProcess(obConfigID)$>
<$endif$>


7. Login as sysadmin ( the user from step 6)

Check in a document of Type Document trigger condition in step 6) and verify if the BPM/BPEL process is instantiated.
 
Trouble shooting
  1. Cross domain security – If
    the cross domain security is configured incorrectly you will see the
    following error:
vax.xml.ws.WebServiceException: java.lang.SecurityException: [Security:090398]
Invalid Subject: principals=[weblogic, Administrators]
  at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:209)
 
  1. Enabling UCM System Audit to trace BPEL
    Integration related errors
Navigate to Administration->System Audit Information and add the BPEL integration component under “Tracing Sections Information”. Update and click “View Server Output” to view the detailed logs. 

3. Complex Types as BPEL/BPM process input. With the current release of Webcenter Content (11.1.1.6) UCM does not process the complex type as the process input and the “Update Payload” action will give and error. The work around is to use a simple type as input.

Uso e instalación de Lombok en Eclipse

Para un determinado proyecto decidimos usar Lombok para ver su potencial y funcionalidad. Lombok (https://projectlombok.org/) es una librería Java que mediante notaciones @ en la cabecera de las clases Java permite ahorrar código al programador, como los setter y getter, logger, synchronized ...etc.
Un ejemplo muy sencillo de uso sería el siguiente, donde definimos un POJO y sólo con la notación @Data Lombok nos facilita el uso de getters y setters de todos sus atributos.





Para usar Lombok, debemos descargar la librería Java de su página oficial, utilizarla en nuestro proyecto como librería, por ejemplo en nuestro caso al usar Maven hacemos referencia a ella:





Por último, y no menos importante, debemos indicarle a nuestro IDE que estamos usando esta librería. Nuestro proyecto al ejecutar y procesar la sentencia @Data generará los métodos correspondientes, pero al intentar usar dichos métodos en otra clase para llamar a los atributos del POJO nos dará errores de compilación.
Para ello debemos descargarnos el jar de la página oficial, en nuestro caso para Eclipse (https://projectlombok.org/setup/eclipse) y ejecutarlo. Por detrás lo que hará es copiar el jar en la ruta de instalación del IDE, para usarlo en tiempo de compilación.



























viernes, 13 de mayo de 2016

Error al desplegar aplicación ADF en Weblogic nuevo

Cuando hemos montado un Weblogic que albergará aplicaciones ADF, la primera vez que intentamos desplegar nos aparece el error siguiente:

Error while processing library references. Unresolved application library references, defined in weblogic-application.xml: [Extension-Name: adf.oracle.domain, exact-match: false]

Esto es porque hay librerias de ADF de Weblogic que no se han aplicado a todos los destinos (en concreto al manejado de ADF). Para ello debemos asegurarnos que las siguientes librerías tengan aplicado como destino tanto el nodo Admin como el manejado:

  • adf.oracle.domain
  • adf.oracle.businesseditor
  • adf.oracle.domain.webapp
  • jstl
  • jsf
La aplicación del destino se realiza en la siguiente pestaña de la librería (en Deployments) en concreto: