Archive for 2008

ADF 11g - Creando Plantillas para Páginas JSPX

6

Una de las nuevas características de ADF11g es la creación de plantillas de diseño las cuales son la base para todas o un conjunto de páginas que hacen parte de la aplicación. Este es el primero de dos artículos en los que veremos las características principales de las plantillas en JSF así como algunas los componentes de las mismas. El objetivo principal es el de crear una página jspx de nuestra aplicación que tenga el siguiente look and feel

ResultPage 

Una plantilla en JSF básicamente es un página JSPX la cual, a través de metadata define un diseño que van a manejar todas las páginas que se basen en esta plantilla. Las partes de una plantilla son: áreas editables o facets, atributos de página, áreas no editables o estáticas (logo, menu global, etc) y podría llegar a contener lógica de negocio que aplique para todas las páginas por ejemplo un menú para hacer login, logout.Wizard

Para crear una plantilla, creamos un Proyecto de Vista/Controlador basado en JSF, luego bajo la tecnología escogemos JSF Template 

El asistente es muy parecido al de una página JSPX sin embargo se puede notar que que ahora contamos con unos elementos nuevos que son los facets definitions así como también los atributos.

Podemos utilizar lFacetsos facets para definir las áreas en las cuales vamos a permitir adicionar contenido, esto quiere decir, cuando una página se crea con base en esta plantilla va a tener áreas editables  en donde se pude insertar cualquier tipo de componente, a la vez que van a existir partes de la aplicación que son no-editables las cuales hacen parte de la plantilla y no son definidas como facets. Para este ejemplo voy a definir 3 facets para mi plantilla un área para controles de navegación, un área principal y un área para Attributesinsertar menús.

Los atributos son elementos de nuestra  plantilla los cuales van a ser común para toda página, como un nuestro ejemplo vamos a definir un par de atributos el titulo de la página y el subtitulo de la misma, como se puede apreciar estos atributos pueden o no ser requeridos. En la segunda parte de este articulo voy a concentrarme en como utilizar la funcionalidad de asociar esta plantilla con el ADFm.

Una vez definimos loStructureNoFacetss componentes contamos con el editor visual de páginas y comenzamos por definir la distribución utilizando elementos de layout y así podemos definir una página base, en mi ejemplo la estructura inicial de mi plantilla queda como se ve en la parte izquierda.

La forma en que asociamos los facets y atributos a la plantilla es a través del componente común de la paleta de componentes el facet lo que hacemos es arrojar un facet como cualquier otro tipo de componente dentro del área que queremos hacer editable lo cual va a permitir especificar el facet que queremos en esta areaOpcionesFacet

 

Para definir los atributos lo que hacemos es utilizar un componente común el cual va a contener el atributo, para mi ejemplo el titulo lo voy a contener dentro de un af:outputText el cual lo arrojo en donde yo quiero que vaya el titulo, luego edito la propiedad Value con la siguiente EL #{attrs.Titulo} lo que hacemos aqui es hacer referencia de los atributos de JSP. La estructura luego de adicionar los facets y atributos queda de la siguiente forma

StructureFacets

Ahora cuando vamos a crear una nueva página podemos basarla en la plantilla que creamos

page 

y podemos ver que los atributos requeridos aparecen como errores hasta que no le demos el valor correspondiente

RequiredWarning

En la segunda parte vamos a ver como definir lógica de negocio que sea incluida en la plantilla y todas las páginas puedan utilizar.


javax.xml.soap.SOAPException: java.security.PrivilegedActionException:oracle.j2ee.ws.saaj.ContentTypeException: Not a valid SOAP Content-Type: text/html; charset=UTF-8 ó javax.xml.soap.SOAPException: Message send failed: Premature EOF

0

Es común que al invocar servicios desde BPEL PM se generen éstos tipos de respuestas por una falla del lado del servicio o bien por causas mismas del flujo (time outs).
En un par de clientes en los que he estado trabajando últimamente se presentó este caso, siendo diferente la causa en cada uno de ellos.
En un primer caso sucede porque el Enpoint del WS que estás consumiendo, está mal escrito o simplemente es una ubicación inexistente. Esto provoca que el HTTP Server te conteste diciendo que el contenido es un text/HTML, pues efectivamente la ubicación al no existir, es como si pusieras una URL inválida en un navegador y éste te contestara un HTML con el error.
Por otro lado, cuando sale:
<summary>
exception on JaxRpc invoke: HTTP transport error:
javax.xml.soap.SOAPException: java.security.PrivilegedActionException:
javax.xml.soap.SOAPException: Message send failed: Premature EOF
encountered
</summary>
 
