WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

.NETCompute ノードを使用したエレメントの反復

メッセージ・ツリー内のエレメントに対して順次反復処理を行うには、Where メソッドを使用します。

NBElement の子に反復処理を行うには、foreach() ステートメントの結果として生成される配列を使用できます。 foreach() ループを使用することで、開発者は各 NBElement を順に処理することができます。 以下の例は、これを使用して入力メッセージに対する同様の形状出力メッセージを作成する方法を示しています。 次のような単純な XML 入力メッセージがあるとします。
<MessageEnvelope>
	<Element>1</Element>
	<Element>2</Element>
	<Element>3</Element>
</MessageEnvelope>
.NETCompute ノードの以下の C# コードがエレメントに対して反復処理を行います。
        public override void Evaluate(NBMessageAssembly inputAssembly)
        {
            NBOutputTerminal outTerminal = OutputTerminal("out");

            NBMessage inputMessage = inputAssembly.Message;

            // Create a new empty message, ensuring it is disposed after use
            using (NBMessage outputMessage = new NBMessage())
            {
                NBMessageAssembly outAssembly = new NBMessageAssembly(inputAssembly, outputMessage);
                NBElement inputRoot = inputMessage.RootElement;
                NBElement outputRoot = outputMessage.RootElement;

                // Optionally copy message headers, remove if not needed
                CopyMessageHeaders(inputRoot, outputRoot);

                #region UserCode
                // Add user code in this region to create a new output message
                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("After adding 1 to input value we get " + (currentvalue + 1).ToString());
                }
                #endregion UserCode

                // Change the following if not propagating message to the 'Out' terminal
                outTerminal.Propagate(outAssembly);
            }
        }
出力は次のような XML メッセージになります。
<OutputMessageEnvelope>
	<OutElement>After adding 1 to input value we get value 2</OutElement>
	<OutElement>After adding 1 to input value we get value 3</OutElement>
	<OutElement>After adding 1 to input value we get value 4</OutElement>
</OutputMessageEnvelope>
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

        
        最終更新:
        
        最終更新: 2015-02-28 17:48:48


タスク・トピックタスク・トピック | バージョン 8.0.0.5 | bc34221_