Wednesday, December 10, 2008

Haciendo un workflow en BPEL

Notas sobre el documento:

· La demo se hizo usando la vmware End2End SOA Order Booking v3.1

· El proyecto lo puedes descargar de aquí

El proceso

clip_image003

Elementos del proceso

· Roles: Solicitante, Gerente

· Payload (Unidad de información): idSolicitud, Nombres, Dirección, fecha de nacimiento, teléfono, usuario

Hagámoslo en BPEL!

1. Crear una nueva aplicación en BPEL –todo el desarrollo de este ejemplo lo hacemos usando Oracel JDeveloper 10.1.3.3.0-

· File-New-General-Applications

clip_image005

· Click derecho sobre la nueva aplicación-New Project-General-Projects-BPEL (el proceso que creamos es asincrónico)

clip_image007

2. Creamos el payload

· Dentro de la carpeta Integration Content, click en Schemas y seleccionar el RegistroSolicitud.xsd

clip_image009

3. Crear las actividades principales que conforman el flujo (Durante los siguientes pasos vamos a revisar estas actividades y complementarlas según la funcionalidad que estamos buscando dentro del flujo). Dentro de estas tareas principales identificamos 3 importantes:

· Registrar la solicitud en la base de datos: Invoke

· El gerente revisa la solicitud: Human Task

· La revisión puede ser para aprobar, rechazar o mandar a corregir: Switch

clip_image011

Outcomes rechazar, aprobar, corregir
Parameters Element-RegistroSolicitud.xsd-RegistroSolicitudProcessRequest
Assignment Label: Gerente
By expression-dynamic user xpath: Functions-Identity Service Functions- getManager(/task:task/task:payload/ns0:RegistroSolicitudProcessRequest/ns0:usuario)

clip_image013

4. Ahora necesitamos complementar el flujo que hicimos implementando los servicios necesarios para que la conexión a la base de datos funcione

· Obtener el ID de la solicitud en la base de datos: invoke a un servicio en la DB

· Seleccionar Database Adapter

· Execute Custom SQL: select tform100_seq.nextval id_solicitud from dual

· Conectar el invoke con el servicio

· Registrar la solicitud en la base de datos: Para esto necesitamos copiar los datos que vamos a insertar (assign) y crear un servicio que inserte los datos en la DB (invoke), esto se debe hacer cada vez que el solicitante cree una nueva solicitud o la corrija, es por esto que necesitamos crear una variable booleana que nos permita controlar el registro en la base de datos.

· Crear una variable global booleana que controle el registro en la DB

clip_image015

· Crear un assign que inicialice la variable booleana a true y el id de la solicitud que viene del output del invoke obtenerIdSolicitud con el input del payload

clip_image017

· Crear un while que encapsule el proceso de registrar solicitud a la DB cada vez que el boolean este en true, dentro de este while se haría:

o Un invoke a la DB que permita insertar o hacer update de datos en la tabla donde guardamos la información de la solicitud (todo lo que va a la DB es lo que queda guardado en el input del assign que se hará a continuación)

o Un assign donde se copian los datos a insertar: id, usuario, nombres, estado, fecha. La fecha la conseguimos en expression-dateFunctions-currentDateTime

clip_image019

· Crear un assign que al finalizar el registro en la DB actualice el boolean a false

5. Ahora trabajaremos cada una de las opciones que puede tomar el gerente: la de rechazar, la de aprobar y la de corregir. En este paso haremos la de rechazar:

· Crear un servicio a la DB que actualice el estado (un update)

· Crear un assign en donde este el input del servicio al cual le asignemos el id de la solicitud y el nuevo estado

· Crear una actividad Email

· To: DeprecatedIDService-getUserProperty(usuario, mail)

· Body:Solicitud rechazada

6. Aprobar

· Crear un servicio a la DB que actualice el estado (un update)

· Crear un assign en donde este el input del servicio al cual le asignemos el id de la solicitud, el nuevo estado

· Crear un servicio a la DB que ingrese el cobro con la información de la solicitud: id, importe, fecha de aprobación

· Crear el assign para que el input del servicio tenga los datos necesarios

7. Corregir

· Crear un servicio a la DB que actualice el estado (un update)

· Crear un assign en donde este el input del servicio al cual le asignemos el id de la solicitud, el nuevo estado

· Crear un human task para la corrección de la solicitud

· Outcomes: Finalizar

· Parameters: RegistroSolicitud.xsd

·Assignement: /task:task/task:payload/ns0:RegistroSolicitudProcessRequest/ns0:usuario

· Crear un assign para poner el booleano en true y el payload del human task de RegistroSolicitud en el inputVariable