Puede ser por una cuestión de timeout. En procesos largos que hacen varias invocaciones hacia una misma ubicación de HTTP, bien puede suceder que la sesión en el Web server se vea vencida, y por lo tanto cualquier otro request te retorne ese error.
Para solucionar ésto, se sugiere agregar la siguiente opción en el inicio de la JVM:
<data id="java-options" value="-server -XX:MaxPermSize=128M -Xms2048M -Xmx2048M -DHTTPClient.disableKeepAlives=true ... />

Esto aplica para la versión: Oracle SOA Suite 10g (10.1.3)


Con esto evitarás que el HTTP Server haga un reset de la sesión. En casos cuando pasas por LoadBalancers, ésto puede ser típico (gracias Toño y Daniel).




Integrando Oracle BPM Studio 10gR3 con Microsoft Office 2007

0

 

Introducción

El propósito de este documento es demostrar a través de un ejemplo sencillo y práctico como poder integrar 2 poderosas herramientas Oracle BPM con Microsoft Office 2007 (Word, Excel, Powerpoint).

Muchas veces cuando nos toque diseñar e implementar procesos de negocios se requerirá que en el flujo de actividades se tengan que adjuntar documentos tales como Presentaciones, Notas, Documentos y hojas de cálculo pero también es posible que la ejecución de ciertos procesos sean iniciados por alguna de estas aplicaciones.

 

Pre-Requisitos

    • Oracle BPM Studio 10gR3
    • Microsoft Office 2007
    • .NET Framework (versiones 2.0 o 3.0 o 3.5)

Paso 1: Crear un proceso con Oracle BPM

En en menu Principal seleccionar File/New/BPM Project

clip_image002

En la ventana de New BPM Project ingresar el nombre del proyecto, en nuestro caso le llamaremos TestOffice y seleccionar el botón Next.

clip_image004


Paso 2: Configurar el BPM Engine

Lo que haremos en este paso es habilitar los PAPI Web Services lo que nos permitirá comunicarnos con el Office Ribbon

Primero nos colocamos sobre el Nuevo proyecto que acabamos de crear y con el botón derecho del mouse aparecerá una ventana de opciones y de estas seleccionaremos Engine Preferences

clip_image006

Como siguiente paso seleccionaremos el tab Advanced de la ventana de Engine Preference y hacemos seleccionamos el check del Start PAPI Web Services

clip_image008

Después oprimimos el botón Ok para aceptar los cambios realizados.

Paso 3: Crear un Proceso Simple

Crearemos un proceso simple al cual llamaremos igual que a nuestro Proyecto TestOffice, aceptamos los datos por default y oprimimos el botón Ok

clip_image010

3.1 Crearemos un Role llamado TestRole

Para hacerlo en el project Navigator de nuestro Proceso en Organization / Roles y con el botón derecho del mouse seleccionamos New..

clip_image012

3.2 Crearemos un Participante : test

Para hacerlo en el project Navigator de nuestro Proceso en Organization / Participants y con el botón derecho del mouse seleccionamos New..

clip_image014

Los datos a completar serian los siguientes:

- First Name: test

- Last Name : test

- Display Name: test

- Role: TestRole

3.3 Agregar en el proceso TestOffice lo siguiente:

- Una actividad Interactive la cual le daremos el nombre de ActividadHumana

- Y una actividad Global – Global Creation que le daremos el nombre de Instancia

Al final debería de quedarnos un flujo similar a la siguiente imagen

clip_image016

Una vez terminado el flujo lo que debemos de hacer es iniciar el Engine del BPM eliminando las instancias de los Procesos y los archivos de Logs; luego iniciamos el Workspace y nos autenticamos con el participante test.

4. Instalar Add-inn para Microsoft Office 2007

