WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Iterar sobre elementos utilizando un nodo .NETCompute

Utilice el método Where para proporcionar una iteración secuencial sobre elementos en el árbol de mensajes.

Puede utilizar la matriz resultante en una sentencia foreach() para iterar sobre los hijos de un NBElement. El bucle foreach() permite a un desarrollador actuar en cada NBElement de uno en uno. El ejemplo siguiente muestra cómo se puede utilizar esto para crear un mensaje de salida de forma similar a la del mensaje de entrada. Considere un mensaje de entrada XML simple:
<MessageEnvelope>
	<Element>1</Element>
	<Element>2</Element>
	<Element>3</Element>
</MessageEnvelope>
El siguiente código C# en un nodo .NETCompute itera sobre los elementos:
        public override void Evaluate(NBMessageAssembly inputAssembly)
        {
            NBOutputTerminal outTerminal = OutputTerminal("out");

            NBMessage inputMessage = inputAssembly.Message;

            // Crear un nuevo mensaje vacío, asegurándose de eliminarlo después de su uso
            using (NBMessage outputMessage = new NBMessage())
            {
                NBMessageAssembly outAssembly = new NBMessageAssembly(inputAssembly, outputMessage);
                NBElement inputRoot = inputMessage.RootElement;
                NBElement outputRoot = outputMessage.RootElement;

                // Opcionalmente copiar cabeceras de mensajes, eliminar si no se necesita
                CopyMessageHeaders(inputRoot, outputRoot);

                #region UserCode
                // Añadir código de usuario en esta región para filtrar el mensaje
                outputRoot.CreateLastChildUsingNewParser("XMLNSC");
                outputRoot["XMLNSC"].CreateLastChild("OutputMessageEnvelope");
                string notargetnamespace = "";
                NBElement env = inputRoot["XMLNSC"]["MessageEnvelope"];
                var elementlist = env.Where(t => t.Name == "Element");                
                foreach (NBElement element in elementlist)
                {
                    int currentvalue = (Int32)element;                   
                    NBElement outelement = outputRoot["XMLNSC"]["OutputMessageEnvelope"].CreateLastChild(notargetnamespace, "OutElement");
                    outelement.SetValue("Después de añadir 1 al valor de entrada se obtiene " + (currentvalue + 1).ToString());
                }
                #endregion UserCode

                // Cambiar lo siguiente si no se va a propagar el mensaje al terminal 'Out'
                outTerminal.Propagate(outAssembly);
            }
        }
La salida es un mensaje XML:
<OutputMessageEnvelope>
	<OutElement>Después de añadir 1 al valor de entrada se obtiene el valor 2</OutElement>
	<OutElement>Después de añadir 1 al valor de entrada se obtiene el valor 3</OutElement>
	<OutElement>Después de añadir 1 al valor de entrada se obtiene el valor 4</OutElement>
</OutputMessageEnvelope>
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 17:01:03


Tema de tareaTema de tarea | Versión 8.0.0.5 | bc34221_