Imprimir esta p谩gina
24 Feb

Implementaci贸n de llamada a Stored Procedure con retorno de Cursor en IBM BPM

En esta entrada se describir谩 c贸mo implementar en IBM BPM una llamada a un Stored Procedure que tiene como valor de retorno un Cursor, de manera que se pueda asignar la respuesta del SP a una variable sin tener que hacer alg煤n tipo de conversi贸n manual.

Introducci贸n

Es una pr谩ctica com煤n acceder a una base de datos externa, la utilizaci贸n de Stored Procedures (SP) es una buena pr谩ctica siempre que procure un mejor aprovechamiento de los recursos del RDBMS.

Para este caso en particular se trabaj贸 con las siguientes herramientas:

  • IBM BPM Standard v8.0.1.2
  • Base de datos ORACLE

Definici贸n del Business Object

El primer paso ser谩 definir un Business Object que represente los resultados que ser谩n retornados por el SP. Se le puede asignar cualquier nombre al objeto, lo importante es que los atributos deben llamarse igual y ser del mismo tipo de dato que las columnas que se retornar谩n como respuesta del SP.

La siguiente imagen muestra las propiedades del objecto de negocio Status que utilizaremos para nuestro ejemplo:

Propiedades del objeto de negocio

Implementaci贸n del servicio integraci贸n

Una vez definido el objeto de negocio, se debe crear el servicio de integraci贸n que invocar谩 al SP, para nuestro ejemplo utilizamos tres actividades:

  • Build SQL, encargado de construir la sentencia SQL de llamada al SP.
  • Build Params, encargado de establecer el valor de los par谩metros utilizados en la llamada al SP.
  • Call SP, responsable de ejecutar la llamada al SP y asignar el resultado en la variable de salida.

Servicio de integracion

La imagen anterior muestra la secuencia de actividades que componen el servicio de integraci贸n, para su funcionamiento el servicio utiliza las siguientes variables:

  • Variable privada sql, de tipo String, almacenar谩 la sentencia SQL definida en la actividad Build SQL.
  • Variable privada sqlParams, ser谩 una lista del tipo SQLParameter y almacenar谩 la lista de par谩metros definidos en la actividad Build Params.
  • Variable de salida results, ser谩 una lista del tipo Status y almacenar谩 el resultado retornado por la actividad Call SP responsable de llamar al SP.

Variables utilizadas por el servicio de integraci贸n

Implementaci贸n de la actividad Build SQL

En la la actividad Build SQL se inicializa la variable privada sql con la sentencia SQL utilizada para realizar la llamada al SP.

tw.local.sql = "CALL pkg.get_all_status_sp(?,?,?,?)";

Implementaci贸n de la actividad Build Params

En la actividad de Build Params se inicializa la variable privada sqlParams y se asigna un tipo de dato, modo (鈥淚N鈥, 鈥淥UT鈥 o 鈥淚N/OUT鈥) y valor a cada par谩metro del SP (En caso de ser OUT, no se le indica valor).

En nuestro de ejemplo necesitamos utilizar 4 par谩metros, nos centraremos en el 煤ltimo, que es la variable correspondiente al Cursor.

tw.local.sqlParams[3] = new tw.object.SQLParameter();
tw.local.sqlParams[3].type = "ORACLE_CURSOR";
tw.local.sqlParams[3].mode = "OUT";

Implementaci贸n de la actividad Build Params

Implementaci贸n de la actividad Call SP

La actividad Call SP debe ser una invocaci贸n al servicio anidado SQL Call Stored Procedure del paquete System Data y se debe indicar el siguiente mapeo de variables:

  • In (Entrada)
    • sql, deber谩 asociarse a la variable tw.local.sql.
    • parameters , deber谩 asociarse a la variable tw.local.sqlParams.
    • returnType , deber谩 especificarse el nombre del objeto de negocio encerrado entre comillas, en nuestro caso "Status".
    • dataSourceName, deber谩 indicarse el nombre JNDI al data source de la base de datos.
  • Out (Salida)
    • results , deber谩 especificarse a la variable tw.local.results.

Mapeo de variables

Completados estos pasos, la llamada al SP retornar谩 un listado de instancias del objeto de negocio creado por nosotros, sin tener que realizar ninguna conversi贸n de la respuesta.

 

Modificado por 煤ltima vez en Viernes, 14 Marzo 2014 22:46
Valora este art铆culo
(2 votos)
Federico Luppi

Federico cuenta con m谩s de 4 a帽os de experiencia en el desarrollo de aplicaciones Web bajo plataformas Java EE y 3 a帽os de experiencia en el liderazgo de equipos de desarrollo. Actualmente se desempe帽a como L铆der de Proyecto en el 谩rea de operaciones de MicroGestion Software.

Sitio Web: www.microgestion.com/index.php/mg-developers/blog/author/991-federicoluppi