使用 复制消息。NETCompute 节点

使用 复制现有消息。NETCompute 节点。

关于此任务

变换节点,例如 。NETCompute 节点可以修改通过消息流从一个节点传递到下一个节点的逻辑树结构。 此树结构(或消息组合件)包含四棵树,分别表示消息、环境、局部环境和异常列表。 从 的输入终端发送数据。NETCompute 节点到输出终端,与该节点关联的类必须包含用于传播输入消息组合件或创建输出消息组合件的 Evaluate 方法。 要将消息从输入终端复制到输出终端,请传播整个输入消息组合件。 在使用 C# 创建 FilterNode 类时提供的模板代码用于传播消息。 如您在以下代码中所见,inputAssembly 传播到 Propagate 方法:

        public override void Evaluate(NBMessageAssembly inputAssembly)
        {
            NBOutputTerminal outTerminal = OutputTerminal("Out");

            NBMessage inputMessage = inputAssembly.Message;
            NBElement root = inputMessage.RootElement;

            #region UserCode
            // Add user code in this region to filter the message
            #endregion UserCode

            // Change the following if not propagating message to the 'Out' terminal
            outTerminal.Propagate(inputAssembly);
        }

如果您计划复制该消息,然后在 中更新该消息。NETCompute 节点,最好使用 CreateNode 模板。 此模板创建输出组合件。 通过向 UserCode 区域中仅添加一行代码来将输入组合件复制到此输出组合件:

        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.AddLastChild(inputRoot.LastChild);
                #endregion UserCode

                // Change the following if not propagating message to the 'Out' terminal
                outTerminal.Propagate(outAssembly);
            }
        }

有关 IBM® App Connect Enterprise 中支持的 .NET 类和方法的信息,请参阅 .NET API 文档。