Exponer una aplicación de negocio de SAP como WebService en menos de 15 minutos

Cómo explotar los asistentes de Message Broker para agilizar implementaciones de servicios empresariales

El siguiente es un tutorial que explica la manera en la que WebSphere Message Broker (Broker) se puede integrar a SAP para exponer la funcionalidad de alguna BAPI que existe en él. En este ejemplo, se expone esta BAPI como servicio Web y se realiza una imagen.

Juan Montalvo Godina, Client Technical Professional, IBM

Juan Montalvo GodinaJuan Montalvo es Client Technical Professionl y trabaja en temas de BPM con los productos de IBM, además de ver temas como WebSphere MQ, Message Broker, DataPower y WSRR. Experiencia en desarrollo con Java y C#. Cuenta con certificaciones en DataPower, Broker, Lombardi, SOA y WAS.



17-12-2012

Introducción

El siguiente es un tutorial que explica la manera en la que WebSphere Message Broker (Broker) se puede integrar a SAP para exponer la funcionalidad de alguna BAPI que existe en él. En este ejemplo, se expone esta BAPI como servicio Web y se realiza una implementación muy sencilla y rápida de este escenario. La meta es realizar esta integración en 15 minutos.

Preparación del ambiente

Para este tutorial se utilizaron las siguientes versiones de productos:

  • WebSphere Message Broker v8.0.0.1
  • WebSphere Message Broker Toolkit v8.0.0.1
  • WebSphere MQ v7.5
  • SAP JCO v3.0
  • SOAP UI v4.0.1

Antes de empezar el desarrollo, es necesario contar con las librerías de SAP para la conexión del adaptador. Estas librerías se pueden descargar desde la siguiente página de SAP. Una vez descargadas, es necesario indicarle a Broker en donde se encuentran estas librerías, para que las pueda utilizar en tiempo de ejecución. Esto se hace abriendo una consola de comandos de Broker e ingresando los siguientes dos comandos:

                mqsichangeproperties NEWBRK -c EISProviders -o SAP  -n 
jarsURL -v C:\SAP_LIB mqsichangeproperties NEWBRK -c EISProviders -o SAP -n
nativeLibs -v C:\SAP_LIB

Sustituyendo el nombre del Broker y la ruta de ubicación por aquellos que sean correctos para su ambiente. Una vez hecho este cambio en configuración es necesario reiniciar el Broker para que tome los cambios y podamos iniciar con nuestra implementación.


Creación de la conexión hacia SAP por medio del Adaptador de Broker

1.- Abrimos WebSphere Message Broker Toolkit (WMBT) y seleccionamos la opción de Start by creating a library. En esta biblioteca, el adaptador de SAP generará los objetos necesarios para su funcionamiento.

2.- Asignamos un nombre a la nueva biblioteca y finalizamos el asistente.

3.- Una vez generada la biblioteca, vamos a la sección de Application Development y generamos una nueva conexión de adaptador de la siguiente manera:

4.- Seleccionamos el tipo de adaptador a generar

5.- Especificamos el nombre del proyecto del conector

6.- Es necesario asociar los siguientes archivos para el funcionamiento del adaptador. Estos archivos los debe proveer el basis de SAP.

7.- Definimos el estilo del adaptador, en este caso será de salida ya que Broker enviará una consulta que SAP responderá.

8.- El siguiente paso es definir los parámetros de configuración del agente para el descubrimiento de objetos de SAP. El usuario debe tener permisos de ejecución de la BAPI y es necesario seleccionar BAPI como tipo de interfaz con SAP.

9.-Una vez realizada la conexión a SAP, el agente descubre todas las BAPIs a las que tiene acceso, si la BAPI aparece en la lista inicial, es posible simplemente seleccionarla y añadirla como objeto a importar. Si no aparece, es necesario realizar una búsqueda, para esto creamos un filtro de la siguiente manera:

10.- En la siguiente pantalla, especificamos el nombre de la BAPI a buscar. Es posible utilizar comodines como *.

11.- Si la BAPI es encontrada se muestra como resultado en los objetos descubiertos, y la añadimos como objeto a importar.

12.- Terminamos con la siguiente vista:

13.- Especificamos que utilice los mismos nombres y capitalización en los objetos de negocio que SAP, para estandarizar.

14.- Definimos que la llamada hacia la BAPI se realice de manera síncrona y especificamos el namespace que utilizará el objeto de negocio.

15.- Definimos los parámetros de conexión hacia SAP en tiempo de ejecución y continuamos con el asistente

16.- Especificamos el nombre del adaptador a utilizar y finalizamos el asistente.

17.- En la vista de proyecto se deben haber creado los esquemas de datos necesarios y el adaptador de SAP que va a ser utilizado en el flujo de mensaje en pasos posteriores. El resultado debería ser similar al siguiente:


Creación del servicio que expondrá a Broker

18.- Una vez generados estos elementos, podemos crear un servicio que sirva como interfaz para el adaptador de SAP. Para esto, damos clic en la sección Start by creating a service