4.1 Verificar la versión del Framework de .NET

Para verificar si se tiene instalado o no el framework de .net lo primero que debemos de hacer ir a Control Panel y hacer double click en Add o Remove Programs y en la lista de programas nos debería aparecer algo similar a esto

clip_image018

4.2 Descargar el add-in

Para descargar e instalar el add-inn nos vamos Oracle BPM Workspace y hacemos click donde dice Download BPM Add-in….

clip_image020

y ahi en la pagina que nos abre este link hacemos clik en download

clip_image021

Ejecutamos la instalación y seguimos las instrucciones del instalador.

5. Configurar Word/Excel para Integracion con BPM

Debemos abrir Excel o Word y en el menu principal seleccionamos el TAB que dice Business Process

clip_image023

Ahora seleccionamos el botón Chage Settings para configurar el BPM Server.

NOTA: Debe de estar ejecutándose el BPM Server o haber iniciado el Engine de BPM

clip_image025

En User ingresamos el Participante que definimos en nuestro proceso de ejemplo y hacemos el Test Connection dándonos como resultado Successfully connected to server….

Después hacemos click en el botón Next

clip_image027

Seleccionamos nuestro Proceso de Ejemplo TestOffice y nuevamente click en el botón Next

clip_image029

Y para finalizar hacemos click en el boton Accept

6. Prueba de Iniciar el proceso con Word/Excel

clip_image031

Hacemos clik en el Submit to Business Process, e inicia un proceso y nos aparece una ventana para seleccionar el Proceso que deberia de recibir el documento.

clip_image027[1]

Una vez que seleccionamos el proceso, hacemos click en el botón Next. Nos aparece una ventana donde podemos ingresar una descripción del documento que esta iniciando el proceso de BPM.

AttachInformacion

Hacemos click en el boton Accept y para concluir nos debería de aparecer una ventana de Confirmation, para confirmarnos que se inicio del proceso de forma exitosa en base a un documento Word/Excel.

Confirmation

Como último paso iremos a nuestro Workspace y nos autenticamos con el usuario test y deberíamos de tener al menos un proceso iniciado llamado TestOffice1 con un documento adjunto.

clip_image037

Felicidades! Ya termino de instalar y configurar su ambiente para iniciar procesos de Oracle BPM basado en Office 2007



Invocando un proceso Síncrono de Oracle BPEL PM desde Oracle BPM Studio

3

Una colaboración de un compañero y gran amigo - Carlos Toso desde Costa Rica. El es un Senior Sales Consultant especialista en los temas de SOA y BPM.

En los últimos meses ha estado trabajando con un producto nuevo de Oracle llamado Oracle BPM y en este artículo se explica cómo integrarlo con Oracle BPEL PM.

Objetivo

El propósito de este documento es mostrar la facilidad y flexibilidad de integrar las 2 herramientas de Oracle para el diseno de flujos humanos utilizando Oracle BPM Studio y Oracle BPEL para la integracion con aplicaciones o flujos estructurados, ambas herramientas forman parte de la nueva suite de Oracle denominada Oracle BPM Suite.

PreRequisitos:

  • Jdeveloper 11.1.0
  • Oracle BPM Studio 10.1.3.4
  • Oracle BPEL 11g

Software Descargable

- Oracle Bea Products Download : http://www.oracle.com/technology/software/products/ias/bea_main.html?rssid=rss_otn_soft

- Oracle Products Download:

http://www.oracle.com/technology/software/index.html

Nota Importante:

Si se quiere replicar esta misma nota con versiones anteriores de JDeveloper 10.1.3.x, Oracle BPEL 10.1.3.x y Oracle Business Process Management Studio 6.0 MP4 se puede hacer sin mayor diferencia tan solo cambian algunas pantallas por la version de los productos


Paso 1

Crear un proyecto SOA Project

Y crear un ejemplo de un proceso muy sencillo utilizando Oracle BPEL, en este ejemplo utilice un Proceso Sincronico que invoca una consulta a la base de datos atraves de un parametro.

clip_image002

Paso 2

Una vez contruido el proceso en Oracle BPEL ejecutar el proyecto desde el archivo composite.xml

clip_image004


Paso 3

