Share via


Ensamblar un intercambio EDI por lotes

Para ensamblar elementos por lotes individuales del conjunto de transacciones en un intercambio EDI, BizTalk Server EDI y AS2 hace lo siguiente:

  • Identifican elementos por lotes para su procesamiento.

  • Validan y almacenan en búfer elementos por lotes individuales tras la recepción.

  • Recuperan elementos por lotes específicos y ensamblan un intercambio por lotes cuando se cumplen los criterios de versión.

    La hora de inicio para la colección de mensajes individuales para obtener acceso a un lote está determinada por los criterios de activación por lotes. La hora en el que el lote se libera está determinada por los criterios de versión por lotes. Para obtener más información sobre estos dos conjuntos de criterios, consulte Configuración de un lote saliente.

Flujo de mensajes para mensajes por lotes salientes

Cuando se configura BizTalk Server para realizar el procesamiento por lotes de un mensaje saliente, los componentes de BizTalk Server realizarán las siguiente series de pasos para preparar el mensaje por lotes para el envío. Estas series de pasos describen el caso en el que la canalización EDIReceive con el componente de canalización de BatchMarker procesa los intercambios recibidos que contienen los conjuntos de transacciones que se van a procesar por lotes para el envío.

  1. El componente de canalización BatchMarker en la canalización EDIReceive determina los mensajes necesarios que se van a procesar a partir de la configuración de filtro por lotes de EDI en las propiedades de entidad. (Este es el único componente por lotes que examina la configuración de filtro de lotes y actúa en ellos).

  2. Si la configuración de filtro de solo una configuración por lotes se suscribe a un mensaje, el componente BatchMarker promoverá la propiedad EDI.ToBeBatched = True. Esto asegura que la orquestación de procesamiento por lotes recogerá el mensaje.

  3. Si la configuración de filtro de más de una configuración por lotes coincide con el contexto de un mensaje, el componente BatchMarker promueve las propiedades EDI.ToBeRouted = True y establece la EDI.BatchIds propiedad en una lista delimitada por espacios que contiene los identificadores de lote coincidentes. Esto asegura que la orquestación de enrutamiento se suscribirá al mensaje.

    Nota

    Puede promocionar las propiedades de contexto apropiadas en una canalización de recepción personalizada o una orquestación personalizada. La canalización de recepción personalizada puede usar el componente de canalización BatchMarker o puede promocionar las propiedades sin usar el componente de canalización BatchMarker.

  4. La orquestación de enrutamiento recoge cualquier conjunto de transacciones para el que EDI.ToBeRouted = True se promueve y EDI.BatchIds , a continuación, crea copias del conjunto de transacciones, lo que garantiza que hay una copia para cada identificador de lote incluido en EDI.BatchIds. Los conjuntos EDI.ToBeBatched = True de orquestación de enrutamiento y EDI.BatchId se establecen en el identificador de lote de la configuración de lote coincidente para cada copia del conjunto de transacciones. Esto garantiza que los conjuntos de transacciones se recogerán mediante la orquestación por lotes para el procesamiento por lotes.

  5. La orquestación por lotes recoge todos los mensajes para los que las siguientes propiedades se han promocionado:

    • EDI.ToBeBatched = True y EDI.BatchId = el identificador del lote asociado con esta instancia de la orquestación de procesamiento por lotes.

    • EDI.ToBeBatched = True y EDI.BatchName = nombre del lote configurado y EDI.DestinationPartyName = nombre de la entidad que contiene la configuración de lote.

      Al procesar los mensajes entrantes mediante la canalización EDIReceive (con el componente de canalización BatchMarker), la orquestación por lotes realizará el procesamiento de los conjuntos de transacciones con codificación EDIFACT o X12.

    Nota

    Habrá una instancia de la orquestación por lotes por cada configuración de lotes activa, y cada una se suscribe a un identificador de lote concreto. El valor del identificador de lote se establece automáticamente al crear una nueva configuración de lotes en la sección Identificación de la página de Configuración de procesamiento por lotes de la pestaña del acuerdo unidireccional del cuadro de diálogo Propiedades de acuerdo.

  6. La orquestación por lotes valida cada conjunto de transacciones de los que se va realizar el procesamiento por lotes. Si se produce un error en la validación del conjunto de transacciones, establece la EDI.BatchItemValidationFailure propiedad de contexto en "True". La orquestación BatchSuspend recoge el mensaje en función de esa propiedad de contexto, publica información de error y, a continuación, se suspende.

  7. Cuando se cumplen los criterios de liberación de lotes, la orquestación de procesamiento por lotes ensambla los elementos de lote en un lote y crea un sobre.

  8. Una vez que la orquestación por lotes finaliza el procesamiento por lotes de un intercambio, promociona las siguientes propiedades en ese intercambio: EDI.DestinationPartyName = %PartyName%, EDI.BatchEncodingType = X12 o EDIFACT, y EDI.ToBeBatched = False.

  9. Un puerto de envío recoge los conjuntos de transacciones por lotes basados en EDI. DestinationPartyName = <PartyName>, EDI. BatchEncodingType = EDIFACT o X12 y EDI. ToBeBatched = False.