clip_image021

Friday, December 5, 2008

Entendiendo la arquitectura de UCM

Un deployment típico de UCM está compuesto de los siguientes componentes:
  • Content Server
  • Web Server
  • Database
  • Search Index
  • Repositorio de contenido nativo (Vault)
  • Repositorio de contenido web (Web Layout)

Content Server

El content server es el componente core de UCM. En pocas palabras, es una aplicación Java que corre en el background y administra todas las tareas de gestión de contenido. El content server tiene un repositorio en donde almacena el contenido en su formato nativo y en su formato web y otro en donde guarda los metadatos.

Web Server

El web server es la interfaz entre el content server y nosotros los usuarios, de esta manera, cada vez que el web server recibe un request desde un browser, el le envía los comandos apropiados al content server para que éste los procese y envíe devuelta el resultado al web server para que lo muestre en el browser. Todo este proceso está acompañado de un filtro de seguridad que por cada request verifica que se tengan los permisos adecuados, lo cual asegura que uno sólo puede ver la información a la que le dieron permiso.

Database

Los metadatos (la información de la información –titulo, autor, fecha de check in, revisiones, etc- algo así como la ficha bibliográfica de los libros en una biblioteca) son guardados en una base de datos relacional y son usados para describir, encontrar y acceder al contenido de una manera más sencilla. La base de datos también almacena los perfiles de usuarios, la información de suscripciones y los datos históricos.

Search Index

UCM soporta diferentes motores de búsqueda, entre ellos –y el recomendado :D- es el Oracle Text, el cual viene en la base de datos y permite hacer búsquedas full-text sobre todo el contenido administrado en el content server.

Repositorio de contenido nativo –Vault-

Vault es el repositorio a donde van todos los archivos chequeados en su formato nativo, esto nos permite poder acceder al archivo original en cualquier momento y reutilizarlo –por ejemplo cuando quiero hacer cambios y generar una nueva versión de un documento-

Repositorio de contenido web –Weblayout-

El weblayout es el repositorio a donde van todos los formatos ´web-viewable' de los archivos chequeados –por ejemplo PDF-

Wednesday, December 3, 2008

Oracle Business Intelligence y LDAP

Hace no mucho tiempo tuve la necesidad de integrar mi servidor LDAP con mi servidor de Oracle BI, en esta ocasion estoy usando Apache Directory Services (Descargar) y para la interfaz usaremos Apache Directory Studio (Descargar)

Un paso a paso simple de como hacerlo.

1. Vamos a Oracle BI Administration Tool

2. Clic en Manage –> Security

image

3. En el Security Manager, clic en LDAP Servers

image

4. En el marco derecho, clic derecho –> New LDAP Server…

image

5. Debes tener lista la siguiente informacion:

  1. Hostname: Este es el nombre del servidor donde esta instalado el LDAP
  2. Port Number: Este es el puerto por el cual esta escuchando el servidor LDAP
  3. Base DN: Este es el punto de entrada para la autenticacion, por ejemplo si queremos extraer los usuarios de la unidad organizacional principal, deberemos usar ou=system.
  4. Bind DN:Esta es la ruta de autenticacion para el directorio LDAP, por defecto para Apache DS es uid=admin,ou=system; sin embargo si tienes otra configuracion, esta debera ser colocada aqui.
  5. Bind Password: Este es el password del usuario administrador de LDAP, por defecto es secret

image

6. Si tu servidor usa SSL debemos ir a la pestaña Advanced y seleccionar SSL

image

7. Damos clic en OK

8. Cerramos la ventana Security Manager

9. Damos clic en Manage –> Variables y abrimos el Variable Manager

image

10. Debemos crear una variable de inicializacion que nos permita identificar la persona que esta autenticada.

Action –> New –> Session –> Initialization Block…

image

11. Damos un Nombre a nuestro Initialization Block, para este caso usare ibUsuario (Initialization Block Usuario)

image

12. Damos clic en Edit Data Source y usamos como fuente el directorio LDAP al que nos acabamos de conectar.

Para esto damos cli en Data Source Type (LDAP) –> Browse y nos conectamos al servidor elegido

image

Damos clic en OK

image

Damos clic en OK

13. Ahora en la ventana principal del Inicialization Block, seleccionamos la variable destino, para esto damos clic en Edit Data Target

 image

14. Damos clic en New, esta variable debera llamarse USER, ya que usaremos una variable reservada del sistema

 image

Noten como una vez usamos el Nombre USER, el titulo de el formulario cambia.

 image

Damos clic en OK

15. En la columna LDAP variable, debemos colocar uid o el nombre que nuestro directorio LDAP utilize como identificacion del usuario; esta variable la podemos encontrar en la pestana de Advanced en la configuracion de nuestro servidor LDAP.