Ingresar a la consola de Enterprise Manager, por ejemplo: http://maquina:8988/SOAConsole, donde maquina es el nombre del server o de la maquina donde se instalo y se configuro SOA 11g en Jdeveloper.

clip_image006

Paso 4

Se debe de hacer una primera prueba o testing del proceso hecho en BPEL. Para hacerlo se selecciona el proceso y en el boton Actions seleccionar Test Service - Client

clip_image008

Paso 5

Cuando hacemos Testing sobre el proceso esto nos abre una pagina para definir los parametros de entrada al proceso y la definicion y ubicacion del Service Description

clip_image010

Paso 6

Hacemos un click sobre Service Description para poder capturar el WSDL del servicio del proceso BPEL

Ejemplo:

http://ctosovoy-cr:8988/soa-infra/services/default/BPMinvocaBPEL!1.0*2008-08-28_13-56-33_078/client?WSDL

clip_image012

Paso 7

Abrimos un proyecto o creamos un nuevo proyecto de Oracle BPM Studio y en el proceso con el Rol de Developer creamos a nivel del Project Navigator en Catalog creamos un nuevo module al cual denominaremos OracleBPEL

clip_image014

Paso 8

Ahora a nivel del module OracleBPEL hacemos boton derecho y en la lista de valores seleccionamos Catalogue Component / Web Service

clip_image016

Paso 9

Ahora en la pantalla Catalog Component Wizard copiamos en WSDL Address el EndPoint del proceso BPEL que obtuvimos en el Paso 6 y si dejamos el nombre del Module que te crea apartir del WSDL y hacer click en el boton Next

clip_image018

Paso 10

Deberia de aparecer una pantalla de Instropesting y haber completado el 100% de analisis del WSDL y de generarlo en tu BPM Studio.

clip_image020

Paso 11

Ahora verificamos en el Project Navigator bajo el Catalog / OracleBPEL / el cliente ClienteWSDL (el nombre del cliente puede variar dependiendo del nombre que se le dio en el paso 9) fue generado automaticamente

clip_image022

Paso 12

Ahora agregamos una actividad automatica en el flujo del proceso y la llamamos InvocacionBPEL y hacemos double click en esa actividad

clip_image024

Paso 13

Ahora debemos de arrastrar al editor de codigo lo siguiente: el Service, el Request y el Response, que en nuestro ejemplo serian

BPELProcess2Service, BpelProcess2ProcessRequest, BpelProcess2ProcessResponse y esto genera automaticamente el siguiente codigo

bpelProcess2Service = OracleBPEL.ClientWSDL.BPELProcess2Service()

clip_image026

Paso 14

El editor nos da un Warning donde nos solicita que las variables las debemos inicializar por tanto hacemos el siguiente cambio en el editor como a continuacion se describe

bpelProcess2Service as OracleBPEL.ClientWSDL.BPELProcess2Service = OracleBPEL.ClientWSDL.BPELProcess2Service()

bpelProcess2ProcessRequest as OracleBPEL.ClientWSDL.BpelProcess2ProcessRequest = OracleBPEL.ClientWSDL.BpelProcess2ProcessRequest()

bpelProcess2ProcessResponse as OracleBPEL.ClientWSDL.BpelProcess2ProcessResponse = OracleBPEL.ClientWSDL.BpelProcess2ProcessResponse()

clip_image028

Paso 15

Ahora escribimos a continuacion la variable que definimos bpelProcess2Service y le agregamos un punto al final para que nos muestre las opciones de los metodos y seleccionamos el que dice process y ENTER

clip_image030


Paso 16

Automaticamente nos crea un metodo para invocar al servicio de BPEL

process bpelProcess2Service

using payload = null

returning payloadOutput =

payloadOutput

Paso 17

Ahora le pasaremos un valor estatico al metodo que incorporamos en el paso anterios y para hacerlo escribimos la siguiente variable bpelProcess2ProcessRequest y le agregamos un punto al final para que nos muestre las opciones de los metodos y seleccionamos el que dice input y ENTER

clip_image032

Paso 18

A esta variable le asignamos un valor estatico por ejemplo :

bpelProcess2ProcessRequest.@input = "100"