Mensajes de control de orquestaciones por lotes

La orquestación por lotes se activa, finaliza o reemplaza mediante los siguientes mensajes de control:

  • BatchActivation: cuando la orquestación recibe este mensaje, se crea una instancia de la orquestación por lotes y la orquestación está activa para recibir elementos por lotes (si cumple los criterios de activación por lotes). Este mensaje de control se envía al hacer clic en el botón Iniciar de una configuración de lotes en la página Configuración de procesamiento por lotes de la pestaña del acuerdo unidireccional del cuadro de diálogo Propiedades de acuerdo.

  • BatchTermination: cuando la orquestación recibe este mensaje, crea un lote a partir de elementos por lotes existentes, publica el mensaje en el cuadro de mensajes y finaliza. Este mensaje de control se envía al hacer clic en el botón Detener de una configuración de lotes en la página Configuración de procesamiento por lotes de la pestaña del acuerdo unidireccional del cuadro de diálogo Propiedades de acuerdo.

    Nota

    La orquestación también se termina si alcanza la hora especificada para la propiedad Finalizar el de la sección Terminación de la página Configuración de procesamiento por lotes de la pestaña del acuerdo unidireccional del cuadro de diálogo Propiedades de acuerdo.

  • BatchOverride: cuando la orquestación recibe este mensaje, crea un lote a partir de elementos existentes, publica el mensaje en el cuadro de mensajes y, a continuación, espera los mensajes para el siguiente lote. Este mensaje de control se envía al hacer clic en el botón Invalidar de una configuración de lotes en la página Configuración de procesamiento por lotes de la pestaña del acuerdo unidireccional del cuadro de diálogo Propiedades de acuerdo.

    La orquestación por lotes recibe los mensajes de control a través de la ubicación de recepción BatchControlMessageRecvLoc. El intervalo de sondeo de esta ubicación de recepción de SQL se establece de forma predeterminada en 30 segundos, pero se puede cambiar en el cuadro de diálogo Propiedades de transporte de SQL para la ubicación de recepción. El descenso del intervalo de sondeo garantizará que la ubicación de recepción BatchControlMessageRecvLoc recibirá un mensaje de control poco después de que realice una acción que se envíe al mensaje de control (por ejemplo, cuando inicie la orquestación por lotes).

    Se producen los siguientes pasos cuando inicia una orquestación de lotes:

  1. Al hacer clic en el botón Inicio, BizTalk Server crea un registro en una tabla que indica a qué entidad e identificador de lote va a activar la orquestación por lotes.

  2. El adaptador SQL asociado a los sondeos de la ubicación de recepción BatchControlMessageRecvLo para ver si el registro existe en la base de datos.

  3. Si existe el registro, el adaptador SQL genera un mensaje de control mediante información en el registro.

    Nota

    Con la generación del mensaje de control de esta forma se garantiza que la orquestación no puede iniciarse mediante un mensaje de control no válido.

  4. La ubicación de recepción BatchControlMessageRecvLoc recibe el mensaje de control y BizTalk Server activa una instancia de orquestación por lotes.

Componentes de lotes

BizTalk Server los conjuntos de transacciones XML por lotes edi en intercambios EDI mediante los siguientes componentes:

  • BatchMarkerReceivePipelineComponent en la canalización de recepción EDI

  • Orquestación de enrutamiento

  • Orquestación por lotes

  • Actualizar la orquestación de procesamiento por lotes

  • Orquestación BatchSuspend

  • Canalización de envío EDI

    Estos componentes se instalan como archivos DLL al instalar y configurar BizTalk Server EDI y AS2.

Nota

Los componentes de procesamiento por lotes de BizTalk Server EDI y AS2 no garantizan la ordenación de los conjuntos de transacciones en un lote.

