Crear el flujo de mensajes principal

Se proporciona el flujo de mensajes principal del ejemplo Conectividad de WebSphere Service Registry and Repository (WSRR), pero si prefiere crear el flujo de mensajes usted mismo, utilice las instrucciones siguientes:

  1. Cree un nuevo flujo de mensajes denominado WSRR_Connectivity.msgflow en el proyecto de Message Broker denominado My WSRR Connectivity Message Flows, que ha creado al crear el flujo de mensajes de servicios web.
    Para obtener instrucciones, consulte Crear un flujo de mensajes en la documentación de WebSphere Message Broker.
  2. En el Editor de flujos de mensajes, añada y renombre los nodos que se listan en la siguiente tabla.
    Para obtener instrucciones, consulte Añadir un nodo en un flujo de mensajes en la documentación de WebSphere Message Broker.
    Cajones de la paleta Tipo de nodo Nombre de nodo
    WebSphere MQ MQInput WSRR_IN
    Transformación Compute SetVersion
    Servicios web EndpointLookup Endpoint Lookup One
    Servicios web SOAPRequest SOAP Request
    Transformación Compute InformFailure
    Transformación Compute InformWSResult
    Transformación Compute InformNoMatch
    WebSphere MQ MQOutput WSRR_OUT
  3. Conecte los nodos tal como se indica en la siguiente tabla.
    Para obtener instrucciones, consulte Conexión a nodos de flujo de mensajes en la documentación de WebSphere Message Broker.
    Para comprobar que ha conectado los nodos correctamente, consulte el diagrama que aparece en Acerca del ejemplo de Conectividad de WebSphere Service Registry and Repository.
    Nombre de nodo Terminal Conectar a este nodo
    WSRR_IN Out SetVersion
    SetVersion Out Endpoint Lookup One
    Endpoint Lookup One Out SOAP Request
    Failure (de anomalías) InformFailure
    NoMatch (de no coincidencias) InformNoMatch
    SOAP Request Out InformWSResult
    Fault (de defectos)WSRR_OUT
    InformFailure Out WSRR_OUT
    InformWSResult Out WSRR_OUT
    InformNoMatch Out WSRR_OUT
  4. Configure las propiedades de nodo tal como se indica en la siguiente tabla. Acepte los valores predeterminados para todas las propiedades, a menos que en la tabla se indique un valor alternativo.
    Para obtener instrucciones, consulte Configurar un nodo de flujo de mensajes en la documentación de WebSphere Message Broker.
    Nombre de nodo Página Propiedad Valor
    WSRR_IN Básicas Nombre de cola WSRR_IN
    Análisis de mensaje de entrada Dominio del mensaje XMLNSC : Para mensajes XML
    SetVersion Básicas Modalidad de cálculo Entorno local y mensaje
    Endpoint Lookup One Básicas Nombre de tipo de puerto DemoCustomer
    Espacio de nombres de tipo de puerto http://demo.sr.eis.ibm.com
    Versión de tipo de puerto 1.0
    SOAP Request Básicas Nombre de archivo WSDL Pulse Examinar y vaya al archivo DemoCustomer_v10.wsdl que se importó anteriormente al proyecto de conjunto de mensajes WSRR Connectivity Message Set.
    Cuando se selecciona, este archivo llena las demás propiedades de la página Básicas.
    Operación de enlace Establezca esta propiedad en updateCustomer.
    Transporte HTTP URL de servicio web Entre un valor cualquiera, por ejemplo: http://dummy.
    Esta propiedad se altera temporalmente en ejecución con el URL DE servicio web específico del documento WSDL que se recupera de WebSphere Service Registry and Repository.
    WSRR_OUT Básicas Nombre de cola WSRR_OUT
  5. Efectúe una doble pulsación en el nodo SetVersion para abrir el Editor ESQL. Copie y pegue los siguientes módulos de código ESQL en el archivo ESQL y luego guarde el archivo.
    Para obtener más información, consulte Desarrollo de ESQL en la documentación de WebSphere Message Broker.
    DECLARE soapenv NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
    
    CREATE COMPUTE MODULE WSRR_Connectivity_SetVersion
      CREATE FUNCTION Main() RETURNS BOOLEAN
        BEGIN
          -- Establecer el LE en las alteraciones temporales especificadas en los datos de entrada
          -- Si el mensaje de entrada no contiene un código Version, el LE no se escribirá
          SET OutputLocalEnvironment.ServiceRegistryLookupProperties.Version = InputRoot.XMLNSC.soapenv:Envelope.soapenv:Body.Request.Version;
    
          -- Almacenar el MQMD a reconstruir después del nodo HTTP Response
          SET Environment.MQMD = InputRoot.MQMD;		
    
          CALL CopyEntireMessage();
          RETURN TRUE;
        END;
    
      CREATE PROCEDURE CopyEntireMessage() BEGIN
        SET OutputRoot = InputRoot;
      END;
    END MODULE;
    
    
    CREATE COMPUTE MODULE WSRR_Connectivity_InformWSResult
      CREATE FUNCTION Main() RETURNS BOOLEAN
      BEGIN
        CALL CopyEntireMessage();
        -- La respuesta de WebService contiene una cabecera HTTP
        -- Elimine la cabecera HTTP y cree una cabecera MQMD para poder propagar el mensaje a un nodo de salida MQ
        SET OutputRoot.HTTPResponseHeader = NULL;
        CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
        -- Recupere el MQMD que se almacenó antes
        SET OutputRoot.MQMD = Environment.MQMD;
    
        RETURN TRUE;
      END;
    
      CREATE PROCEDURE CopyEntireMessage() BEGIN
        SET OutputRoot = InputRoot;
      END;
    
    END MODULE;
    
    
    CREATE COMPUTE MODULE WSRR_Connectivity_InformNoMatch
      CREATE FUNCTION Main() RETURNS BOOLEAN
      BEGIN
        CALL CopyMessageHeaders();
        CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
        SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Version = '1.0';
        SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Encoding = 'UTF-8';
    		
        CREATE LASTCHILD OF OutputRoot.XMLNSC NAME 'LookupResults';
        SET OutputRoot.XMLNSC.LookupResults.WSRR_Request = InputRoot.XMLNSC.WSRR_Request;
        SET OutputRoot.XMLNSC.LookupResults.ServiceRegistry = 'No matching services!';
    
        RETURN TRUE;
      END;
    
      CREATE PROCEDURE CopyMessageHeaders() BEGIN
        DECLARE I INTEGER 1;
        DECLARE J INTEGER;
        SET J = CARDINALITY(InputRoot.*[]);
        WHILE I < J DO
          SET OutputRoot.*[I] = InputRoot.*[I];
          SET I = I + 1;
        END WHILE;
      END;
    
    END MODULE;
    
    
    CREATE COMPUTE MODULE WSRR_Connectivity_InformFailure
      CREATE FUNCTION Main() RETURNS BOOLEAN
      BEGIN
        CALL CopyMessageHeaders();
        CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
        SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Version = '1.0';
        SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Encoding = 'UTF-8';
    		
        CREATE LASTCHILD OF OutputRoot.XMLNSC NAME 'LookupResults';
        SET OutputRoot.XMLNSC.LookupResults.WSRR_Request = InputRoot.XMLNSC.WSRR_Request;
        SET OutputRoot.XMLNSC.LookupResults.ServiceRegistry = 'Error al recuperar el servicio de WSRR!';
        SET OutputRoot.XMLNSC.LookupResults.Exception = InputExceptionList;		
    		
        RETURN TRUE;
      END;
    
      CREATE PROCEDURE CopyMessageHeaders() BEGIN
        DECLARE I INTEGER 1;
        DECLARE J INTEGER;
        SET J = CARDINALITY(InputRoot.*[]);
        WHILE I < J DO
          SET OutputRoot.*[I] = InputRoot.*[I];
          SET I = I + 1;
        END WHILE;
      END;
    
    END MODULE;
    
  6. Guarde el archivo ESQL.
  7. Asegúrese de que la propiedad Módulo ESQL del nodo SetVersion indique el módulo WSRR_Connectivity_SetVersion.
  8. Repita el paso anterior para los nodos siguientes, estableciendo la propiedad de módulo ESQL en el módulo correspondiente en el archivo ESQL:
  9. Guarde el flujo de mensajes.

Ahora puede crear las colas y ejecutar el flujo, consulte Crear las colas.

Volver a Crear el ejemplo Conectividad de WebSphere Service Registry and Repository