Y reemplazamos el metodo que teniamos en el paso 16 de esta forma

process bpelProcess2Service

using payload = bpelProcess2ProcessRequest

returning bpelProcess2ProcessResponse =

payloadOutput

Paso 19

Dejando de esta manera el codigo en la actividad de invocacion de Oracle BPEL

clip_image034

Paso 20

Lo unico que nos hace falta para verificar el valor de respuesta del proceso de BPEL agregaremos al codigo la siguiente instruccion

Display bpelProcess2ProcessResponse.result

clip_image036

Con este ultimo paso el resultado del proceso de BPEL lo mostraremos en el LogViewer del Proceso BPM.

clip_image038

Listo!!! Ya tienen un ejemplo muy sencillo de como integrar tanto Oracle BPM Studio con Oracle BPEL.

Lo unico que hace falta es ejecutar el proceso de BPM Studio y tener el servicio de BPEL ejecutandose.

Conclusión:

A nivel de BPM (Business Process Management) que es una metodologia empresarial para la mejora de procesos hay muchos enfoques de abordar el modelaje de estos flujos por tanto se debe de contar diferentes alternativas de solucion y soporte a diferentes estandares que nos ayuden tanto en la flexibilidad como en la capacidad de integracion. Oracle BPM Suite incopora estandares tales como BPMN, XPDL, BPEL y el proposito final de esta nota tecnica es demostrar como en pocos pasos integramos ambas herramientas.

Links de interes:

http://www.oracle.com/technology/tech/soa/index.html (SOA)

http://www.oracle.com/technology/products/bpm/index.html (BPM)


Bienvenido JDeveloper 11g!!!

0

Andando corriendo de un lado a otro, con el Oracle Open World terminado y alistando todo para la puesta a producción de JDeveloper 11g, no pude ni siquiera hablar sobre el anuncio hecho durante el evento en relación a la puesta en producción de JDeveloper 11g.

Y que sucedió?........bueno que el día de hoy, luego de esta anhelada espera hemos salido a producción. Han sido algo más de dos años en los que fuimos liberando versiones de pre-producción que mostraban el progreso que se iba haciendo, pero que desafortunadamente no podían ser utilizadas para proyectos de producción por la naturaleza del contenedor principalmente.

JDeveloper 11g el cual es el primero de los productos pertenecientes al Fusion Middleware que sale en esta versión. Uno de los principales cambios en JDeveloper11g a diferencia de cualquier versión previa de JDeveloper es que a partir de esta, y tras la adquisición de BEA, el contenedor embebido que viene con la herramienta y naturalmente que está en producción es WebLogic Server 10.3.


Así mismo la herramienta cuenta con muchas nuevas características pero conservando la esencia en tiempo de desarrollo. En cuanto a la ejecución de aplicaciones, se presentan algunos pequeños cambios ya que al ejecutar una aplicación por primera vez esto inicia una instancia del contenedor embebido WLS y luego se hace un despliegue de la aplicación sobre esta instancia, la cual en el momento de ser detenida se desmonta (undeploy) de la instancia del servidor que esta corriendo. Con esto lo que se logra es que sobre una instancia del servidor se pueden ejecutar varias aplicaciones en simultanea.
Otro de los cambios comparado con versiones previas es que dada la naturaleza de WLS, este tiene que ser instalado, por lo que ahora JDeveloper cuenta con un instalador. El instalador de JDeveloper requiere in mínimo de JDK6u6. El instalador de JDeveloper se puede obtener como .EXE o en .JAR para el cual se debe tener el JAVA_HOME apuntando al JDK6 y luego a través de línea de comandos se lanza el instalador por medio de java -jar jdevstudio11110install.jar.


JDeveloper 11g viene también con la versión en producción de ADF 11g el framework de desarrollo Java EE de Oracle con el cual se pueden desarrollar aplicaciones ricas en Internet utilizando tecnologías como AJAX, JSF, EJB/JPA, Business Components.


Para más información sobre JDeveloper se puede ir a la página principal
http://www.oracle.com/technology/products/jdev/index.html
El equipo de JDeveloper ha puesto una página de preguntas y respuestas bastante bueno que se puede acceder aquí
http://www.oracle.com/technology/products/jdev/htdocs/jdeveloper11g...