BatchMarkerReceivePipelineComponent

BatchMarkerReceivePipelineComponent en la canalización de recepción EDI habilita la orquestación por lotes para recoger los mensajes a los que se les va realizar el procesamiento por lotes. Este componente de canalización se aplica después del desensamblador en la canalización de recepción EDI. El componente evalúa los criterios de filtro establecidos en la sección Filtro de la página Configuración de procesamiento por lotes de la pestaña del acuerdo unidireccional del cuadro de diálogo Propiedades de acuerdo y marca los conjuntos de transacciones con las propiedades de contexto siguientes para procesarlas mediante las orquestaciones de enrutamiento y procesamiento por lotes.

  • Si una entidad única se suscribe a un mensaje que se va a procesar por lotes ToBeBatched = True , promueve y BatchId se establece en el valor del identificador de lote de la configuración de lote coincidente. Esto habilita la recogida mediante la orquestación por lotes.

  • Si varios lotes se suscriben a un mensaje que se va a procesar por lotes, promueve ToBeRouted = Truey establece la EDI.BatchIds propiedad establecida en una lista delimitada por espacios de identificadores por lotes. Esto habilita la recogida mediante la orquestación de enrutamiento.

  • Si no existe ninguna suscripción, no promociona una propiedad de contexto. Esto indica que no se va a realizar el procesamiento por lotes del conjunto de transacciones.

    El componente de canalización omite los mensajes distintos de XML y mensajes con la ReuseEnvelope propiedad (lotes conservados). Si las confirmaciones no se van a procesar por lotes, el componente de canalización ignorará los tipos de mensajes de confirmación (CONTRL, TA1 y 997). Para optimizar el procesamiento de las orquestaciones de enrutamiento y procesamiento por lotes, BatchMarkerPipelineComponent pasa el mensaje al cuadro de mensajes si la propiedad MessageDestination de contexto del mensaje está establecida en "SuspendedQueue" por el desensamblador.

    Si está usando una canalización personaliza, en lugar de la canalización EDIReceive, puede usar el componente BatchMarker en su canalización personalizada. Si no usa la canalización EDIReceive y publica mensajes desde una orquestación, tendrá que promover ToBeBatched = True y BatchID al identificador de un lote activo en uno de los componentes.

Orquestación de enrutamiento

La orquestación de enrutamiento se suscribe a cualquier mensaje con la propiedad ToBeRouted = True de contexto y la propiedad EDI.BatchIds de contexto establecida en una lista delimitada por espacios de identificadores por lotes. Esto se produce cuando se suscriben varios filtros de lote en un mensaje que se va a procesar por lotes. La orquestación de enrutamiento realizará una copia del mensaje para cada identificador de lote incluido en EDI.BatchIds. Marca cada copia con dos nuevas propiedades de contexto:

  • EDI.BatchID, que se establece en el identificador del lote para el que se ha creado el mensaje.

  • EDI.ToBeBatched, que se establece en True.

    A continuación, enruta las copias en el cuadro de mensajes que la orquestación por lotes va a recoger. Cada identificador de lote de destino usa una instancia singleton de la misma orquestación, con un filtro en el identificador de lote específico.

Orquestación por lotes

La orquestación por lotes es un servicio con estado que almacena en búfer los elementos de lotes (conjuntos de transacciones) durante un período de tiempo, los ensambla en un intercambio y, a continuación, libera el intercambio a la canalización de recepción basada en los criterios de versión.

Después de activarse, una instancia de la orquestación por lotes puede iniciar el procesamiento por lotes de mensajes de un tipo de codificación determinado a una entidad determinada (si se ha pasado la fecha y hora de inicio ). En cualquier momento puede haber varias instancias de la orquestación por lotes para cada entidad, una por cada configuración de lotes activa. Una sola instancia de la orquestación de procesamiento por lotes puede liberar varios lotes para una única configuración de lote. Después de que se satisfagan los criterios finales, se terminará la instancia de orquestación por lotes. Una nueva instancia de la orquestación por lotes deberá crearse manualmente a partir de la administración de socios comerciales (TPM) mediante el botón Iniciar .

Si la orquestación por lotes empieza antes de la fecha y hora de inicio que aparecen en la sección Activación de la página Configuración de procesamiento por lotes de la pestaña del acuerdo unidireccional del cuadro de diálogo Propiedades de acuerdo, solo recibirá los mensajes que se especifiquen en el intervalo de activación. No recibirá mensajes enviados antes de la hora y fecha de inicio.

