Ir al contenido principal

Registro en BAM de actividad en OSB

En esta entrada intentaré describir los aspectos mas relevantes para habilitar y usar registro de actividad en BAM de Oracle desde el ESB de Oracle (OSB).

Primero entender que el BAM (Bussines Activity Monitor), como lo dice su nombre tiene por objetivo del monitoreo activo (osea en linea) de actividad de negocio, en este sentido el BAM es genérico puede registrar la actividad que tu definas, por eso el proceso parte por la definición de la estructura de datos que se utilizará para registrar dicha información denominado "Objeto de datos" (Data Object).

A continuación los pasos que seguiremos:
  • Definición de Objeto de Datos en BAM (Architect)
  • Definición de Reportes Iniciales en BAM (Active Studio)
  • Exposición de Servicio de Negocio en OSB, para Insertar información en el Data Object definido en BAM. 
Definición de Objeto de Datos en BAM
Esta acción se realiza en la opción denominada Architect de App Web del BAM por ejemplo:
http://<BAM-SERVER>:9001/OracleBAM
















Seleccionamos Architect



presionar enlace Crear Objeto de Datos e ingresar los campos que se quieren almacenar, la definición de esta estructura de datos es clave y debe estar acorde a lo objetivos de monitoreo fijados.











Guardar los cambios realizados en el "Objeto de Datos", pensar esta estructura como instancias de un evento, la sumarizacion o funciones agregadas se definirán en los informes y no aquí.

Nota: Una restriccion notable es que los campos fecha/hora NO almacenan milésimas de segundo.


Exposición de Servicio de Negocio en OSB


En el siguiente diagrama vemos como ínter actuar con el "objeto de datos" definido en el BAM desde el OSB, para eso utilizamos el BAM Adapter puente este nos simplifica la exposición como servicio de las operaciones sobre el "objeto de datos" este BAM Adapter es un adaptador que encontraremos instalado en la consola de weblogic, los pasos a seguir serán:
  • Configurar el BAM Adapter para que se comunique con nuestro BAM
  • Extraer el Archivo JCA, WSDL y Definiciones XSD para ínter actuar con las operaciones para manipular nuestro objeto de datos
  • Generar un Servicio de Negocio en el OSB para que utilice las definiciones obtenidas en el paso anterior y lo podamos ocupar desde cualquier Servicio Proxy.
  • Incorporar en un servicio Proxy la llamada a nuestro Servicio de Negocio mediante Nodo "publish" ya que es un servicio "One Way".
Arquitectura de Interacción y uso de BAM en OSB




Paso 1 - Configurar el BAM Adapter
Esto lo realizamos mediante la consola Weblogic, aquí entramos en la configuración del Adaptador "BAM Adapter" en los "pool de conexiones salientes", para llegar a esta opción seguir los pasos indicados en la siguiente captura de pantalla:


Al seleccionar el "pool de conexiones" que queremos configurar (punto 5) veremos los campos que es necesario configurar:

  • HostName, nombre del host donde reside el BAM
  • InstanceName, use nombre propuesto por omisión
  • UserName,  usuario en el servidor BAM con permiso para ejecutar operaciones en nuestro caso usuario de Administración.
  • Password, contraseña del usuario
  • PortNumber, puerto de comunicación con soporte para protocolo t3, disponible en el servidor Weblogic en donde se encuentra nuestro BAM


Paso 2 - Extracción de archivos JCA,WSDL y XSD 
Esto por simplicidad lo realizaremos desde JDeveloper, los pasos son:

  1. Agregar el adaptador "BAM Adapter" a una composición dentro de un proyecto de Composición SOA 
  2. Seguir Wizard para extraer interfaz para Insertar datos en nuestro "Objeto de Datos"
  3. Sacar Archivos jca,wsdl y xsd generados

Agregar el adaptador "BAM Adapter" a una composición dentro de un proyecto de Composición SOA 

El Wizard se inicia cuando soltamos el BAM Adapter sobre la composición



Inicio del Wizard
Nombre del servicio en la Composición
Selección de Objeto de Datos - Buscar Conexión
Selección de Objeto de Datos - Crear  Conexión

Crear Conexión - Nombre de Conexión
Crear Conexión - Datos de Conexión
Crear Conexión - Prueba de Conexión
Selección de Objeto de Datos - Selección
Wizard - Selección de Operación
Wizard - Nombre JNDI del Pool de Conexión Saliente
del BAM Adapter
Resultado Wizard - en rojo los archivos que necesitamos







Paso 3 - Generar un Servicio de Negocio en el OSB

