Crear el ejemplo Sistema principal de servicio web

Por si no desea realizar los siguientes 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:

  1. Cree un conjunto de mensajes. Éste servirá tanto para el formato del mensaje de servicio web (XML) como para el formato heredado (CWF).
    1. Inicie el Kit de herramientas de Message Brokers.
    2. Asegúrese de que está en la perspectiva Desarrollo de aplicación de intermediario.
    3. Pulse en Archivo> Nuevo > Proyecto de conjunto de mensajes.
    4. Establezca el Nombre de proyecto en WSHOST_MSP1 y después pulse en Siguiente.
    5. Establezca el Nombre de conjunto de mensajes en WSHOST_MS1.
    6. Seleccione Usar espacios de nombres y después pulse en Siguiente.
    7. Seleccione Nombre de formato físico personalizado y Nombre formato físico XML y pulse Finalizar.
    8. Cierre messageset.mset, guardando el contenido.
  2. Importe un archivo de cabecera C. Éste se correlaciona con el mensaje de entrada y el de salida de la aplicación heredada.
    1. Pulse en Archivo> Importar > Sistema de archivos > Siguiente.
    2. Examine para seleccionar legacyservice.h del proyecto WSHOST_LEGACY.
    3. Establezca A la carpeta en WSHOST_MSP1 y pulse en Finalizar
    4. Cree un archivo de definición de mensajes de intermediario a partir del archivo de cabecera C:
      1. 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.
      2. El botón de selección Archivo de cabecera C ha de haberse preseleccionado. De no ser así, selecciónelo y pulse Siguiente
      3. Dentro del proyecto WSHOST_MSP1, legacyservice.h ha de haberse seleccionado. De no ser así, selecciónelo y pulse en Siguiente.
      4. En el panel Conjuntos de mensajes, amplíe WSHOST_MSP1 y seleccione WSHOST_MS1.
      5. Seleccione Utilice el espacio de nombres de destino, escriba http://www.brokersamplewshost.ibm.com como URL, y después pulse en Siguiente.
      6. En el panel Estructuras de orígenes, pulse en tagIA81CONF, pulse el botón > y después pulse Seleccionar todo> Finalizar.
    5. Cierre legacyservice.mxsd guardando su contenido
  3. Cree una definición de mensaje SOAP.
    1. 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.
    2. Pulse el botón de selección en Mensaje suministrado por IBM y después pulse en Siguiente.
    3. En el panel Mensajes suministrados por IBM, seleccione el mensaje ibm\soap\envelope\soapenv11.xsd y pulse en Siguiente.
    4. Amplíe WSHOST_MSP1, seleccione WSHOST_MS1 y después pulse Siguiente.
    5. 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
    6. Cierre soapenv11.mxsd, guardando el contenido
    7. 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.

  4. 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.

    1. Abra legacyservice.mxsd.
    2. En la vista Esquema, pulse el botón derecho del ratón en Mensajes y pulse en Añadir mensaje
    3. Cambie el nombre del mensaje por IA81CONFIN y pulse Intro.
    4. En el Editor de definición de mensajes, pulse en IA81CONFIN y después en el separador Propiedades.
    5. En la página de propiedades, pulse en Ir a declaración.
    6. En la lista Tipo, pulse en (Más...), seleccione tagIA81CONF y pulse en Aceptar.
    7. En la vista Esquema, pulse el botón derecho del ratón en Mensajes y pulse en Añadir mensaje.
    8. Cambie el nombre del mensaje por IA81CONFOUT y pulse Intro.
    9. En el editor principal, pulse en Ir a declaración.
    10. En la lista Tipo, pulse en (Más...), seleccione tagIA81CONF y pulse en Aceptar.
    11. Cierre legacyservice.mxsd guardando su contenido
    12. Pulse en Archivo> Nuevo > Archivo de Categoría de mensaje.
    13. Establezca Clase de categoría en wsdl.
    14. Establezca Utilización de categoría en wsdl:requestresponse y después pulse Siguiente.
    15. Seleccione el conjunto de mensajes WSHOST_MS1 dentro del proyecto de conjunto de mensajes WSHOST_MSP1.
    16. En el campo Nombre de archivo, escriba cat1 y pulse en Siguiente.
    17. Seleccione IA81CONFIN y IA81CONFOUT, y después pulse en Finalizar.
    18. Seleccione IA81CONFIN en el panel Jerarquía de propiedades.
    19. Establezca Nombre de rol en IA81CONFIN y Tipo de rol en wsdl:input.
    20. Seleccione IA81CONFOUT en el panel Jerarquía de propiedades.
    21. Establezca Nombre de rol en IA81CONFOUT y Tipo de rol en wsdl:output.
    22. Cierre cat1.category guardando su contenido
  5. Genere WSDL.
    1. Pulse en Archivo > Nuevo > Definición WSDL > Siguiente.
    2. Seleccione el conjunto de mensajes WSHOST_MS1 dentro del proyecto de conjunto de mensajes WSHOST_MSP1 y después pulse en Siguiente.
    3. Seleccione WSHOST_MSP1 y después pulse en Crear nueva carpeta.
    4. Escriba wsdl como nombre de la carpeta y después pulse en Aceptar.
    5. Compruebe que el botón de selección Individual esté seleccionado y después pulse en Siguiente.
    6. En el panel "Especificar detalles de WSDL", asegúrese de que Estilo se ha establecido en documento y después pulse en Siguiente.
    7. En el panel "Seleccionar categorías", pulse en Seleccionar todo> Siguiente.
    8. En el panel Enlaces, pulse en SOAP/HTTP > Siguiente.
    9. En el panel "Propiedades de servicio", establezca Dirección de puerto en http://localhost:7080/samplebrokerwshost y pulse en Finalizar.
  6. 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.
    1. Pulse en Archivo> Nuevo > Proyecto de flujo de mensajes.
    2. Establezca el Nombre de proyecto en WSHOST_MFP1 y después pulse en Siguiente.
    3. En el panel "Proyectos a los que se hace referencia", seleccione WSHOST_MSP1 y pulse en Finalizar.
    4. 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.
    5. Establezca Esquema en WSHOST_MFP1.
    6. Establezca Nombre en WSHOST_WSHOST1 y después pulse en Finalizar.
    7. 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
    8. 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)
  7. 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:
  8. Personalice el nodo HTTPInput:
    1. Pulse el botón derecho del ratón en el nodo HTTPInput y pulse en Propiedades.
    2. Seleccione Básico y establezca Selector de URL en /samplebrokerwshost.
    3. 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.
    4. Pulse Aceptar.
  9. Personalice el nodo Compute:
    1. Pulse el botón derecho del ratón en el nodo Compute y pulse en Abrir ESQL.
    2. 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 existente
      	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 = ' ';
      	SET OutputRoot.MRM.Confirm = ' ';
      	SET OutputRoot.MRM.filler1 = ' ';
      
      	RETURN TRUE;
  10. Personalice el nodo MQOutput (MQOutput en existente):
    1. Pulse el botón derecho del ratón en el nodo MQOutput y pulse en Propiedades.
    2. 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.
    3. Establezca Nombre de cola en WSHOST1_OUT1.
    4. Seleccione Avanzadas y establezca Modalidad de transacción en Yes.
    5. Establezca el Contexto del mensaje en Valor por omisión.
    6. Seleccione Petición y seleccione el recuadro de selección para Petición.
    7. Establezca Cola de respuestas en WSHOST1_IN1 y pulse en Aceptar.
  11. Personalice el nodo Compute1:
  12. Personalice el nodo MQOutput1 (MQOutput estado HTTP almacén):
    1. Pulse el botón derecho del ratón en el nodo MQOutput1 y pulse en Propiedades.
    2. Seleccione Básico y establezca Nombre de cola en WSHOST1_STATE1.
    3. Seleccione Avanzadas y establezca Modalidad de transacción en Yes.
    4. Establezca el Contexto del mensaje en Valor por omisión.
    5. Pulse Aceptar.
  13. Personalice el nodo MQInput (MQInput de existente):
    1. Pulse el botón derecho del ratón en el nodo MQInput y pulse en Propiedades.
    2. Seleccione Básico y establezca Nombre de cola en WSHOST1_IN1.
    3. 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.
    4. Pulse Aceptar.
  14. Personalice el nodo MQGet (MQGet estado HTTP almacenado):
    1. Pulse el botón derecho del ratón en el nodo MQGet y pulse en Propiedades.
    2. Seleccione Básico y establezca Nombre de cola en WSHOST1_STATE1.
    3. 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.
    4. 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.
    5. Seleccione Petición y seleccione el recuadro de selección Obtener por ID de correlación.
    6. Seleccione Resultado y establezca Ubicación de datos de salida en OutputLocalEnvironment.
    7. Pulse Aceptar.
  15. Personalice el nodo Compute2:
    1. Pulse el botón derecho del ratón en el nodo Compute2 y pulse en Propiedades.
    2. Seleccione Básico y establezca Modalidad de cálculo en Entorno local y mensaje.
    3. Pulse en Aceptar (para poder pasar contexto HTTP al nodo HTTPReply)
    4. Pulse el botón derecho del ratón en el nodo y seleccione Abrir ESQL.
    5. 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;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFOUT.filler1 = NULL;
      
      -- Establezca el identificador de respuesta http
      	SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier =
       CAST(InputLocalEnvironment.MRM.tns:Header.HTTP.RequestIdentifier AS BLOB);
      	
      	RETURN TRUE;
  16. Cierre WSHOST_WSHOST1.esql, guardando el contenido.
  17. Cierre WSHOST_WSHOST1.msgflow, guardando el contenido.
  18. 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

Icono de la página principal   Volver a la Página de presentación de ejemplos