La orquestación por lotes realiza lo siguiente:

  • Se suscribe a elementos por lotes XML con las propiedades EDI.ToBeBatched = True de contexto y EDI.BatchId el identificador de la configuración del lote o EDI.ToBeBatched = True EDI. BatchName = el nombre del lote configurado y EDI. DestinationPartyName = el nombre de entidad que contiene la configuración por lotes. Recibe elementos por lotes mediante una operación de acción Receive en un bucle .

    Nota

    La orquestación por lotes no establece conjuntos de transacciones por lotes en función de los criterios de filtro establecidos en la sección Filtro de la página Configuración de procesamiento por lotes de la pestaña acuerdo unidireccional del cuadro de diálogo Propiedades del contrato . Se suscribe a los conjuntos de transacciones que tengan las propiedades de contexto anteriores establecidas en ellos. El componente de canalización BatchMarker establece y promociona las propiedades de contexto que se basan en la configuración de filtrado en las propiedades de entidades.

  • Recupera los valores de configuración por lotes para la entidad identificada en la BatchId propiedad de contexto.

  • Valida el elemento de lote (conjunto de transacciones) que se basa en la configuración de entidades.

  • Si hay un error en un elemento por lotes, la orquestación por lotes promoverá la siguiente propiedad en ese conjunto de transacciones: EDI.BatchItemValidationFailure = True. La orquestación BatchElementSuspend se suscribe a cualquier conjunto de transacciones para el que se ha promocionado esta propiedad. Esta orquestación proporcionará información de error detallada para el primer error encontrado en el procesamiento por lotes del intercambio.

  • Si no se produce un error en un elemento por lotes, mantiene una referencia a ese elemento de lotes.

  • Cuando se recibe el mensaje de control adecuado o se cumplen los criterios de liberación por lotes, se interrumpe el bucle de acción Recibir , recupera todos los elementos por lotes del cuadro de mensajes y ensambla el intercambio.

  • Establece la propiedad ToBeBatched = False de contexto para el intercambio y la propiedad de contexto DestinationPartyName = %PartyName% donde %PartyName% es el nombre de la entidad para la que se pretende el mensaje.

    Nota

    Si un puerto de envío se suscribe a o a ambas propiedades EDI.ToBeBatched = False y EDI. DestinationPartyName = %PartyName%, ese puerto de envío puede recoger el intercambio por lotes. Compruebe que los filtros del puerto de envío se configuran de modo que el puerto de envío recoge solo dichos intercambios procesados por lotes para lo que ha sido diseñado.

    Nota

    Los intercambios descartados por la orquestación por lotes en el Cuadro de mensajes solo tienen las propiedades EDI.ToBeBatched = False, EDI. DestinationPartyName = %PartyName%, y EDI. BatchEncodingType = "X12" o "EDIFACT" promocionados al contexto. Se pierden todas las propiedades de contexto de los conjuntos de transacciones originales.

  • Se aplican las siguientes propiedades al sobre para un intercambio con codificación X12:

    • ISA6: identificador del remitente del intercambio

    • ISA8: identificador del receptor del intercambio

    • ISA15: indicador de uso

    • ISA_Blob (escrito en el contexto)

  • Se aplican las siguientes propiedades al sobre para un intercambio con codificación EDIFACT:

    • UNB2.1: identificador del remitente del intercambio

    • UNB3.1: identificador del destinatario del intercambio

    • UNB2.3: dirección para el enrutamiento inverso

    • UNB11: indicador de uso

    • UNA_Blob (escrito en el contexto)

    • UNB_Blob (escrito en el contexto)

  • Entrega el intercambio por lotes al cuadro de mensajes para que la canalización de recepción EDI lo recoja.

Orquestación UpgradeBatching

La orquestación UpgradeBatching controla los mensajes que tienen la EDI.ToBeBatched propiedad establecida en true, pero no tienen establecido la EDI.BatchID propiedad .

En versiones anteriores de BizTalk Server, cada entidad solo podía tener una configuración por lotes. Al procesar mensajes que se habían EDI.ToBeBatched establecido en true, se usó para determinar la entidad y, a continuación, EDI.DestinationPartyId la configuración por lotes se leyó de las propiedades del contrato.