Voy a intentar cubrir nuevas características de JDeveloper11g en los próximos artículos ojalá antes de que se nos llegue otro release..... ;-)


Procesos Síncronos de larga duración…

0

En procesos BPEL podemos identificar fácilmente 2 tipos de procesos:

  1. Síncronos. Operaciones de 2 vías (entrada-salida)
  2. Asíncronos. Operaciones de 1 vía (es decir, una entrada con una posible salida eventual)

En ocasiones es necesario tener procesos síncronos que le den una respuesta al cliente casi de forma inmediata y después realizar una serie de pasos, los cuales no necesariamente requieren notificar al cliente que los invocó.

De esta manera un proceso síncrono de operación de 2 vías ,podría convertirse en un proceso que guarde su estado.

En uno de los proyectos en los que estoy trabajando actualmente es necesario realizar procesos de Activación de Servicios, en los cuales al cliente se le notifica inmediatamente pero después se realizan varios pasos en los cuales no es necesario volver al cliente a dar alguna notificación.

Con Oracle BPEL Process Manager esto es fácilmente lograble usando un proceso Síncrono que tenga un Callback casi inmediato y luego una serie de pasos:

proceso

Como se puede ver, es un proceso Síncrono normal con un Reply casi inmediato, pero con una serie de pasos posteriores en los cuales está incluido una llamada Asíncrona, lo cual hace que el Flujo tenga un punto de deshidratación, pero evitaría que el cliente estuviera esperando una respuesta.

Este tipo de procesos son ideales cuando se necesita contestar rápidamente a quien invoque y después es necesario seguir procesando. Igualmente es ideal cuando el cliente no tiene la tecnología para invocar un proceso Asícrono con WS-Addressing, de ésta forma invoca a un proceso Síncrono, recibe una respuesta y deja al proceso ejecutándose.


Llego el Oracle Open World 2008 - Mi Horario

0

La hora de la verdad ha llegado, OOW 2008 está a punto de comenzar. Va a ser una semana en donde vamos a desayunar, almorzar y cenar Oracle. San Francisco se viste de rojo y blanco para darle la bienvenida a los mas de 40 mil asistentes que se esperan recibir en esta edición del evento.

Ojala pueda encontrar a lectores de este blog que estén asistiendo al evento, siempre es bueno ver que hay una persona de carne y hueso al otro lado de la pantalla. Este es mi horario para el OOW 08

Domingo 21 - (Si empezamos desde temprano la semana)

13:15-14:15 Marriott Golden Gate C1 Hands-on Lab: Oracle Fusion Development--Creating Web User Interfaces

Lunes 22

10-12 Demo Grounds A28 - Rich Internet Applications

13-15 Demo Grounds A25 - JDeveloper

17:30-18:30 Marriott Golden Gate C1 Hands-on Lab: Oracle Fusion Development--Creating Web User Interfaces

Martes 23

16:00-17:00 Marriott Salon 05 - S298715-MS Office Front Ends for Oracle Application Development Framework Applications: Intro to Oracle ADF Desktop Integration

Miercoles 24

9 - 10:30 Open World Unconference - ADF Methodology for the masses

11-13:30 Demo Grounds A28 - Rich Internet Applications


El Detras de Camaras de Oracle Open World 08

0

A 2 semanas del inicio de Oracle Open World 08, estamos alistando todo para que este evento que atrae cerca de 45 mil personas de todas partes del mundo sea un éxito. Y para la muestra  un botón, esta es una de las salas donde se están alistando los equipos para los demo grounds, cerca de 1000 mil equipos entre laptops, servidores, etc....impresionante.

PIC-0001

Para aquellos que están viniendo, recuerden que tenemos Oracle Develop, un evento dedicado para los desarrolladores con más de 130 sesiones técnicas en tecnologías Oracle. 75 Hands-On-Labs y más de 25 sesiones sobre ADF. Una de las sesiones que no se pueden perder es :

S298715 Building MS Office front ends for ADF applications- An Introduction to ADF Desktop Integration

Pre-regístrese ahora para que así asegure su cupo. En los próximos días esperen más noticias sobre el OOW.


Post navigation