Crear el ejemplo Servicio web
El ejemplo Servicio Web tiene dos partes:
- El ejemplo Host de servicio web
- El ejemplo Cliente de servicio web
Crear el ejemplo Sistema principal de servicio web
Por si no desea realizar estos pasos, con este ejemplo se facilitan un proyecto de flujo de mensajes y un proyecto de
conjunto de mensajes completados.
Para crear el ejemplo de Sistema principal de servicio web:
- Cree un conjunto de mensajes. Éste servirá tanto para el formato del mensaje de servicio web (XML) como para el formato
heredado (CWF).
- Inicie el Kit de herramientas de Message Brokers.
- Asegúrese de que está en la perspectiva Desarrollo de aplicación de intermediario.
- Pulse en Archivo> Nuevo > Proyecto de conjunto de mensajes.
- Establezca el Nombre de proyecto en WSHOST_MSP1 y después
pulse en
Siguiente.
- Establezca el Nombre de conjunto de mensajes en WSHOST_MS1.
- Seleccione Usar espacios de nombres y después pulse en
Siguiente.
- Seleccione Nombre de formato físico personalizado y
Nombre formato físico XML y pulse Finalizar.
- Cierre messageset.mset, guardando el contenido.
- Importe un archivo de cabecera C. Éste se correlaciona con el mensaje de entrada y el de salida de la aplicación
heredada.
- Pulse en Archivo> Importar > Sistema de archivos > Siguiente.
- Examine para seleccionar legacyservice.h del proyecto WSHOST_LEGACY.
- Establezca A la carpeta en WSHOST_MSP1 y pulse en
Finalizar
- Cree un archivo de definición de mensajes de intermediario a partir del archivo de cabecera C:
- En el Navegador de recursos, pulse el botón derecho del ratón en
legacyservice.h y después pulse en Nuevo> Archivo de
definición de mensajes.
- El botón de selección Archivo de cabecera C ha de haberse
preseleccionado. De no ser así, selecciónelo y pulse Siguiente
- Dentro del proyecto WSHOST_MSP1, legacyservice.h ha de haberse
seleccionado.
De no ser así, selecciónelo y pulse en Siguiente.
- En el panel Conjuntos de mensajes, amplíe WSHOST_MSP1 y
seleccione
WSHOST_MS1.
- Seleccione Utilice el espacio de nombres de destino,
escriba
http://www.brokersamplewshost.ibm.com como URL, y después pulse en
Siguiente.
- En el panel Estructuras de orígenes, pulse en
tagIA81CONF, pulse el botón
> y después pulse Seleccionar todo> Finalizar.
- Cierre legacyservice.mxsd guardando su contenido
- Cree una definición de mensaje SOAP.
- En el Navegador de recursos, pulse el botón derecho del ratón en
WSHOST_MS1 y después pulse en Nuevo> Archivo de definición de
mensajes.
- Pulse el botón de selección en Mensaje suministrado por IBM y
después pulse en
Siguiente.
- En el panel Mensajes suministrados por IBM, seleccione el mensaje
ibm\soap\envelope\soapenv11.xsd y pulse en Siguiente.
- Amplíe WSHOST_MSP1, seleccione
WSHOST_MS1 y después pulse Siguiente.
- En Seleccionar los elementos globales a partir de los cuales crear mensajes, asegúrese de que no
hay ningún elemento seleccionado y después pulse en Finalizar
- Cierre soapenv11.mxsd, guardando el contenido
- Observe que Envelope se crea automáticamente como un mensaje.
En la vista Problemas
del Kit de herramientas de Message Brokers aparecen varios avisos.
Se deben principalmente a que hay definido un CWF para una definición de
mensaje SOAP y pueden ignorarse.
- Cree una categoría para los mensajes (un prerrequisito para la generación de WSDL).
En WSDL, todos los nombres de operaciones han de ser únicos dentro de un tipo de puerto que los incluya.
Por lo tanto, los mensajes de petición y respuesta definidos en una categoría de mensajes han de ser distintos.
Para que esto quede más claro, se definirán dos nuevos mensajes para el conjunto de mensajes, uno para
la
entrada de servicios Web y otro para la salida de servicios Web. Han de crearse en el archivo mxsd rellenado a partir del archivo de cabecera C.
- Abra legacyservice.mxsd.
- En la vista Esquema, pulse el botón derecho del ratón en
Elementos y atributos y pulse
Añadir elemento global.
- Cambie el nombre del elemento por
IA81CONFIN y pulse Intro.
- Seleccione la celda Tipo para el elemento IA81CONFIN.
Seleccione (Más...) en la lista.
- Seleccione tagIA81CONF y pulse
Aceptar.
- En la vista Esquema, pulse el botón derecho del ratón en
Mensajes y pulse en Añadir
mensaje desde elemento global
- Seleccione tns:IA81CONFIN en la lista
desplegable y pulse Intro.
- En la vista Esquema, pulse el botón derecho del ratón en
Elementos y atributos y pulse
Añadir elemento global.
- Cambie el nombre del elemento por
IA81CONFOUT y pulse Intro.
- Seleccione la celda Tipo para el elemento IA81CONFOUT.
Seleccione (Más...) en la lista.
- Seleccione tagIA81CONF y pulse
Aceptar.
- En la vista Esquema, pulse el botón derecho del ratón en
Mensajes y pulse en Añadir
mensaje desde elemento global
- Seleccione tns:IA81CONFOUT en la lista
desplegable y pulse Intro.
- Cierre legacyservice.mxsd guardando su contenido
- Pulse en Archivo> Nuevo > Archivo de Categoría de mensaje.
- Establezca Clase de categoría en wsdl.
- Establezca Utilización de categoría en
wsdl:requestresponse y después pulse Siguiente.
- Seleccione el conjunto de mensajes WSHOST_MS1 dentro del proyecto
de conjunto de mensajes
WSHOST_MSP1.
- En el campo Nombre de archivo, escriba
cat1
y pulse en Siguiente.
- En el panel superior, seleccione
IA81CONFIN y IA81CONFOUT
(pulse y mantenga la tecla CTRL para realizar selecciones múltiples).
- En el panel inferior, establezca el valor en la celda
Clase para IA81CONFOUT en
salida (pulse en la celda para que aparezca un menú en
el que puede seleccionar el valor).
- En el panel inferior, seleccione
IA81CONFIN y, a continuación, pulse
Finalizar.
Se crea el nuevo archivo de categoría de mensajes.
- Genere WSDL.
- Pulse en Archivo > Nuevo > Definición WSDL >
Siguiente.
- Seleccione el conjunto de mensajes WSHOST_MS1 dentro del proyecto de
conjunto de mensajes WSHOST_MSP1 y después pulse en Siguiente.
- Seleccione WSHOST_MSP1 y después pulse en
Crear nueva carpeta.
- Escriba wsdl como nombre de la carpeta y después pulse en
Aceptar.
- Compruebe que el botón de selección Individual esté seleccionado
y después pulse en Siguiente.
- En el panel "Especificar detalles de WSDL", asegúrese de que
Estilo se ha establecido en documento y después pulse en
Siguiente.
- En el panel "Seleccionar categorías", pulse en Seleccionar todo>
Siguiente.
- En el panel Enlaces, pulse en SOAP/HTTP > Siguiente.
- En el panel "Propiedades de servicio", establezca Dirección de
puerto
en http://localhost:7080/samplebrokerwshost y pulse en
Finalizar.
- Cree un flujo de mensajes. El flujo toma una petición HTTP, invoca la aplicación heredada
utilizando MQ, y direcciona información de
respuesta de la aplicación heredada al peticionario de HTTP.
- Pulse en Archivo> Nuevo > Proyecto de flujo de mensajes.
- Establezca el Nombre de proyecto en
WSHOST_MFP1 y después pulse en Siguiente.
- En el panel "Proyectos a los que se hace referencia", seleccione
WSHOST_MSP1
y pulse en Finalizar.
- En el Navegador de recursos, pulse el botón derecho del ratón en
WSHOST_MFP1 y después pulse en Nuevo> Flujo
de mensajes.
- Establezca Esquema en WSHOST_MFP1.
- Establezca Nombre en WSHOST_WSHOST1 y
después pulse en
Finalizar.
- Visualice la paleta (si está oculta) y a continuación coloque los siguientes nodos en el lienzo del
flujo de mensajes:
- 1 nodo HTTPInput
- 3 nodos Compute
- 2 nodos MQOutput
- 1 nodo MQGet
- 1 nodo MQInput
- 1 nodo HTTPReply
- Pulse en Conexión en la paleta y a continuación conecte los
siguientes nodos y terminales:
- HTTPInput (salida) - Compute (entrada)
- Compute (salida) - MQOutput (entrada)
- MQOutput (salida) - Compute1 (entrada)
- Compute1 (salida) - MQOutput1 (entrada)
- MQInput (salida) - MQGet (entrada)
- MQGet (salida) - Compute2 (entrada)
- Compute2 (salida) - HTTPReply (entrada)
- Si cambia el nombre de algunos de los nodos esta operación puede resultar más fácil de entender. Para
cambiar el nombre de un nodo, pulse el botón derecho del ratón en el nodo y
después pulse en Redenominar.
Se sugieren estos nombres:
- MQOutput -> MQOutput para heredada
- MQOutput1 -> MQOutput estado HTTP almacén
- MQInput -> MQInput heredado
- MQGet -> MQGet estado HTTP almacenado
- Personalice el nodo HTTPInput:
- Pulse el botón derecho del ratón en el nodo HTTPInput y pulse en
Propiedades.
- Seleccione Básico y establezca Selector de
URL en
/samplebrokerwshost.
- Seleccione Valor por omisión:
- Para Dominio de mensajes, seleccione
MRM en la lista desplegable.
- Para Conjunto de mensajes, seleccione
WSHOST_MS1 en la lista desplegable.
- Para Tipo de mensaje, escriba Envelope.
- Para Formato del mensaje, seleccione
XML1 en la lista desplegable.
- Pulse Aceptar.
- Personalice el nodo Compute:
- Pulse el botón derecho del ratón en el nodo Compute y pulse en
Abrir ESQL.
- Codifique el siguiente ESQL entre sentencias BEGIN y END para este módulo. Use el asistente de
contenido (Control + espacio) para seleccionar
palabras clave. Deberían generarse sentencias DECLARE NAMESPACE parecidas a las comentadas en las
dos primeras líneas cuando
se usa el asistente de contenido por primera vez para seleccionar el elemento Cuerpo de SOAP y
cualquier elemento IA81CONFIN. Si
está copiando y pegando este código, asegúrese de que las sentencias DECLARE NAMESPACE no están
comentadas.
--DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
--DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
CALL CopyMessageHeaders();
-- La salida (Output) es MQ por lo tanto, elimine cabeceras HTTP
SET OutputRoot.HTTPInputHeader = null;
-- La salida (Output) ya existe, por lo tanto establezca el formato físico y el nombre del mensaje
SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
SET OutputRoot.Properties.MessageFormat = 'CWF1';
-- Añada un MQMD
CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
-- Cree un mensaje para enviarlo a la aplicación heredada
SET OutputRoot.MRM.MessageId
= InputBody.tns:Body.ns:IA81CONFIN.MessageId;
SET OutputRoot.MRM.OrderNumber
= InputBody.tns:Body.ns:IA81CONFIN.OrderNumber;
SET OutputRoot.MRM.ItemReference
= InputBody.tns:Body.ns:IA81CONFIN.ItemReference;
SET OutputRoot.MRM.ItemQuantity
= InputBody.tns:Body.ns:IA81CONFIN.ItemQuantity;
SET OutputRoot.MRM.CustomerNumber
= InputBody.tns:Body.ns:IA81CONFIN.CustomerNumber;
SET OutputRoot.MRM.DeliveryRef
= InputBody.tns:Body.ns:IA81CONFIN.DeliveryRef;
SET OutputRoot.MRM.Confirm
= InputBody.tns:Body.ns:IA81CONFIN.Confirm;
SET OutputRoot.MRM.filler1
= InputBody.tns:Body.ns:IA81CONFIN.filler1;
RETURN TRUE;
- Personalice el nodo MQOutput (MQOutput para heredada):
- Pulse el botón derecho del ratón en el nodo MQOutput y pulse en
Propiedades.
- Si piensa ejecutar la aplicación heredada en un gestor de colas WebSphere MQ para el intermediario,
seleccione Básico y establezca el Nombre
del gestor de colas en el nombre del gestor de colas de la aplicación heredada.
De lo contrario, déjelo en blanco.
- Establezca Nombre de cola en WSHOST1_OUT1.
- Seleccione Avanzadas y establezca
Modalidad de transacción en Yes.
- Establezca el Contexto del mensaje en
Valor por omisión.
- Seleccione Petición y seleccione el recuadro de selección para
Petición.
- Establezca Cola de respuestas en
WSHOST1_IN1 y pulse en
Aceptar.
- Personalice el nodo Compute1:
- Pulse el botón derecho del ratón en el nodo Compute1 y pulse en Abrir
ESQL.
- Codifique el siguiente ESQL entre sentencias BEGIN y END para este módulo. Use el asistente de
contenido (Control + espacio) para seleccionar
palabras clave. Debería generarse una sentencia DECLARE NAMESPACE parecida a la comentada en la
primera línea cuando
se usa el asistente de contenido por primera vez para seleccionar el elemento Cuerpo de SOAP.
--DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
--DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
-- El mensaje de salida creado en este nodo almacena el contexto HTTP.
-- Cualquier formato puede ser adecuado, pero se está utilizando un
-- campo autodefinido en una cabecera SOAP
-- Por lo tanto, el formato físico es formato físico es XML
-- Cree las propiedades del conjunto de mensajes de destino
SET OutputRoot.Properties.MessageSet = InputRoot.Properties.MessageSet;
SET OutputRoot.Properties.MessageType = 'Envelope';
SET OutputRoot.Properties.MessageFormat = 'XML1';
-- Cree el MQMD y establezca el IDCorrel
-- El IDCorrel ha de establecerse en el IDMsj del mensaje enviado
-- a la aplicación heredada. Cuando se recibe la respuesta de la
-- aplicación heredada, se emitirá MQGet desde la cola del almacén
-- con un IDCorrel igual al IDCorrel de la respuesta heredada
SET OutputRoot.MQMD.CorrelId
= InputLocalEnvironment.WrittenDestination.MQ.DestinationData.msgId;
-- Cree un mensaje para almacenar contexto HTTP
SET OutputRoot.MRM.tns:Header.HTTP.RequestIdentifier
= InputLocalEnvironment.Destination.HTTP.RequestIdentifier;
RETURN TRUE;
- Personalice el nodo MQOutput1 (MQOutput estado HTTP almacén):
- Pulse el botón derecho del ratón en el nodo MQOutput1 y pulse en
Propiedades.
- Seleccione Básico y establezca
Nombre de cola en WSHOST1_STATE1.
- Seleccione Avanzadas y establezca
Modalidad de transacción en Yes.
- Establezca el Contexto del mensaje en
Valor por omisión.
- Pulse Aceptar.
- Personalice el nodo MQInput (MQInput de heredada):
- Pulse el botón derecho del ratón en el nodo MQInput y pulse en
Propiedades.
- Seleccione Básico y establezca
Nombre de cola en WSHOST1_IN1.
- Seleccione Valor por omisión:
- Para Dominio de mensajes, seleccione
MRM en la lista desplegable.
- Para Conjunto de mensajes, seleccione
WSHOST_MS1 en la lista desplegable.
- Para Tipo de mensaje, escriba
msg_tagIA81CONF.
- Para Formato del mensaje, seleccione
CWF1 en la lista desplegable.
- Pulse Aceptar.
- Personalice el nodo MQGet (MQGet estado HTTP almacenado):
- Pulse el botón derecho del ratón en el nodo MQGet y pulse en
Propiedades.
- Seleccione Básico y establezca
Nombre de cola en WSHOST1_STATE1.
- Seleccione Valor por omisión:
- Para Dominio de mensajes, seleccione
MRM en la lista desplegable.
- Para Conjunto de mensajes, seleccione
WSHOST_MS1 en la lista desplegable.
- Para Tipo de mensaje, escriba Envelope.
- Para Formato del mensaje, seleccione
XML1 en la lista desplegable.
- Seleccione Avanzadas:
- Para Modalidad de generación, seleccione
Mensaje y entorno local en la lista desplegable.
- Para Copiar mensaje, seleccione Copiar
mensaje completo en la lista desplegable.
- Seleccione Petición y seleccione el recuadro de selección
Obtener por ID de correlación.
- Seleccione Resultado y establezca
Ubicación de datos de salida en OutputLocalEnvironment.
- Pulse Aceptar.
- Personalice el nodo Compute2:
- Pulse el botón derecho del ratón en el nodo Compute2 y pulse en
Propiedades.
- Seleccione Básico y establezca
Modalidad de cálculo
en Entorno local y mensaje.
- Pulse en Aceptar (para poder pasar contexto HTTP al nodo
HTTPReply)
- Pulse el botón derecho del ratón en el nodo y seleccione Abrir
ESQL.
- Codifique el siguiente ESQL entre las sentencias BEGIN y END para este módulo:
--DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
--DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
-- La entrada es CWF, la salida es SOAP/XML
SET OutputRoot.Properties.MessageSet = InputRoot.Properties.MessageSet;
SET OutputRoot.Properties.MessageType = 'Envelope';
SET OutputRoot.Properties.MessageFormat = 'XML1';
SET OutputRoot.MRM.tns:Body.ns:IA81CONFOUT = InputRoot.MRM;
-- Establezca el identificador de respuesta http
SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier =
CAST(InputLocalEnvironment.MRM.tns:Header.HTTP.RequestIdentifier AS BLOB);
RETURN TRUE;
- Cierre WSHOST_WSHOST1.esql, guardando el contenido.
- Cierre WSHOST_WSHOST1.msgflow, guardando el contenido.
- Si piensa ejecutar la aplicación heredada en un gestor de colas de WebSphere MQ para el intermediario, deberá
definir la cola de entrada de la aplicación heredada para el gestor de colas de la aplicación heredada.
Utilice el programa de utilidad de WebSphere adecuado para entrar la siguiente definición de cola:
DEFINE QLOCAL(WSHOST1_OUT1) REPLACE
Crear el ejemplo Cliente de servicio web
Por si no desea realizar estos pasos, con este ejemplo se facilitan un
proyecto de flujo de mensajes y un proyecto de conjunto de mensajes completados.
Para crear el ejemplo de Cliente de servicio web:
- Cree un conjunto de mensajes. Éste servirá tanto para el formato del mensaje de servicio web (XML) como para el formato
heredado (CWF).
- Inicie el Kit de herramientas de Message Brokers.
- Asegúrese de que está en la perspectiva Desarrollo de aplicación de intermediario.
- Pulse en Archivo> Nuevo > Proyecto de conjunto de mensajes.
- Establezca el Nombre de proyecto en
WSCLIENT_MSP1 y después pulse en
Siguiente.
- Establezca el Nombre de conjunto de
mensajes en WSCLIENT_MS1.
- Seleccione Usar espacios de nombres y después pulse en
Siguiente.
- Seleccione Nombre de formato físico personalizado y
Nombre formato físico XML y pulse Finalizar.
- Cierre messageset.mset, guardando el contenido.
- Importe un archivo de cabecera C. Esto proporciona las
definiciones de mensajes de entrada y salida de las aplicaciones heredadas.
- Copie el archivo legacyservice.h
del proyecto WSHOST_LEGACY y péguelo en el proyecto
WSCLIENT_MSP1.
- Cree un archivo de definición de mensajes de intermediario a partir del archivo de cabecera C:
- En el Navegador de recursos, pulse el botón derecho del ratón en
legacyservice.h y después pulse en Nuevo> Archivo de
definición de mensajes.
- El botón de selección Archivo de cabecera C ha de haberse
preseleccionado. De no ser así, selecciónelo y pulse Siguiente
- Dentro del proyecto WSCLIENT_MSP1, debería estar preseleccionado
legacyservice.h.
De no ser así, selecciónelo y pulse en Siguiente.
- En el panel Conjuntos de mensajes, amplíe
WSCLIENT_MSP1, seleccione
WSCLIENT_MS1 y, a continuación, pulse
Siguiente.
- En el panel Estructuras de orígenes, pulse
tagIA81BUY,
pulse el botón >, pulse
tagIA81CONF, pulse el botón
> y después pulse Seleccionar
todo> Finalizar.
- Cierre legacyservice.mxsd guardando su contenido
- Importe el WSDL para el servicio web.
- Pulse en Archivo> Importar > Sistema de archivos > Siguiente.
- Examine para seleccionar el directorio
wsdl del proyecto
WSHOST_MSP1.
- Establezca A la carpeta en
WSCLIENT_MSP1 y pulse en
Finalizar
- Cree un archivo de definición de mensajes de intermediario a partir
del WSDL:
- En el Navegador de recursos, pulse el botón derecho del ratón
en WSHOST_MS1Service.wsdl, dentro del directorio
wsdl del proyecto
WSCLIENT_MSP1 y, a continuación, pulse en
Nuevo > Archivo de definición de mensajes.
- El botón de selección del Archivo
WSDL debería estar preseleccionado. De no ser así, selecciónelo y pulse Siguiente
- Dentro del proyecto WSCLIENT_MSP1, debería estar
preseleccionado WSHOST_MS1Service.wsdl.
De no ser así, selecciónelo y pulse en Siguiente.
- En el panel Conjuntos de mensajes, amplíe
WSCLIENT_MSP1 y seleccione
WSCLIENT_MS1.
- En el panel de espacio de nombres, establezca el prefijo del
espacio de nombres http:www.brokersamplewshost.ibm.com
en wshost y, a continuación, pulse
en Siguiente.
- Aparecerá una lista de los archivos que se generarán. Pulse
Finalizar.
- Cree un flujo de mensajes. El flujo toma como entrada un mensaje de
WebSphere MQ, crea una petición de servicio web y envía la petición utilizando HTTP. Se
recibe la respuesta HTTP y se envía un mensaje de respuesta de WebSphere MQ.
- Pulse en Archivo> Nuevo > Proyecto de flujo de mensajes.
- Establezca el Nombre de proyecto en
WSCLIENT_MFP1 y después pulse en
Siguiente.
- En el panel "Proyectos a los que se hace referencia",
seleccione WSCLIENT_MSP1 y, a continuación, pulse
Finalizar.
- En el Navegador de recursos, pulse el botón derecho del ratón en
WSCLIENT_MFP1 y después pulse en
Nuevo > Flujo de mensajes.
- Establezca Esquema en
WSCLIENT_MFP1.
- Establezca Nombre en
WSCLIENT_WSCLIENT1 y después pulse en
Finalizar.
- Visualice la paleta (si está oculta) y a continuación coloque los siguientes nodos en el lienzo del
flujo de mensajes:
- 1 nodo MQInput
- 2 nodos Compute
- 1 nodo MQReply
- 1 nodo HTTPRequest
- Pulse en Conexión en la paleta y a continuación conecte los
siguientes nodos y terminales:
- MQInput (salida) - Compute (entrada)
- Compute (salida) - HTTPRequest (entrada)
- HTTPRequest (salida) - Compute1 (entrada)
- Compute1 (salida) - MQreply (entrada)
- Personalice el nodo MQInput (MQInput de heredada):
- Pulse el botón derecho del ratón en el nodo MQInput y pulse en
Propiedades.
- Seleccione Básico y establezca
Nombre de cola en
WSCLIENT1_IN1.
- Seleccione Valor por omisión:
- Para Dominio de mensajes, seleccione
MRM en la lista desplegable.
- Para Conjunto de mensajes,
seleccione WSCLIENT_MS1 en la lista desplegable.
- Para Tipo de mensajes,
seleccione msg_tagIA81BUY en la lista desplegable.
- Para Formato del mensaje, seleccione
CWF1 en la lista desplegable.
- Pulse Aceptar.
- Personalice el nodo Compute:
- Pulse el botón derecho del ratón en el nodo Compute y pulse en
Abrir ESQL.
- Codifique el siguiente ESQL entre sentencias BEGIN y END para este módulo. Use el asistente de
contenido (Control + espacio) para seleccionar
palabras clave. Deberían generarse sentencias DECLARE NAMESPACE parecidas a las comentadas en las
dos primeras líneas cuando
se usa el asistente de contenido por primera vez para seleccionar el elemento Cuerpo de SOAP y
cualquier elemento IA81CONFIN. Si
está copiando y pegando este código, asegúrese de que las sentencias DECLARE NAMESPACE no están
comentadas.
--DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
--DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
CALL CopyMessageHeaders();
-- Guarde el MQMD; enviar a HTTP posteriormente en el flujo lo destruye
SET Environment.MQMD = InputRoot.MQMD;
-- La entrada es CWF, la salida es SOAP, establezca el formato de transmisión y nombre del mensaje
SET OutputRoot.Properties.MessageType = 'Envelope';
SET OutputRoot.Properties.MessageFormat = 'XML1';
-- Cree un mensaje para enviarlo al servicio web
SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.MessageId = 'IA81CONF';
SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.OrderNumber = InputBody.OrderNumber;
SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.ItemReference = InputBody.ItemReference;
SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.ItemQuantity = InputBody.ItemQuantity;
SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.CustomerNumber = InputBody.CustomerNumber;
SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.DeliveryRef = ' ';
SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.Confirm = ' ';
SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.filler1 = ' ';
RETURN TRUE;
- Personalice el nodo HTTPRequest:
- Pulse el botón derecho del ratón en el nodo HTTPRequest y pulse en
Propiedades.
- Seleccione Básicas y establezca el
URL de servicio web en
http://localhost:7080/samplebrokerwshost. Tenga en cuenta
que si el intermediario que aloja el servicio
web está en una máquina distinta de este intermediario, o utiliza un número de
puerto no predeterminado, debe modificar este URL según corresponda.
- Seleccione Valor por omisión:
- Para Dominio de mensajes, seleccione
MRM en la lista desplegable.
- Para Conjunto de mensajes,
seleccione WSCLIENT_MS1 en la lista desplegable.
- Para Tipo de mensaje,
seleccione Envelope en la lista desplegable.
- Para Formato del mensaje, seleccione
XML1 en la lista desplegable.
- Pulse Aceptar.
- Personalice el nodo Compute1:
- Pulse el botón derecho del ratón en el nodo Compute1 y pulse en Abrir
ESQL.
- Codifique el siguiente ESQL entre sentencias BEGIN y END para este módulo. Use el asistente de
contenido (Control + espacio) para seleccionar
palabras clave. Debería generarse una sentencia DECLARE NAMESPACE parecida a la comentada en la
primera línea cuando
se usa el asistente de contenido por primera vez para seleccionar el elemento Cuerpo de SOAP.
--DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
--DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
CALL CopyMessageHeaders();
-- La salida es MQ, por tanto, elimine las cabeceras HTTP
SET OutputRoot.HTTPResponseHeader = NULL;
-- La salida es CWF, por tanto, establezca las propiedades de los mensajes de destino
SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
SET OutputRoot.Properties.MessageFormat = 'CWF1';
-- Cree un MQMD y restáurelo a los valores guardados
CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
SET OutputRoot.MQMD = Environment.MQMD;
-- Cree el mensaje a enviar
SET OutputRoot.MRM.MessageId - InputBody.tns:Body.ns:IA81CONFOUT.MessageId;
SET OutputRoot.MRM.OrderNumber = InputBody.tns:Body.ns:IA81CONFOUT.OrderNumber;
SET OutputRoot.MRM.ItemReference = InputBody.tns:Body.ns:IA81CONFOUT.ItemReference;
SET OutputRoot.MRM.ItemQuantity = InputBody.tns:Body.ns:IA81CONFOUT.ItemQuantity;
SET OutputRoot.MRM.CustomerNumber = InputBody.tns:Body.ns:IA81CONFOUT.CustomerNumber;
SET OutputRoot.MRM.DeliveryRef = InputBody.tns:Body.ns:IA81CONFOUT.DeliveryRef;
SET OutputRoot.MRM.Confirm = InputBody.tns:Body.ns:IA81CONFOUT.Confirm;
SET OutputRoot.MRM.filler1 = InputBody.tns:Body.ns:IA81CONFOUT.filler1;
RETURN TRUE;
- Personalice el nodo MQReply:
- No es necesario realizar ninguna personalización
- Cierre WSCLIENT_WSCLIENT1.esql, guardando el contenido.
- Cierre WSCLIENT_WSCLIENT1.msgflow, guardando el contenido.
Volver a la Página de presentación de ejemplos