En BizTalk Server, cada entidad puede tener varias configuraciones de lote asociadas, por lo que EDI.DestinationPartyId no proporciona suficiente información para determinar qué configuración de lote se debe usar. Cuando BizTalk Server recibe mensajes, la propiedad se usa para identificar qué EDI.BatchId configuración de lote específica se debe usar al procesar un mensaje.

Después de actualizar a BizTalk Server, es posible que todavía tenga canalizaciones personalizadas que usen la EDI.DestinationPartyId propiedad para especificar la configuración de entidad. Cuando se recibe un mensaje que se ha EDI.ToBeBatched establecido en true y se ha EDI.DestinationPartyID establecido en lugar de EDI. BatchID, la orquestación UpgradeBatching intenta determinar qué configuración por lotes se debe usar.

La orquestación UpgradeBatching usa los filtros de suscripción siguientes para suscribirse en documentos que están marcados para el procesamiento por lotes, pero que no especifican ningún identificador de lote:

  • EDI.ToBeBatched=True

  • EDI.EncodingType Existe

  • EDI.DestinationPartyId Existe

    Si la orquestación recibe un mensaje, usará el nombre de la entidad y el tipo de codificación para intentar buscar una configuración de lote coincidente para el mensaje. La EDI.DestinationPartyID propiedad se usa para determinar el nombre de la entidad y, a continuación, la orquestación busca un nombre por lotes que coincida con <PartyName>+<EncodingType>+Default. Por ejemplo, si el nombre de la entidad es Contoso y el valor de EDI.EncodingType es X12, la orquestación buscará un lote denominado ContosoX12Default.

    Si se encuentra una configuración de lote coincidente, el mensaje se coloca de nuevo en el cuadro de mensajes, con las siguientes propiedades:

  • EDI.ToBeBatched = True

  • EDI.ToBeRouted = False

  • EDI.BatchId = el identificador de lote para el lote coincidente

    A continuación, la orquestación de procesamiento por lotes procesa el mensaje.

Nota

Si no se encuentra ningún lote que coincida, sucederá lo siguiente:

  • No se enviará el mensaje a la orquestación BatchSuspend.
    • Se suspenderá la instancia de orquestación UpgradeBatching y el mensaje.
    • Se registrará un error en el registro de eventos, lo que indica que no se ha encontrado ningún lote.

Orquestación BatchSuspend

La orquestación BatchSuspend controla los mensajes no válidos que recibe la orquestación por lotes. La orquestación BatchSuspend es necesaria porque no hay forma directa de suspender un mensaje de una orquestación (en este caso, la orquestación por lotes) sin detener la ejecución de la instancia de la orquestación.

Cuando una instancia de orquestación por lotes recibe un mensaje, intenta validarlo. Si se produce un error en la validación del mensaje, la orquestación por lotes crea una instancia de la orquestación BatchSuspend y establece la EDI.BatchItemValidationFailure propiedad de contexto en True. La orquestación BatchSuspend se suscribe a todos los mensajes con la propiedad de contexto establecida en True. Después de que el conjunto de transacciones no válidas se enrutan en la orquestación BatchSuspend, se suspende la instancia de orquestaciones BatchSuspend.

La orquestación BatchSuspend proporciona la información de error detallada para el primer error que se haya encontrado.

Puede crear una orquestación personalizada para controlar conjuntos de transacciones que no se validan mediante la orquestación por lotes mediante la EDI.BatchElementValidationFailure propiedad de un filtro.

Canalización de envío EDI

Después de recibir un intercambio de lotes para la orquestación por lotes, la canalización de envío EDI realiza lo siguiente:

  • Para un intercambio con codificación X12, la canalización de envío aplica las siguientes propiedades al sobre:

    • ISA2: información de autorización

    • ISA4: información de seguridad

    • ISA9: fecha del intercambio

    • ISA10: hora del intercambio

    • ISA13: número de control del intercambio

    • GS4: fecha

    • GS5: hora

    • GS6: número de control de grupo

    • ST2: número de control de conjunto de transacciones

  • Para un intercambio con codificación EDIFACT, la canalización de envío aplica las siguientes propiedades al sobre:

    • UNB4.1: fecha

    • UNB4.2: hora

    • UNB5: referencia de control del intercambio

    • UNB6.1: contraseña de referencia de destinatario

    • UNG4.1: fecha

    • UNG4.2: hora

    • UNG5: referencia de grupo funcional

    • UNG8: contraseña de aplicaciones

  • Entrega el mensaje a través del adaptador asociado.

Consulte también

Procesamiento por lotes mensajes EDI salientes