19.- Se lanza un nuevo asistente para la creación del servicio. Especificamos el nombre del mismo y si se basará en una nueva interfaz o en algún WSDL ya existente. En este caso, crearemos uno desde cero.

20.- Una vez hecho esto, se muestra una sección en donde podemos definir la cantidad y nombre de las operaciones que se definirán en el servicio, así como los elementos de entrada y de salida de cada una de las operaciones. Para este caso recibiremos dos variables de entrada y el servicio responderá con un número de folio desde SAP.

21.- Guardamos los cambios. Ahora es necesario crear un nuevo flujo para la implementación del servicio. Para esto expandimos el proyecto del servicio y en la sección de flujos creamos uno nuevo.

22.- Definimos el nombre y finalizamos el asistente.

23.- Una vez hecho esto, podemos empezar a trabajar con el flujo. Para esto necesitamos arrastrar y soltar el WSDL creado en el punto 19 hacia el espacio de trabajo del flujo de mensaje.

24.- Se lanza un asistente en donde definiremos la acción que queremos ejecutar. En este caso queremos exponer el flujo como un WebService con la operación ejecutaBAPI.

25.- Definimos que utilizaremos nodos SOAP para la implementación y finalizamos el asistente.

26.- Lo que el asistente hace es generar tres nodos para la recepción y respuesta de peticiones SOAP hacia este servicio. En los siguientes pasos añadiremos la lógica intermedia del servicio.

26ª.- Para poder probar este flujo de mediación, es necesario crear un cliente de WebService, por lo que necesitamos que exponga el WSDL, para esto nos posicionamos en el nodo SOAP Input y habilitamos el soporte a WSDL en la sección de HTTP Transport.

27.- Ubicamos el adaptador con extensión .outadapter en la librería que generamos al inicio y arrastramos el componente hasta el centro del espacio de trabajo

28.- Se mostrará un error en pantalla. Este error esta relacionado con la referencia inexistente entre el servicio y la librería creada.

29.- Para resolver este error, debemos ir al proyecto del servicio y dar clic derecho en el. Seleccionar la opción Manage Library References y seleccionar la librería adecuada desde la pantalla recién abierta.

30.- Repetimos el punto 27, y esta vez el toolkit añadirá un nodo conteniendo la lógica necesaria para realizar la comunicación con SAP. Nuestro flujo se verá similar al siguiente diagrama.

31.- Ahora, tenemos ya la estructura del flujo, sin embargo, la estructura de datos que recibe el servicio no es igual a la que espera SAP; al igual que la respuesta que SAP arroja no es igual a la que el servicio regresa como respuesta. Por esto debemos crear un par de mapeos para relacionar las diferentes estructuras de datos. Estos mapeos se encuentran en la paleta, bajo la sección de Transformation. Arrastramos y soltamos ambos nodos, además de unirlos al resto de componentes para terminar con la siguiente secuencia.

32.- Damos doble clic sobre el nodo de mapeo WStoSAP e indicamos en el asistente el nombre del mapa así como su contenedor. En este caso dejamos los valores por defecto y continuamos con el asistente.

33.- Seleccionamos la fuente y el destino de las estructuras de datos y continuamos con los asistentes.

34.- Solo nos aseguramos que el dominio de salida quede como XMLNSC y finalizamos el asistente.

35.- Ahora, para este caso voy a mapear el número del empleado que esta pidiendo un anticipo, así como el monto del anticipo, al objeto que el adaptador de SAP enviará a la BAPI. De igual manera existe un tercer dato que es fijo, y al cual en este caso se le crea un Assign para definir el valor exacto de ese campo. El mapeo en este caso se ve de la siguiente manera.


Instalación y prueba de nuestro servicio

36.- Hacemos lo mismo con el segundo mapeo para toma la respuesta de SAP hacia la respuesta del servicio, y una vez hecho esto podemos empaquetar la solución para su despliegue en Broker. Necesitamos crear un broker archive para esto.

37.- Definimos el nombre del archivo y finalizamos el asistente.

38.- En la sección central seleccionamos el servicio que creamos como parte de las aplicaciones a incluir en el broker archive.

39.- En la pestaña de Manage podemos construir o reconstruir el archive para considerar cambios en el flujo.

40.- El siguiente paso es instalar el flujo de Broker. Para esto arrastramos el archivo .bar en la sección de BARs del árbol de proyectos y lo soltamos en el grupo de ejecución de nuestro broker. Una vez finalizada la instalación, se deberá ver de la siguiente manera

41.- Una vez instalado, generamos un cliente de prueba del WebService, en este caso con soapUI, y enviamos una petición hacia el servicio para ver la respuesta. Para este ejemplo, la respuesta de SAP es un consecutivo asociado a una respuesta exitosa.

Recursos

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=WebSphere, SOA y servicios web
ArticleID=852485
ArticleTitle=Exponer una aplicación de negocio de SAP como WebService en menos de 15 minutos
publish-date=12172012