image

Damos clic en OK

16. Seleccionamos la caja Required for authentication

image

17. Damos clic en Test… y usamos un nombre de usuario y contrasena de nuestro directorio LDAP

image

Damos clic en OK y debera aparecer la siguiente ventana

 image

Damos clic en Close, y en la siguiente ventana en OK

image

18. Ahora probamos en nuestra interfaz web

image

Listo, ya tenemos integrado nuestro Oracle Business Intelligence con nuestro directorio LDAP.

Tuesday, December 2, 2008

Integrando fuentes con Oracle Business Intelligence

Quiza una de las preguntas mas comunes al trabajar con el front-end de una solucion de inteligencia de negocios, es el saber como integrar varias fuentes de informacion sin necesidad de pasar por la ETL, bien, durante este post veremos como integrar 2 fuentes basicas, integraremos Oracle Database con un archivo separado por comas (CSV), cabe anotar que este proceso funciona exactamente igual para cualquier tipo de fuente, si por ejemplo quieres integrar una fuente Oracle con una fuente Microsoft (Access, SQL Server), el proceso es exactamente el mismo.

Fuentes

CSV

image

 

 

 

 

 

 

 

 

Oracle database

 image 

 

 

 

 

 

 

 

 

 

 

 

 

 

Desde el Oracle BI Administrator, primero vamos a crear las conexiones.

Para el caso del archivo CSV debemos tener previamente creada una conexion ODBC tipica que apunte al archivo que creamos.

image

image

Realizamos exactamente lo mismo con la base de datos Oracle

 

 imageimage

 

 

 

 

 

 

 

 

 

 

Verificamos tener las 2 conexiones fisicas a las diferentes fuentes de informacion

image

Debemos crear ahora en la capa de negocio un nuevo modelo, alli agregaremos las 2 tablas, solamente debemos hacer drag and drop desde el modelo fisico hacia el modelo de negocio.

image

Ahora debemos dar clic derecho en el modelo de negocio y editar el diagrama de negocio (Business Model Diagram); crear un join entre Clientes.csv y VENTAS (1:n)

image

Una vez tenemos el diagrama listo, ya estamos preparados para ir a la capa de presentacion, solamente debemos tomar el modelo de negocio y arrastrarlo hacia la capa de presentacion.

image

Ahora podemos probar nuestras fuentes integradas.

Aunque en este punto ya podemos utilizar la capa de presentacion, es importante tener en cuenta que debemos crear las agregaciones y las dimensiones, este proceso se realiza de la forma tipica, como si tuviesemos una sola fuente de informacion.

image

Y aqui el resultado final

image

De una forma facil y sencilla integramos 2 fuentes de informacion.

Instalación de Oracle BI Enterprise Edition Plus en Linux Unbreakable

Al iniciar este proceso tuve varios tropiezos que me gustaria compartir con ustedes, aunque en realidad el proceso de instalacion de Oracle Business Intelligence Enterprise Edition Plus en Linux es simple, si hay ciertos pasos que se deben tener muy en cuenta al momento de instalar el producto, aqui realizaremos una instalacion basica en donde podremos usar Answers, Dashboards, Publisher y demas.

Lo primero

Tengan en cuenta que es requerido el tener el JDK 1.5 o superior, para este caso descarge el 1.6

Instalacion del JDK

  1. Cree una carpeta llamada Java en /usr/
  2. en la terminal copie
    1. $ cp jdk-6u6-linux-i586.bin /usr/java
    2. $ cd /usr/java
    3. $ ./jdk-6u6-linux-i586.bin
    4. Lea el contrato, aceptelo o rechazelo a discrecion
    5. El proceso de instalacion sera automatico y tomara unos 3 minutos aprox
    6. $ echo $JAVA_HOME
    7.  
    8. $ export JAVA_HOME=jdk1.6.0_06
    9. $ PATH=$JAVA_HOME/bin:$PATH
  3. Instalacion Completa!

Instalacion de OBIEE+

  1. Para este proceso se requieren aproximadamente 2GB de espacio en disco, verifique que cuente con esta capacidad.
  2. Vaya a la carpeta en donde se encuentran los instaladores
  3. Descomprimalos
  4. $ cpio -idmv < biee_linux_x86_redhat_101330_disk1.cpio
  5. $ cd /RH_Linux/Server/Oracle_Business_Intelligence
  6. $ ./setup.sh
  7. El proceso de instalacion lanzara una pantalla, todo el proceso completo se puede ver en detalle en el siguiente video.
Video de Instalacion
    John J Bocachica