Compartir vía


Optimización del rendimiento de las orquestaciones

En este tema se describen los procedimientos recomendados para usar orquestaciones en soluciones de BizTalk Server. Esto incluye recomendaciones para:

  • Reducción de la latencia de las soluciones de BizTalk Server que usan orquestaciones

    • Eliminación de orquestaciones solo para patrones de mensajería

    • Uso de envíos insertados desde orquestaciones

    • Minimizar los puntos de persistencia de orquestación

  • Anidamiento de orquestaciones

  • Patrones de diseño de orquestación

  • Bloques de control de excepciones de orquestación

Recomendaciones para optimizar las orquestaciones para escenarios de baja latencia

Las técnicas siguientes se pueden usar para reducir la latencia de las soluciones de BizTalk Server que usan orquestaciones.

Eliminación de orquestaciones solo para patrones de mensajería

Cuando sea posible, minimice el uso de orquestaciones para aumentar el rendimiento general y reducir la latencia de los procesos empresariales. Si no es necesario ejecutar transacciones de larga duración y no es necesario invocar varios sistemas para cada solicitud, considere la posibilidad de eliminar orquestaciones y mover lógica de negocios a puertos de recepción y envío para reducir la cantidad total de recorridos de ida y vuelta a BizTalkMsgBoxDb y reducir la latencia debido al acceso a la base de datos. En este caso, implemente canalizaciones personalizadas y reutilice clases auxiliares que se invocaron previamente desde orquestaciones. Use orquestaciones solo cuando sea estrictamente necesario para implementar patrones de diseño como dispersión y recopilación o convoyes. Para obtener más información sobre los patrones de diseño de orquestación, vea el tema Implementar patrones de diseño en orquestaciones (https://go.microsoft.com/fwlink/?LinkId=140042) en la documentación de BizTalk Server.

Uso de envíos insertados desde orquestaciones para dar cabida a escenarios de baja latencia

Siempre que sea posible, minimice el uso de orquestaciones y favore los patrones de solo mensajería para aumentar el rendimiento general y reducir la latencia de los procesos empresariales. Si no es necesario realizar transacciones de larga duración y no es necesario que la lógica de negocios invoque varios sistemas, considere la posibilidad de mover la lógica de negocios para recibir y enviar puertos y eliminar el uso de orquestaciones. Este enfoque se puede implementar con canalizaciones personalizadas y que reutilizan las clases auxiliares que se invocaron previamente desde orquestaciones. Para lograr un mejor rendimiento en escenarios de baja latencia, adopte uno de los enfoques siguientes:

  • Elimine las orquestaciones innecesarias y adopte patrones de solo mensajería para reducir la cantidad total de recorridos de ida y vuelta a la base de datos de Cuadro de mensajes de BizTalk. Este enfoque admite una latencia baja porque los envíos en línea omiten el motor de mensajería de BizTalk y la sobrecarga asociada. La funcionalidad de envío en línea de orquestación se proporciona con BizTalk Server 2006 y versiones posteriores.

  • Dentro de las orquestaciones, elimine los puertos lógicos enlazados a los puertos físicos y use envíos en línea en su lugar. Por ejemplo, se podría usar un envío en línea para crear una instancia de una clase de proxy WCF para invocar un servicio web de bajada o un componente ADO.NET para acceder a una base de datos SQL Server. En el diagrama siguiente, se realiza un envío en línea cuando la orquestación crea una instancia de un componente empresarial, que usa internamente un objeto proxy WCF para invocar directamente un servicio web de bajada:

    Representación de la orquestación insertada de BizTalk Send

Nota

Aunque el uso de envíos insertados desde orquestaciones reducirá significativamente la latencia, hay limitaciones en este enfoque. Dado que los envíos en línea omiten el motor de mensajería de BizTalk, la siguiente funcionalidad proporcionada con el motor de mensajería no está disponible:

  • Canalizaciones transaccionales.
    • Canalizaciones recuperables
    • Canalizaciones que llaman a la API del interceptor de BAM
    • compatibilidad con adaptadores de BizTalk Server
    • Lotes
    • Reintentos
    • Inicialización del conjunto de correlación
    • Configuración declarativa
    • Transportes secundarios
    • Seguimiento
    • Uso declarativo de BAM

Para obtener más información sobre los tipos de canalizaciones que no se pueden ejecutar desde una orquestación, consulte la sección "Restricciones" del tema How to Use Expressions to Execute Pipelines (https://go.microsoft.com/fwlink/?LinkId=158008) en la documentación de BizTalk Server 2010.

Optimizar la latencia de orquestación reduciendo el número de puntos de persistencia, si es posible.

Un ámbito de orquestación solo debe marcarse como "transaccional de ejecución prolongada" si desea usar tiempos de espera de compensación o ámbito. Un ámbito transaccional de larga duración provoca un punto de persistencia adicional al final del ámbito, por lo que deben evitarse cuando no es necesario usar la compensación o los tiempos de espera del ámbito. Un ámbito atómico provoca un punto de persistencia al final del ámbito, pero también garantiza que no se produzca ningún punto de persistencia dentro del ámbito atómico. Este efecto secundario de ninguna persistencia dentro del ámbito a veces se puede usar para su ventaja en los puntos de persistencia por lotes (al realizar varios envíos, por ejemplo). Sin embargo, en general, se recomienda evitar ámbitos atómicos si es posible. El motor de orquestación guarda en el almacenamiento persistente todo el estado de una instancia de orquestación en ejecución en varios puntos, de modo que la instancia se pueda restaurar posteriormente en memoria y llevar a cabo la finalización. El número de puntos de persistencia de una orquestación es uno de los factores clave que influyen en la latencia de los mensajes que fluyen a través de orquestaciones. Cada vez que el motor alcanza un punto de persistencia, el estado interno de una orquestación en ejecución se serializa y se guarda en el Cuadro de mensajes y esta operación conlleva un costo de latencia. La serialización del estado interno incluye todos los mensajes y variables creados y aún no publicados en la orquestación. Cuanto mayor sean los mensajes y variables y mayor será el número de estos, más tiempo tardará en conservar el estado interno de una orquestación. Un número excesivo de puntos de persistencia puede provocar una degradación significativa del rendimiento. Por este motivo, se recomienda eliminar los puntos de persistencia innecesarios de las orquestaciones al reducir el número de ámbitos transaccionales y Enviar formas. Este enfoque permite reducir la contención en el Cuadro de mensajes debido a la deshidratación y rehidratación de orquestación, aumento de la escalabilidad general y reducción de la latencia de orquestación. Otra recomendación es mantener siempre el estado interno de una orquestación lo más pequeño posible. Esta técnica puede reducir significativamente el tiempo empleado por la serialización, conservación y restauración del estado interno de una orquestación en caso de punto de persistencia. Una manera de lograrlo es crear variables y mensajes lo más tarde posible y liberarlos lo antes posible; por ejemplo, introduce ámbitos no transaccionales dentro de las orquestaciones y declara variables y mensajes dentro de estos ámbitos internos en lugar de declararlos en el nivel superior. Para obtener más información sobre cómo minimizar los puntos de persistencia de orquestación, consulte los temas siguientes en la documentación de BizTalk Server 2010:

Directrices para usar propiedades promocionadas para acceder a etiquetas de mensaje o atributos desde una orquestación

Si necesita promover propiedades, promueva solo las propiedades que se usan para el enrutamiento de mensajes, los filtros y la correlación de mensajes. La promoción de cada propiedad requiere que el componente de desensamblador (XML, plano, personalizado) reconozca el tipo de documento y recupere datos del mensaje mediante la expresión XPath de la anotación relativa contenida en el XSD que define el tipo de documento. Además, cada promoción de propiedades provoca una llamada independiente del bts_InsertProperty procedimiento almacenado cuando el Agente de mensajes publica el mensaje en la base de datos messageBox. Si una orquestación necesita tener acceso a un elemento o atributo determinado contenido en un documento XML, use una de las técnicas siguientes:

  • Reduzca el número de propiedades escritas y promocionadas y elimine las que no son estrictamente necesarias.

  • Elimine los campos distintivos innecesarios. Los campos distintivos son propiedades de contexto escritas y pueden ocupar fácilmente un espacio significativo, ya que su nombre es igual a la expresión XPath que se usa para recuperar datos. La propiedad distinguida se define como anotaciones en el XSD que define el tipo de documento. El componente de desensamblador usa el mismo enfoque adoptado para las propiedades promocionadas y usa la expresión XPath que define un campo distintivo para encontrarlo en el documento entrante. A continuación, el componente de desensamblador escribe una propiedad en el contexto donde:

    • Nombre: expresión XPath definida en la anotación.

    • Valor: valor del elemento identificado por la expresión XPath dentro de un documento entrante.

      Las expresiones XPath pueden ser muy largas, especialmente cuando el elemento en cuestión es muy profundo en el esquema del documento. Por lo tanto, cuanto más distintivos sean los campos, mayor será el tamaño del contexto. Esto a su vez afecta negativamente al rendimiento general.

  • Use la función integrada XPath proporcionada por el entorno de ejecución de orquestación.

  • Si los mensajes son bastante pequeños (algunos kilobytes) y con formato XML, puede des serializar el mensaje en una instancia de clase .NET y trabajar con campos y propiedades públicos. Si el mensaje necesita una elaboración compleja (código personalizado, directivas de motor de reglas de negocio, etc.) que accede a los datos mediante las propiedades expuestas por una instancia de una clase .NET es mucho más rápida mediante expresiones XPath. Cuando se ha completado la lógica de negocios invocada por la orquestación, el objeto de entidad se puede serializar de nuevo en un mensaje de BizTalk. Puede crear clases de .NET a partir de un esquema XML mediante una de las siguientes herramientas: herramienta XSD (.NET Framework 2.0) o SVCUTIL (.NET Framework 3.0).

  • Habilite un componente auxiliar desde una orquestación. Esta técnica tiene una ventaja sobre el uso de campos distintivos. De hecho, una orquestación puede leer la expresión XPath de un almacén de configuración (archivo de configuración, almacén de configuración de SSO, base de datos personalizada, etc.), por lo que, cuando tenga que cambiar la expresión XPath, no tiene que cambiar ni volver a implementar un esquema, como debe hacer para las propiedades promocionadas y los campos distintivos. En el ejemplo de código siguiente se proporciona un ejemplo de un componente auxiliar. El componente usa la clase XPathReader proporcionada por el tiempo de ejecución de BizTalk. Esto permite que el código lea la secuencia de documentos hasta que se encuentre la expresión XPath.

#region Copyright
//===
//Microsoft Windows Server AppFabric Customer Advisory Team (CAT)
//
// This sample is supplemental to the technical guidance published on the community
// blog.
//
// Author: Paolo Salvatori.
//===
// Copyright © 2010 Microsoft Corporation. All rights reserved.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
// EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. YOU BEAR THE RISK OF USING IT.
//===
#endregion
#region Using Directives
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Linq;
using System.Text;
using System.Globalization;
using Microsoft.XLANGs.BaseTypes;
using Microsoft.BizTalk.Streaming;
using Microsoft.BizTalk.XPath;
#endregion
namespace Microsoft.AppFabric.CAT.Samples.DuplexMEP.Helpers
{
public class XPathHelper
{
#region Private Constants
private const string MessageCannotBeNull = "[XPathReader] The message cannot be null.";
#endregion
#region Public Static Methods
public static string GetValue(XLANGMessage message, int partIndex, string xpath)
{
try
{
if (message == null)
{
throw new ApplicationException(MessageCannotBeNull);
}
using (Stream stream = message[partIndex].RetrieveAs(typeof(Stream)) as Stream)
{
XmlTextReader xmlTextReader = new XmlTextReader(stream);
XPathCollection xPathCollection = new XPathCollection();
XPathReader xPathReader = new XPathReader(xmlTextReader, xPathCollection);
xPathCollection.Add(xpath);
while (xPathReader.Read())
{
if (xPathReader.HasAttributes)
{
for (int i = 0; i < xPathReader.AttributeCount; i++)
{
xPathReader.MoveToAttribute(i);
if (xPathReader.Match(xPathCollection[0]))
{
return xPathReader.GetAttribute(i);
}
}
}
if (xPathReader.Match(xPathCollection[0]))
{
return xPathReader.ReadString();
}
}
}
}
finally
{
message.Dispose();
}
return string.Empty;
}
#endregion
}
}

Minimizar la complejidad de la orquestación para mejorar el rendimiento

La complejidad de las orquestaciones tiene un impacto significativo en el rendimiento. A medida que aumenta la complejidad de la orquestación, el rendimiento general disminuye. Las orquestaciones se pueden usar en una variedad casi infinita de escenarios, y cada escenario puede implicar orquestaciones de complejidad variable. Evite orquestaciones complejas cuando sea posible en favor de un enfoque modular. En otras palabras, divida la lógica de negocios en varias orquestaciones reutilizables.

Si necesita implementar una orquestación compleja, defina mensajes y variables en ámbitos internos siempre que sea posible en lugar de en el nivel raíz. Esta técnica mantiene una superficie más pequeña en memoria para cada orquestación porque las variables y los mensajes se eliminan cuando el flujo sale del ámbito donde se definieron las variables y los mensajes. Este enfoque es especialmente beneficioso cuando las orquestaciones se guardan en el Cuadro de mensajes en los puntos de persistencia.

Usar la forma Orquestación de llamadas frente a la forma Iniciar orquestación para mejorar el rendimiento

Evite la forma Iniciar orquestación y use la forma Orquestación de llamadas para ejecutar una orquestación anidada. De hecho, la forma Orquestación de llamadas se puede usar para llamar de forma sincrónica a una orquestación a la que se hace referencia en otro proyecto. Este enfoque permite reutilizar patrones comunes de flujo de trabajo de orquestación en proyectos de BizTalk. Cuando se invoca otra orquestación anidada de forma sincrónica con la forma Orquestación de llamadas , la orquestación envolvente espera a que finalice la orquestación anidada antes de continuar. La orquestación anidada se ejecuta en el mismo subproceso que ejecuta la orquestación que realiza la llamada.

La forma Start Orchestration es similar a la forma Orquestación de llamadas , pero en este caso se llama a la orquestación anidada de forma asincrónica: el flujo de control de la orquestación invocada continúa más allá de la invocación, sin esperar a que la orquestación invocada finalice su trabajo. Para implementar esta desacoplamiento entre el autor de la llamada y las orquestaciones llamadas, la orquestación de inicio se implementa a través de la publicación de un mensaje en el cuadro de mensajes de BizTalk. A continuación, este mensaje lo consume una instancia de host de BizTalk en proceso que ejecuta la orquestación anidada. Cuando sea posible, use orquestación de llamadas, especialmente si la orquestación de llamadas necesita esperar un resultado de la orquestación anidada para continuar el procesamiento. Para obtener más información sobre el uso de la forma Orquestación de llamadas, consulte los temas siguientes en la documentación de BizTalk Server 2010:

Uso de XmlReader con XLANGMessage frente al uso de XmlReader con XmlDocument para mejorar el rendimiento de la orquestación

Para mejorar el rendimiento de orquestación de los métodos de .NET a los que se llama desde una orquestación, use XmlReader con XLANGMessage, no XmlDocument. En el ejemplo de código siguiente se muestra esta funcionalidad.

// As a general rule, use XmlReader with XLANGMessage, not XmlDocument.
// This is illustrated in the parameter passed into the following code.
// The XLANG/s compiler doesn't allow a return value of XmlReader
// so documents must be initially constructed as XmlDocument()
public static XmlDocument FromMsg(XLANGMessage old)
{
    //get at the data
    XmlDocument ret = new XmlDocument();

    try{
        XmlReader reader = (XmlReader)old[0].RetrieveAs(typeof(XmlReader));
        //construct new message from old
        //read property
        object msgid = old.GetPropertyValue(typeof(BTS.MessageID));
    }
    finally {
        // Call Dispose on the XLANGMessage object
        // because the message doesn't belong to the
        // .NET runtime - it belongs to the Messagebox database
        old.Dispose();
    }
    return ret;
}

Otro método sería crear una clase .NET basada en el esquema. Esto toma menos memoria que cargar el documento en un objeto XmlDocument , así como proporcionar acceso sencillo a los elementos de esquema para los desarrolladores de .NET. Para generar una clase basada en un esquema de BizTalk, puede usar la herramienta xsd.exe proporcionada con Visual Studio. Por ejemplo, al ejecutar xsd.exe <schema.xsd /classes en> un esquema simple que contenga campos denominados ItemA, ItemB, ItemC, generará la siguiente clase.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.1433
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System.Xml.Serialization;

//
// This source code was auto-generated by xsd, Version=2.0.50727.42.
//

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://Schemas.MySchema")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://Schemas.MySchema", IsNullable=false)]
public partial class MySchemaRoot {

    private string itemAField;

    private string itemBField;

    private string itemCField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string ItemA {
        get {
            return this.itemAField;
        }
        set {
            this.itemAField = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string ItemB {
        get {
            return this.itemBField;
        }
        set {
            this.itemBField = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string ItemC {
        get {
            return this.itemCField;
        }
        set {
            this.itemCField = value;
        }
    }
}

A continuación, se puede hacer referencia a esta clase en el ensamblado de .NET para tener acceso a los elementos del mensaje y el objeto devuelto se puede asignar directamente a un mensaje. A continuación se muestra un ejemplo de uso de la clase generada anteriormente.

public static Root SetValues(Microsoft.XLANGs.BaseTypes.XLANGMessage msg)
{
   try
   {
   MySchemaRoot rootObj=(MySchemaRoot)msg[0].RetrieveAs(typeof(MySchemaRoot);
   rootObj.ItemA="value a";
   rootObj.ItemB="value b";
   rootObj.ItemC="value c";
   }
    finally {
        msg.Dispose();
            }

   return rootObj;
}

Esta técnica permite usar un enfoque orientado a objetos al procesar mensajes. Esta técnica se debe usar principalmente con mensajes relativamente pequeños. Esto se debe a que, aunque esta técnica usa considerablemente menos memoria que al cargar el mensaje en un objeto XmlDocument , todo el mensaje se sigue cargando en la memoria. Al procesar mensajes más grandes, use la clase XmlReader para leer mensajes y la clase XmlWriter para escribir mensajes. Cuando se usa XmlReader y XmlWriter, el mensaje se encuentra en un objeto VirtualStream . Si el tamaño del mensaje supera el valor especificado para el umbral de mensaje grande (bytes) que se expone en la página de configuración De propiedades del grupo de BizTalk, el mensaje se escribe en el sistema de archivos. Esto reduce el rendimiento general, pero evita excepciones de memoria insuficiente.

Mejorar el rendimiento minimizando el uso de puertos lógicos enlazados a puertos físicos

Puede aumentar el rendimiento minimizando el uso de puertos lógicos enlazados a puertos físicos que usan los adaptadores siguientes:

  • SQL Server, Oracle

  • WSE, HTTP, WCF

  • MSMQ, MQSeries

    En BizTalk Server 2010, las canalizaciones de envío y recepción se pueden invocar directamente desde una orquestación mediante la clase XLANGPipelineManager contenida en el Microsoft.XLANGs.Pipeline.dll. Por lo tanto, el procesamiento de canalizaciones se puede mover de puertos a orquestaciones; Los puertos lógicos de una orquestación se pueden sustituir por una forma expresión, que invoca una instancia de una clase .NET determinada (por ejemplo, un componente de acceso a datos mediante ADO.NET). Antes de adoptar esta técnica, debe tener en cuenta que si no usa adaptadores y puertos físicos, pierde la capacidad de aprovechar sus funciones, como el procesamiento por lotes, los reintentos, la configuración declarativa y los transportes secundarios.

Patrones de diseño de orquestación

La Designer orchestration permite a los desarrolladores implementar una amplia gama de patrones de integración empresarial. Algunos patrones comunes incluyen agregador, control de excepciones y compensación, agente de mensajes, dispersión y recopilación, y convoy secuencial y paralelo. Estos patrones se pueden usar para desarrollar soluciones complejas de Enterprise Application Integration (EAI), arquitectura de Service-Oriented (SOA) y administración de procesos empresariales (BPM) con BizTalk Server. Para obtener más información sobre los patrones de diseño de orquestación, vea el tema Implementar patrones de diseño en orquestaciones (https://go.microsoft.com/fwlink/?LinkId=140042) en la documentación de BizTalk Server y patrones y procedimientos recomendados para la integración empresarial (https://go.microsoft.com/fwlink/?LinkId=140043).

Uso adecuado de las clases de .NET en orquestaciones para maximizar el rendimiento

En general, las clases de .NET usadas dentro de una orquestación se pueden dividir en dos categorías distintas:

  • Asistentes y servicios: Estas clases proporcionan servicios comunes para orquestaciones como el seguimiento, el control de errores, el almacenamiento en caché y la serialización o deserialización. La mayoría de estas clases se pueden implementar como clases estáticas sin estado interno y varios métodos estáticos públicos. Este enfoque evita la creación de varios objetos de la misma clase en orquestaciones diferentes que se ejecutan al mismo tiempo, lo que ayuda a reducir el espacio de trabajo de los procesos de host y ahorrar memoria. Una clase sin estado ayuda a reducir el tamaño general del estado interno que se debe serializar y conservar en el Cuadro de mensajes de BizTalk cuando se deshidra una orquestación.

  • Entidades y objetos de negocio: Puede usar estas clases para administrar entidades, como pedidos, artículos de pedido y clientes. Una sola orquestación puede crear y administrar internamente varias instancias del mismo tipo. Estas clases suelen tener estado y exponen campos públicos o propiedades junto con métodos para modificar el estado interno del objeto. Las instancias de estas clases se pueden crear dinámicamente mediante la deserialización de una parte XLANGMessage en un objeto .NET mediante las clases XmlSerializer o DataContractSerializer o mediante el método XLANGPart.RetrieveAs . Debe estructurar una orquestación mediante ámbitos no transaccionales de forma que las instancias de clases con estado se creen lo antes posible y se liberen tan pronto como ya no sean necesarias. Este enfoque reduce el espacio de trabajo de los procesos de host y minimiza el tamaño general del estado interno que se serializa y se conserva en la base de datos de cuadro de mensajes cuando se deshidrata una orquestación. Para obtener más información sobre el uso de orquestaciones en BizTalk Server, consulte el artículo Preguntas más frecuentes sobre orquestaciones de BizTalk Server (https://go.microsoft.com/fwlink/?LinkID=116886).

    Nota

    Aunque este artículo está escrito para BizTalk Server 2004 y BizTalk Server 2006, los conceptos presentados también se aplican a las orquestaciones de BizTalk Server 2010.

Bloques del controlador de excepciones de orquestación

Al usar bloques del controlador de excepciones de orquestación, incluya todas las formas de orquestación en uno o varios ámbitos (ámbitos no transaccionales siempre que sea posible) y cree al menos los siguientes bloques de controlador de excepciones:

Consideraciones al usar mapas en orquestaciones

Las consideraciones siguientes se aplican al usar mapas en orquestaciones:

  • Si usa un mapa para extraer o establecer propiedades usadas con la lógica de negocios en una orquestación, use campos distintivos o propiedades promocionadas. Esta práctica debe seguirse porque, al extraer o establecer valores con un mapa, el documento se carga en la memoria, pero cuando se usan campos distintivos o propiedades promocionadas, el motor de orquestación accede al contexto del mensaje y no carga el documento en la memoria.

  • Si utiliza una asignación para agregar varios campos a un campo, use campos distintivos o propiedades promocionadas con una variable de orquestación para acumular el conjunto de resultados.

Consulte también

Optimización del rendimiento