Usando el OEPE (Oracle Enterprise Pack for Eclipse) la herramienta actual de escritorio para generar proyectos para el OSB (en futuro sera JDeveloper) generamos un proyecto que contenga los archivos que generamos en el paso anterior y generamos un servicio de negocio basado en estos.


Creamos un proyecto de Tipo Oracle Service Bus Project
Luego creamos la estructura de directorios interfaces/xsd dentro del proyecto he importamos los archivos obtenidos anteriormente(JCA,WSDL,XSD)

Estructura de directorios dentro del Proyecto
Luego generar Servicio de Negocio basado en archivo JCA

Opción de Menú para generar servicio a partir de JCA

Estructura de Proyecto Resultado

Estructura de directorio corregida( moviendo wsdl)

Paso 4 - Invocar al servicio de Negocio desde el OSB


Para efectos de este explicación nos basaremos en un "Proxy Service" existente el que es expuesto como un WebService que internamente llama a un servicio de negocio para realizar una tarea en base al resultado del servicio de negocio prepara su respuesta, este Proxy Service le agregaremos funcionalidad para que registre en el BAM cada vez que este sea invocado, en la figura se indican los puntos a intervenir.




Intervención en flujo para registrar en BAM:
paso 1, asignación de estructura y datos a variable bamData
paso 2, remplazo de variable body por el contenido de bamData
paso 3, Publish,  esto es un Call de tipo One Way a Servicio de Negocio que preparamos en pasos anteriores del articulo.


Comentarios

  1. He encontrado buenas entradas en tu blog.

    Te animo a seguir compartiendo con todos nosotros tus conocimientos en todo lo relacionado con el mundo SOA.

    La verdad es que para los iniciados en este mundillo este tipo de howtos ayudan una barbaridad.

    Muchas gracias!

    ResponderEliminar
    Respuestas
    1. Gracias Angel, me alegro mucho tu comentario feliz año el 2014 lo comenzaré compartiendo temas relacionados con Cloud Computing donde actualmente me desempeño

      Eliminar
  2. Disculpa si yo no soy desarrollador sino solo conozco la parte de Middleware en weblogic, como puedo crear reportes en el bam sin tener jdeveloper instalado?

    ResponderEliminar
    Respuestas
    1. el BAM de oracle tiene una consola web para realizar "dashboards", este normalmente esta instalado en http://:/OracleBAM/

      Te comparto un link de Oracle donde explican como usarlo

      http://docs.oracle.com/cd/E21764_01/integration.1111/e10230/getting_started.htm#CIHIHEAA

      Eliminar
  3. Trabajo con productos Oracle, Weblogic Server, OSB, OER y SOA Suite y muy interesantes tus post, voy a compartirlos con la gente que recién empieza a modo de inducción y como reforzamiento para todos recién estoy empezando a ver BAM.
    Totalmente recomendado el Blog, sigue así compartiendo conocimiento.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

la difusa linea entre orquestacion y Coreografía en SOA

Ambos términos ocupados en SOA, tienen que ver coordinación de servicios, el primero de ellos y mas fácil de entender es la "Orquestacion" esta se refiere a una coordinación de servicios por un proceso principal semejante a lo que hace un director de orquesta, de esta forma cualquier proceso BPEL(por poner un ejemplo tangible) que coordina a otros servicios como ente coordinador, esta "Orquestando" servicios,que es lo que sucede en la mayoría de los procesos BPEL, por ultimo es necesario decir que la orquestacion esta personificada por el proceso coordinador, si queremos saber la secuencia, mensajeria y lógica de orquestacion debemos ver el proceso coordinador. Como ejemplo veamos el siguiente flujo, expresado en BPMN (Bussines Process Managment Notation), este flujo expresa la orquestacion de servicios para obtener un servicio que realice el cierre de una compra y programe el envió en en un sis...

¿Como en Oracle BPEL hacer una llamada a BD?

Para hacer acciones directas sobre base de datos inserciones utilizar un Adaptador de tipo "Database Adapter" como se muestra en la figura, siempre trabajándolo como un servicio externo (External Reference) como método de desacoplar las acciones sobre la base de datos: al arrastrar este componente sobre el diagrama de composición, este iniciara un asistente como se muestra en la figura: Se indica el nombre del servicio  y Siguiente(Next). Aquí se especifica el nombre JNDI de la conexión que se utilizara y la conexión dentro del IDE en la parte superior, presionando el botón + como se ve en la siguiente figura. luego de esto se selecciona el tipo de acción que se realizara en la base de datos y este asistente generara la interfaz de entrada y salida de acuerdo a esto. En el despliegue un punto importante para que esto funcione es configurar el adaptador y la fuente de dat...