Partager via


Assemblage d'un échange EDI par lot

Pour assembler des éléments de lot de jeu de transactions individuels dans un échange EDI, BizTalk Server EDI et AS2 effectuent les opérations suivantes :

  • identifier les éléments de lot pour le traitement par lot ;

  • valider et mettre les éléments de lot individuels en mémoire tampon une fois ceux-ci reçus ;

  • récupérer des éléments de lot spécifiques et assembler un échange traité par lot lorsque les critères de déclenchement sont satisfaits.

    L'heure de début de la collecte des messages individuels à insérer dans un lot est déterminée par les critères d'activation du lot. L'heure de déclenchement du lot est déterminée par les critères de déclenchement du lot. Pour plus d’informations sur ces deux ensembles de critères, consultez Configuration d’un lot sortant.

Flux des messages traités par lot sortants

Lorsque BizTalk Server est configuré pour traiter par lot un message sortant, BizTalk Server composants effectuent la série d’étapes suivante pour préparer le message traité par lots pour l’envoi. Ces opérations décrivent le cas dans lequel le pipeline EDIReceive associé au composant de pipeline BatchMarker traite les échanges reçus qui contiennent des documents informatisés à traiter par lot pour envoi.

  1. Le composant BatchMarker dans le pipeline EDIReceive identifie les messages à traiter par lot en fonction des paramètres de filtre par lot EDI dans les propriétés du tiers. (Il s'agit du seul composant de traitement par lot qui examine les paramètres de filtre par lot et agit sur eux.)

  2. Si les paramètres de filtre d’une seule configuration de lot s’abonnent à un message, le composant BatchMarker promeut la propriété EDI.ToBeBatched = True. Cela garantit que l’orchestration de traitement par lot récupère le message.

  3. Si les paramètres de filtre de plusieurs configurations de lots correspondent au contexte d’un message, le composant BatchMarker promeut les propriétés EDI.ToBeRouted = True et définit la EDI.BatchIds propriété sur une liste délimitée par un espace contenant les ID de lot correspondants. Cela permet à l'orchestration de routage de s'abonner au message.

    Notes

    Vous pouvez promouvoir les propriétés de contexte appropriées dans un pipeline de réception personnalisé ou une orchestration personnalisée. Le pipeline de réception personnalisé peut utiliser le composant de pipeline BatchMarker ou promouvoir les propriétés sans recourir à ce même composant.

  4. L’orchestration de routage récupère tous les ensembles de transactions pour lesquels EDI.ToBeRouted = True et EDI.BatchIds sont promus, puis crée des copies du jeu de transactions, en veillant à ce qu’il existe une copie pour chaque ID de lot contenu dans EDI.BatchIds. L’orchestration de routage définit EDI.ToBeBatched = True et EDI.BatchId est défini sur l’ID de lot de la configuration de lot correspondante pour chaque copie du jeu de transactions. Cela permet à l'orchestration de traitement par lot de récupérer les documents informatisés pour leur appliquer un traitement par lot.

  5. L'orchestration de traitement par lot récupère tous les messages pour lesquels les propriétés suivantes ont été promues :

    • EDI.ToBeBatched = True et EDI.BatchId = ID du lot associé à cette instance de l'orchestration de traitement par lot.

    • EDI.ToBeBatched = True, EDI.BatchName = nom du lot configuré et EDI.DestinationPartyName = nom du tiers contentant la configuration de lot.

      Lors du traitement des messages entrants par le pipeline EDIReceive (à l'aide du composant de pipeline BatchMarker), l'orchestration de traitement par lot ne traite que les documents informatisés X12 et EDIFACT.

    Notes

    Il n'y a qu'une instance de l'orchestration de traitement par lot pour chaque configuration de lot active, chacune s'abonnant à un ID de lot spécifique. La valeur de l’ID de lot est définie automatiquement lors de la création d’une configuration de lot dans la section Identification de la page Configuration de traitement par lot de l’onglet accord unidirectionnel de la boîte de dialogue Propriétés du contrat .

  6. L'orchestration de traitement par lot valide chaque document informatisé auquel un traitement par lot est appliqué. Si le jeu de transactions échoue à la validation, il affecte à la propriété de contexte la EDI.BatchItemValidationFailure valeur « True ». L’orchestration BatchSuspend récupère le message en fonction de cette propriété de contexte, publie des informations d’erreur, puis est suspendue.

  7. Une fois les critères de déclenchement du lot satisfaits, l'orchestration de traitement par lot assemble les éléments de lot au sein d'un lot et crée une enveloppe.

  8. Une fois que l'orchestration de traitement par lot a terminé le traitement par lot d'un échange, elle promeut les propriétés suivantes sur cet échange : EDI.DestinationPartyName = %Nom_tiers%, EDI.BatchEncodingType = X12 ou EDIFACT et EDI.ToBeBatched = False.

  9. Un port d’envoi récupère les jeux de transactions par lots en fonction de l’EDI. DestinationPartyName = <PartyName>, EDI. BatchEncodingType = EDIFACT ou X12, et EDI. ToBeBatched = False.

Messages de contrôle de l'orchestration de traitement par lot

L'orchestration de traitement par lot est activée, arrêtée ou remplacée par les messages de contrôle suivants :

  • BatchActivation : lorsque l’orchestration reçoit ce message, une instance de l’orchestration de traitement par lot est créée et l’orchestration est active pour recevoir des éléments batch (si elle répond aux critères d’activation par lot). Ce message de contrôle est envoyé en cliquant sur le bouton Démarrer d’une configuration de lot dans la page Configuration de traitement par lots de l’onglet accord unidirectionnel de la boîte de dialogue Propriétés de l’accord .

  • BatchTermination : lorsque l’orchestration reçoit ce message, elle crée un lot à partir d’éléments batch existants, publie le message dans messageBox et se termine. Ce message de contrôle est envoyé en cliquant sur le bouton Arrêter d’une configuration de lot dans la page Configuration de traitement par lot de l’onglet accord unidirectionnel de la boîte de dialogue Propriétés du contrat .

    Notes

    L’orchestration est également terminée si elle atteint l’heure spécifiée pour la propriété End-by dans la section Terminaison de la page Configuration de traitement par lot de l’onglet Contrat unidirectionnel de la boîte de dialogue Propriétés de l’accord .

  • BatchOverride : lorsque l’orchestration reçoit ce message, elle crée un lot à partir d’éléments existants, publie le message dans messageBox, puis attend les messages pour le lot suivant. Ce message de contrôle est envoyé en cliquant sur le bouton Remplacer d’une configuration de lot dans la page Configuration de traitement par lot de l’onglet accord unidirectionnel de la boîte de dialogue Propriétés du contrat .

    L'orchestration de traitement par lot reçoit les messages de contrôle via l'emplacement de réception BatchControlMessageRecvLoc. L’intervalle d’interrogation pour cet emplacement de réception SQL est défini par défaut sur 30 secondes, mais peut être modifié dans la boîte de dialogue Propriétés du transport SQL pour l’emplacement de réception. La diminution de la fréquence d'interrogation garantit que l'emplacement de réception BatchControlMessageRecvLoc reçoit un message de contrôle peu après l'exécution de l'action à l'origine de l'envoi du message de contrôle (par exemple, lors du démarrage de l'orchestration de traitement par lot).

    Les opérations suivantes surviennent au démarrage d'une orchestration de traitement par lot :

  1. Quand vous cliquez sur le bouton Démarrer, BizTalk Server crée un enregistrement dans une table indiquant la partie et l’ID de lot pour lesquels vous activez l’orchestration par lots.

  2. L'adaptateur SQL associé à l'emplacement de réception BatchControlMessageRecvLoc lance une interrogation pour vérifier l'existence de l'enregistrement dans la base de données.

  3. Si l'enregistrement existe, l'adaptateur SQL génère un message de contrôle, en utilisant les informations de l'enregistrement.

    Notes

    La génération du message de contrôle de cette façon garantit que l'orchestration ne peut pas être démarrée par un message de contrôle non valide.

  4. L’emplacement de réception BatchControlMessageRecvLoc reçoit le message de contrôle et BizTalk Server active une instance d’orchestration de traitement par lot.

Composants d'un traitement par lot

BizTalk Server EDI traite par lot des jeux de transactions XML dans des échanges EDI à l’aide des composants suivants :

  • BatchMarkerReceivePipelineComponent dans le pipeline de réception EDI ;

  • Orchestration de routage

  • Orchestration de traitement par lot

  • orchestration UpgradeBatching ;

  • Orchestration BatchSuspend

  • Pipeline d'envoi EDI

    Ces composants sont installés en tant que DLL lorsque vous installez et configurez BizTalk Server EDI et AS2.

Notes

Les composants de traitement par lot dans BizTalk Server EDI et AS2 ne garantissent pas l’ordre des jeux de transactions dans un lot.

BatchMarkerReceivePipelineComponent

Le composant BatchMarkerReceivePipelineComponent dans le pipeline de réception EDI permet à l'orchestration de traitement par lot de récupérer les messages auxquels appliquer un traitement par lot. Ce composant de pipeline est appliqué après le désassembleur dans le pipeline de réception EDI. Le composant évalue les critères de filtre définis dans la section Filtre de la page Configuration de traitement par lot de l’onglet accord unidirectionnel de la boîte de dialogue Propriétés de l’accord, et marque les jeux de transactions avec les propriétés de contexte suivantes pour traitement par les orchestrations de routage et de traitement par lot

  • Si un seul tiers s’abonne à un message à traiter par lot, il effectue ToBeBatched = True la promotion et BatchId est défini sur la valeur de l’ID de lot de la configuration de lot correspondante. Cela permet à l'orchestration de traitement par lot de récupérer le message.

  • Si plusieurs lots s’abonnent à un message à traiter, il promeut ToBeRouted = Trueet définit la EDI.BatchIds propriété définie sur une liste d’ID de lot délimitée par des espaces. Cela permet à l'orchestration de routage de récupérer le message.

  • Si aucun abonnement n'existe, il ne promeut aucune propriété de contexte. Cela indique que le document informatisé ne doit pas être traité par lot.

    Le composant de pipeline ignore les messages autres que XML et les messages avec la ReuseEnvelope propriété (lots conservés). Si les accusés de réception ne doivent pas être traités par lot, le composant de pipeline ignore les types de messages ACK (CONTRL, TA1 et 997). Pour optimiser le traitement des orchestrations de routage et de traitement par lot, batchMarkerPipelineComponent transmet le message à MessageBox si la propriété MessageDestination de contexte de message est définie sur « SuspendedQueue » par le désassembleur.

    Si vous utilisez un pipeline personnalisé à la place du pipeline EDIReceive, vous pouvez utiliser le composant BatchMarker dans votre pipeline personnalisé. Si vous n’utilisez pas le pipeline EDIReceive et que vous publiez des messages à partir d’une orchestration, vous devrez promouvoir ToBeBatched = True et BatchID vers l’ID d’un lot actif dans l’un de vos composants.

Orchestration de routage

L’orchestration de routage s’abonne à n’importe quel message avec la propriété ToBeRouted = True de contexte et la propriété EDI.BatchIds de contexte définies sur une liste d’ID de lot délimitées par des espaces. Cela se produit lorsque plusieurs filtres de lot s'abonnent à un message auquel appliquer un traitement par lot. L’orchestration de routage effectue une copie du message pour chaque ID de lot contenu dans EDI.BatchIds. Elle applique deux nouvelles propriétés de contexte à chaque copie :

  • EDI.BatchID, définie sur l'ID du lot auquel ce message est destiné.

  • EDI.ToBeBatched, définie sur la valeur True.

    Elle achemine ensuite les copies à la base de données MessageBox afin que celles-ci soient récupérées par l'orchestration de traitement par lot. Chaque ID de lot de destination utilise une instance singleton de la même orchestration, avec un filtre sur l'ID de lot spécifique.

Orchestration de traitement par lot

L'orchestration de traitement par lot est un service avec état qui met en mémoire tampon des éléments de lot (documents informatisés) au cours d'une période, les assemble au sein d'un échange, puis transmet l'échange au pipeline d'envoi en fonction des critères de déclenchement.

Une fois activé, une instance de l’orchestration de traitement par lot peut commencer à traiter par lot des messages d’un type d’encodage particulier à une partie donnée (si la date de début est passée). À tout moment, il peut y avoir plusieurs instances de l'orchestration de traitement par lot pour chaque tiers (une instance par configuration de lot active). Une seule instance de l’orchestration de traitement par lot peut libérer plusieurs lots pour une configuration de lot unique. Une fois les critères de fin satisfaits, l'instance de l'orchestration de traitement par lot est arrêtée. Une nouvelle instance de l’orchestration de traitement par lots doit être créée manuellement à partir de la gestion des partenaires commerciaux (TPM) à l’aide du bouton Démarrer.

Si l’orchestration par lots démarre avant la date de début indiquée dans la section Activation de la page Configuration du traitement par lot de l’onglet accord unidirectionnel de la boîte de dialogue Propriétés du contrat , elle reçoit uniquement les messages spécifiés dans la plage d’activation. pas ceux envoyés avant les date et heure de début.

L'orchestration de traitement par lot effectue les tâches suivantes :

  • S’abonne aux éléments de lot XML avec les propriétés EDI.ToBeBatched = True de contexte et EDI.BatchId l’ID de la configuration de lot, ou edi EDI.ToBeBatched = True . BatchName = nom du lot et de l’EDI configurés. DestinationPartyName = nom de partie qui contient la configuration de lot. Il reçoit des éléments batch à l’aide d’une opération d’action Recevoir dans une boucle.

    Notes

    L’orchestration de traitement par lot ne traite pas par lot les ensembles de transactions en fonction des critères de filtre définis dans la section Filtre de la page Configuration du traitement par lot de l’onglet accord unidirectionnel de la boîte de dialogue Propriétés de l’accord . Elle s'abonne aux documents informatisés pour lesquels les propriétés de contexte ci-dessus sont définies. Le composant de pipeline BatchMarker définit et promeut ces propriétés de contexte en fonction des paramètres de filtre définis dans les propriétés du tiers.

  • Récupère les paramètres de configuration de lot pour la partie identifiée dans la propriété de BatchId contexte.

  • Elle valide l'élément de lot (document informatisé) en fonction des paramètres du tiers.

  • En cas d’erreur dans un élément batch, l’orchestration de traitement par lot promeut la propriété suivante sur ce jeu de transactions : EDI.BatchItemValidationFailure = True. L’orchestration BatchElementSuspend s’abonne à tout jeu de transactions pour lequel cette propriété a été promue. Elle fournit des informations détaillées sur la première erreur rencontrée lors du traitement par lot de l'échange.

  • Si un élément de lot ne comporte aucune erreur, elle conserve une référence à cet élément de lot.

  • Lorsque le message de contrôle approprié est reçu ou que les critères de mise en production de traitement par lot sont remplis, sort de la boucle d’action Recevoir , récupère tous les éléments de lot à partir de MessageBox et assemble l’échange.

  • Définit la propriété ToBeBatched = False de contexte pour l’échange et la propriété de contexte DestinationPartyName = %PartyName% où %PartyName% est le nom de la partie pour laquelle le message est destiné.

    Notes

    Si un port d’envoi s’abonne à l’une des propriétés EDI.ToBeBatched = False et à l’EDI, ou à la fois. DestinationPartyName = %PartyName%, ce port d’envoi peut récupérer l’échange par lot. Vérifiez que les filtres d'un port d'envoi sont configurés de telle sorte que celui-ci récupère uniquement les échanges traités par lot appropriés.

    Notes

    Les échanges supprimés par l’orchestration de traitement par lot dans messageBox ont uniquement les propriétés EDI.ToBeBatched = FalseEDI. DestinationPartyName = %PartyName%, et EDI. BatchEncodingType = « X12 » ou « EDIFACT » promu dans le contexte. Toutes les propriétés de contexte des documents informatisés d'origine sont perdues.

  • Pour un échange X12, elle applique les propriétés suivantes à l'enveloppe :

    • ISA6 : ID de l'expéditeur de l'échange ;

    • ISA8 : ID du destinataire de l'échange ;

    • ISA15 : indicateur d'utilisation ;

    • ISA_Blob (écrite dans le contexte).

  • Pour un échange EDIFACT, elle applique les propriétés suivantes à l'enveloppe :

    • UNB2.1 : ID de l'expéditeur de l'échange ;

    • UNB3.1 : ID du destinataire de l'échange ;

    • UNB2.3 : adresse de routage inverse ;

    • UNB11 : indicateur d'utilisation ;

    • UNA_Blob (écrite dans le contexte) ;

    • UNB_Blob (écrite dans le contexte).

  • Elle remet l'échange traité par lot à la base de données MessageBox pour que le pipeline d'envoi EDI puisse le récupérer.

Orchestration UpgradeBatching

L’orchestration UpgradeBatching gère les messages dont la propriété a la EDI.ToBeBatched valeur true, mais qui n’ont pas la EDI.BatchID propriété définie.

Dans les versions précédentes de BizTalk Server, chaque partie ne pouvait avoir qu’une seule configuration de lot. Lors du traitement des messages qui avaient EDI.ToBeBatched la valeur true, le EDI.DestinationPartyId a été utilisé pour déterminer la partie, puis la configuration de lot a été lue à partir des propriétés de l’accord.

Dans BizTalk Server, chaque partie peut avoir plusieurs configurations de lots associées, de sorte que le EDI.DestinationPartyId ne fournit pas suffisamment d’informations pour déterminer la configuration de lot à utiliser. Lorsque BizTalk Server reçoit des messages, la EDI.BatchId propriété est utilisée pour identifier la configuration de lot spécifique à utiliser lors du traitement d’un message.

Après la mise à niveau vers BizTalk Server, vous pouvez toujours avoir des pipelines personnalisés qui utilisent la EDI.DestinationPartyId propriété pour spécifier la configuration du tiers. Lorsqu’un message a EDI.ToBeBatched la valeur true est reçu, et a EDI.DestinationPartyID défini au lieu d’EDI. BatchID, l’orchestration UpgradeBatching tente de déterminer quelle configuration de lot doit être utilisée.

L'orchestration UpgradeBatching utilise les filtres suivants pour s'abonner aux documents marqués pour le traitement par lot, mais ne spécifie pas d'ID de lot :

  • EDI.ToBeBatched=True

  • EDI.EncodingType Existe

  • EDI.DestinationPartyId Existe

    Lorsque l'orchestration reçoit un message, elle recherche une configuration de lot correspondante pour le message à l'aide du nom du tiers et du type de codage. La EDI.DestinationPartyID propriété est utilisée pour déterminer le nom du groupe, puis l’orchestration recherche un nom de lot qui correspond <à PartyName>+<EncodingType>+Default. Par exemple, si le nom du groupe est Contoso et que la valeur de EDI.EncodingType est X12, l’orchestration recherche un lot nommé ContosoX12Default.

    Si une configuration de lot correspondante est trouvée, le message est replacé dans la base de données MessageBox avec les propriétés suivantes :

  • EDI.ToBeBatched = True

  • EDI.ToBeRouted = False

  • EDI.BatchId = ID du lot correspondant

    L'orchestration de traitement par lot traite ensuite le message.

Notes

Si aucun lot correspondant n'est trouvé, les événements suivants surviennent :

  • Le message n'est pas envoyé à l'orchestration BatchSuspend.
    • L'instance d'orchestration UpgradeBatching et le message sont suspendus.
    • Une erreur indiquant qu'aucun lot n'a été trouvé est consignée dans le journal des événements.

Orchestration BatchSuspend

L'orchestration BatchSuspend gère les messages non valides reçus par l'orchestration de traitement par lot. Elle est requise car il n'y a aucun moyen direct de suspendre un message à partir d'une orchestration (en l'occurrence, l'orchestration de traitement par lot) sans interrompre l'exécution de l'instance de l'orchestration.

Lorsqu'une instance de l'orchestration de traitement par lot reçoit un message, elle tente de le valider. Si la validation du message échoue, l’orchestration de traitement par lot crée une instance de l’orchestration BatchSuspend et définit la EDI.BatchItemValidationFailure propriété de contexte sur True. L'orchestration BatchSuspend s'abonne à tous les messages pour lesquels cette propriété de contexte est définie sur la valeur True. Une fois le document informatisé acheminé à l'orchestration BatchSuspend, l'instance de l'orchestration BatchSuspend est suspendue.

L'orchestration BatchSuspend fournit des informations détaillées sur la première erreur rencontrée.

Vous pouvez créer une orchestration personnalisée pour gérer les jeux de transactions qui échouent à la validation par l’orchestration de traitement par lot, en utilisant la EDI.BatchElementValidationFailure propriété dans un filtre.

Pipeline d'envoi EDI

Après avoir reçu un échange traité par lot de l'orchestration de traitement par lot, le pipeline d'envoi EDI effectue les tâches suivantes :

  • Pour un échange X12, il applique les propriétés suivantes à l'enveloppe :

    • ISA2 : informations d'autorisation ;

    • ISA4 : informations de sécurité ;

    • ISA9 : date de l'échange ;

    • ISA10 : heure de l'échange ;

    • ISA13 : numéro de contrôle de l'échange ;

    • GS4 : date ;

    • GS5 : heure ;

    • GS6 : numéro de contrôle du groupe ;

    • ST2 : numéro de contrôle du document informatisé.

  • Pour un échange EDIFACT, il applique les propriétés suivantes à l'enveloppe :

    • UNB4.1 : date :

    • UNB4.2 : heure ;

    • UNB5 : référence de contrôle de l'échange ;

    • UNB6.1 : mot de passe du destinataire ;

    • UNG4.1 : date ;

    • UNG4.2 : heure ;

    • UNG5 : référence de groupe fonctionnel ;

    • UNG8 : mot de passe de l'application.

  • Il remet le message via l'adaptateur associé.

Voir aussi

Traitement par lot des messages EDI sortants