Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour assembler les éléments individuels d'un ensemble de jeux de transactions dans un échange EDI, BizTalk Server EDI et AS2 effectue les opérations suivantes :
Identifie les éléments de lot pour le traitement par lots
Valide et met en mémoire tampon les éléments individuels d'un lot lors de leur réception
Récupère des éléments de lot spécifiques et assemble un échange par lot lorsque les critères de libération sont remplis.
L'heure de début de la collecte de messages individuels à être inclus dans un lot est déterminée par les critères d'activation du lot. Heure à laquelle le lot est libéré est déterminé par les critères de mise en production du lot. Pour plus d’informations sur ces deux ensembles de critères, consultez Configuration d’un lot sortant.
Flux de messages pour les messages par lots sortants
Lorsque BizTalk Server est configuré pour traiter un message sortant, les composants BizTalk Server effectuent la série d’étapes suivantes pour préparer le message par lots à envoyer. Cette série d’étapes décrit le cas dans lequel le pipeline EDIReceive avec le composant de pipeline BatchMarker traite les échanges reçus qui contiennent des jeux de transactions à traiter par lot pour l’envoi.
Le composant de pipeline BatchMarker dans le pipeline EDIReceive détermine quels messages doivent être traités par lots à partir des paramètres du filtre de 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 de lot et agit sur eux.)
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 par lots récupère le message.Si les paramètres de filtre de plusieurs configurations de lot correspondent au contexte d’un message, le composant BatchMarker promeut les propriétés
EDI.ToBeRouted = True
et définit laEDI.BatchIds
propriété sur une liste délimitée d’espace contenant les ID de lot correspondants. Cela garantit que l’orchestration de routage souscrira au message.Remarque
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 BatchMarker ou alors promouvoir les propriétés sans recours au composant de pipeline BatchMarker.
L’orchestration de routage récupère tout jeu de transactions pour lequel
EDI.ToBeRouted = True
etEDI.BatchIds
est promu, puis crée des copies du jeu de transactions, ce qui garantit qu’il existe une copie pour chaque ID de lot contenu dansEDI.BatchIds
. Les jeux d’orchestration de routageEDI.ToBeBatched = True
etEDI.BatchId
sont définis sur l’ID de lot de la configuration de lot correspondante pour chaque copie du lot de transactions. Cela garantit que les jeux de transactions seront récupérés par l’orchestration par lots pour le traitement par lots.L’orchestration par lot récupère tous les messages pour lesquels les propriétés suivantes ont été promues :
EDI.ToBeBatched = True
et EDI.BatchId = l'identifiant du lot associé à cette instance d'orchestration de traitement par lots.EDI.ToBeBatched = True
et EDI.BatchName = le nom du lot configuré et EDI.DestinationPartyName = le nom de la partie qui contient la configuration du lot.Lorsque les messages entrants sont traités par le pipeline EDIReceive (avec le composant de pipeline BatchMarker), l’orchestration par lot ne traitera que les jeux de transactions codés en X12 ou EDIFACT.
Remarque
Il y aura une instance de l’orchestration de traitement par lots pour chaque configuration active de lot, 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 par lot de l’onglet Contrat unidirectionnel de la boîte de dialogue Propriétés du contrat .
L’orchestration par lots valide chaque ensemble de transactions pour regroupement. Si le jeu de transactions échoue à la validation, il définit la propriété de contexte
EDI.BatchItemValidationFailure
sur « Vrai ». L’orchestration BatchSuspend récupère le message en fonction de cette propriété de contexte, publie les informations d’erreur avant d'être suspendue.Lorsque les critères de mise en production du lot ont été remplis, l’orchestration de traitement par lot assemble les éléments de lot dans un lot et crée une enveloppe.
Une fois que l’orchestration de traitement par lots a terminé le traitement par lot d’un échange, elle promeut les propriétés suivantes sur cet échange : EDI. DestinationPartyName = %PartyName%, EDI. BatchEncodingType = X12 ou EDIFACT et EDI. ToBeBatched = False.
Un port d'envoi récupère les jeux de transactions par lots selon EDI.DestinationPartyName = <PartyName>, EDI.BatchEncodingType = EDIFACT ou X12, et EDI.ToBeBatched = False.
Traitement par lots des messages de contrôle d’orchestration
L’orchestration par lots 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 par lot est créée et l’orchestration est active pour recevoir des éléments de lot (s’il 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 par lot dans la page Configuration batching de l’onglet Contrat unidirectionnel de la boîte de dialogue Propriétés du contrat .
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 par lots dans la page Configuration batching de l’onglet Contrat unidirectionnel de la boîte de dialogue Propriétés du contrat .
Remarque
L’orchestration est également arrêtée si elle atteint l’heure spécifiée pour la propriété End-by dans la section Arrêt de la page Configuration de traitement par lots de l’onglet Contrat unidirectionnel de la boîte de dialogue Propriétés du contrat .
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 du lot suivant. Ce message de contrôle est envoyé en cliquant sur le bouton Remplacer d’une configuration par lots dans la page Configuration par lot de l’onglet Contrat unidirectionnel de la boîte de dialogue Propriétés du contrat .
L’orchestration par lot reçoit les messages de contrôle via l'emplacement de réception BatchControlMessageRecvLoc. L’intervalle d’interrogation de 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 l’intervalle d’interrogation garantit que l’emplacement de réception BatchControlMessageRecvLoc reçoit un message de contrôle peu après avoir effectué l’action qui a envoyé le message de contrôle (par exemple, lorsque vous démarrez l’orchestration par lot).
Les étapes suivantes se produisent quand vous démarrez une orchestration par lots :
Lorsque 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.
L’adaptateur SQL associé au batchControlMessageRecvLoc reçoit des sondages d’emplacement pour voir si l’enregistrement existe dans la base de données.
Si l’enregistrement existe, l’adaptateur SQL génère un message de contrôle à l’aide d’informations dans l’enregistrement.
Remarque
La création 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.
L’emplacement de réception BatchControlMessageRecvLoc reçoit le message de contrôle et BizTalk Server active une instance d’orchestration par lot.
Composants de Lot
BizTalk Server EDI traite les ensembles de transactions XML dans des échanges EDI à l’aide des composants suivants :
BatchMarkerReceivePipelineComponent dans le pipeline de réception EDI
Orchestration de routage
Orchestration par lots
Mettre à niveau l’orchestration par lots
Orchestration de suspension par lot
Pipeline d’envoi EDI
Ces composants sont installés en tant que DLL lorsque vous installez et configurez BizTalk Server EDI et AS2.
Remarque
Les composants de traitement par lots dans BizTalk Server EDI et AS2 ne garantissent pas l’ordre des jeux de transactions dans un lot.
ComposantPipelineRéceptionMarqueurLot
BatchMarkerReceivePipelineComponent dans le pipeline de réception EDI permet à l’orchestration de traitement par lots de récupérer les messages à traiter 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 lot de l'onglet Propriétés de l'Accord unidirectionnel de la boîte de dialogue Accord, et marque les ensembles de transactions avec les propriétés de contexte suivantes pour le traitement par les orchestrations de routage et de regroupement par lot.
Si un seul tiers s’abonne à un message à traiter par lot, il promeut
ToBeBatched = True
et BatchId est défini sur la valeur de l’ID de lot de la configuration de lot correspondante. Cela permet la collecte par l’orchestration par lots.Si plusieurs segments de traitement par lots s’abonnent à un message à traiter, il promeut
ToBeRouted = True
et définit la propriétéEDI.BatchIds
sur une liste d'ID de lots délimitée par des espaces. Cela permet la prise en charge par le routage d'orchestration.Si aucun abonnement n’existe, il ne promeut pas une propriété de contexte. Cela indique que le jeu de transactions ne doit pas être traité par lots.
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 lots, 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 lots, 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é, plutôt que le 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 devez promouvoir
ToBeBatched = True
etBatchID
à l’ID d’un lot actif dans l’un de vos composants.
Orchestration de routage
L'orchestration de routage s'abonne à tout message avec la propriété de contexte ToBeRouted = True
et la propriété de contexte EDI.BatchIds
définie sur une liste des identifiants de lot délimitée par des espaces. Cela se produit lorsque plusieurs filtres de traitement par lots s’abonnent à un message à traiter par lot. L’orchestration de routage effectue une copie du message pour chaque ID de lot contenu dans EDI.BatchIds
. Il marque chaque copie avec deux nouvelles propriétés de contexte :
EDI.BatchID
, qui est défini sur l’ID du lot pour lequel ce message est destiné.EDI.ToBeBatched
, qui a la valeur True.Il route ensuite les copies vers le MessageBox pour qu’elles soient récupérées par l'orchestration par lots. 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 par lots
L'orchestration par lots est un service à état qui met en mémoire tampon les éléments de lot (jeux de transactions) sur une période donnée, les assemble dans un échange, puis libère l'échange vers le pipeline d'envoi selon les critères de libération.
Après avoir été activée, une instance de l’orchestration de traitement par lots peut démarrer le traitement par lot de messages d’un type d’encodage particulier vers une partie donnée (si la date de début est passée). À tout moment, il peut exister de nombreuses instances d'orchestration par lots pour chaque partie, une par configuration active de lot. Une seule instance de l’orchestration de traitement par lots peut libérer plusieurs lots pour une configuration de lot unique. Une fois les critères de fin remplis, l’instance d’orchestration par lot sera terminée. Une nouvelle instance de l’orchestration de traitement par lots doit être créée manuellement à partir du module TPM (Trading Partner Management) à l’aide du bouton Démarrer .
Si l’orchestration par lots commence avant l’heure de début indiquée dans la section Activation de la page Configuration par lot de l’onglet Contrat unidirectionnel de la boîte de dialogue Propriétés du contrat , il ne reçoit que les messages spécifiés dans la plage d’activation. Il ne recevra pas les messages envoyés avant l’heure de début.
L’orchestration par lots effectue les opérations suivantes :
S'abonne aux éléments de lot XML avec les propriétés
EDI.ToBeBatched = True
etEDI.BatchId
qui représentent l'ID de la configuration du lot, ouEDI.ToBeBatched = True
et EDI.BatchName = le nom du lot configuré et EDI.DestinationPartyName = le nom de la partie qui contient la configuration du lot. Il reçoit des éléments de lot dans une boucle en utilisant une opération Receive.Remarque
L’orchestration par lot ne regroupe pas les ensembles de transactions en fonction des critères de filtrage définis dans la section Filtre de la page Configuration par lot de l'onglet Accord unidirectionnel de la boîte de dialogue Propriétés de l’accord. Il s’abonne aux jeux de transactions dont 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 dans les propriétés de partie.
Récupère les paramètres de configuration par lot pour la partie identifiée dans la propriété de contexte
BatchId
.Valide l’élément batch (jeu de transactions) en fonction des paramètres tiers.
En cas d’erreur dans un élément batch, l’orchestration de traitement par lots a promu 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é mise en avant. Cette orchestration fournit des informations détaillées sur les erreurs pour la première erreur rencontrée lors du traitement par lot de l’échange.S'il n'y a pas d'erreur dans un élément de lot, contient 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 libération par lot sont remplis, s'arrête dans la boucle d'action Receive, récupère tous les éléments de lot à partir de la boîte de messages et assemble l'interchange.
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é.Remarque
Si un port d’envoi s’abonne à l’une ou l’autre des propriétés
EDI.ToBeBatched = False
et edi. DestinationPartyName = %PartyName%, ce port d’envoi peut récupérer l’échange par lots. Assurez-vous que les filtres d’un port d’envoi sont configurés afin que le port d’envoi récupère uniquement les échanges par lots qu’il est destiné à récupérer.Remarque
Les échanges supprimés par l’orchestration de regroupement dans le MessageBox n’ont que les propriétés
EDI.ToBeBatched = False
, EDI.DestinationPartyName = %PartyName%et EDI.BatchEncodingType = « X12 » ou « EDIFACT » qui sont promues dans le contexte. Toutes les propriétés de contexte des jeux de transactions d’origine sont perdues.Pour un échange encodé X12, applique les propriétés suivantes à l’enveloppe :
ISA6 : Identifiant de l'expéditeur de l'échange
ISA8 : ID de récepteur d’échange
ISA15 : Indicateur d’utilisation
ISA_Blob (écrit dans le contexte)
Pour un échange encodé EDIFACT, applique les propriétés suivantes à l’enveloppe :
UNB2.1 : ID d’expéditeur de l’échange
UNB3.1 : ID de destinataire de l’échange
UNB2.3 : Adresse pour le routage inverse
UNB11 : Indicateur d’utilisation
UNA_Blob (écrit dans le contexte)
UNB_Blob (écrit dans le contexte)
Livre l'échange par lots à la MessageBox pour qu'il soit récupéré par le pipeline de transmission EDI.
Orchestration du regroupement de mises à niveau
L’orchestration UpgradeBatching gère les messages dont la propriété EDI.ToBeBatched
est définie sur true, mais qui n'ont pas la propriété EDI.BatchID
définie.
Dans les versions précédentes de BizTalk Server, chaque partie ne peut avoir qu’une seule configuration par lots. Lors du traitement des messages dont la valeur EDI.ToBeBatched
était définie sur true, EDI.DestinationPartyId
a été utilisé pour déterminer la partie, puis la configuration du lot a été lue à partir des propriétés du contrat.
Dans BizTalk Server, chaque partie peut avoir plusieurs configurations de lot associées, donc le EDI.DestinationPartyId
ne fournit pas suffisamment d’informations pour déterminer quelle configuration de lot doit être utilisée. 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 de partie. Lorsqu'un message est reçu avec EDI.ToBeBatched
défini sur true et avec EDI.DestinationPartyID
défini à la place de EDI.BatchID, l'orchestration UpgradeBatching tente de déterminer quelle configuration de lot doit être utilisée.
L’orchestration UpgradeBatching utilise les filtres d’abonnement suivants pour s’abonner aux documents marqués pour le traitement par lots, mais ne spécifiez pas d’ID de lot :
EDI.ToBeBatched=True
EDI.EncodingType
existeEDI.DestinationPartyId
existeLorsque l’orchestration reçoit un message, il tente de trouver une configuration de lot correspondante pour le message à l’aide du nom de partie et du type d’encodage. La propriété
EDI.DestinationPartyID
est utilisée pour déterminer le PartyName, puis l’orchestration recherche un nom de lot qui correspond à <PartyName>+<EncodingType>+Default. Par exemple, si le nom de l'entité est Contoso et que la valeur deEDI.EncodingType
est X12, l'orchestration recherchera un lot nommé ContosoX12Default.Si une configuration de lot correspondante est trouvée, le message est placé dans la boîte de messages avec les propriétés suivantes :
EDI.ToBeBatched = True
EDI.ToBeRouted = False
EDI. BatchId = l’ID de lot pour le lot correspondant
L’orchestration par lots traite ensuite le message
Remarque
Si aucun lot correspondant n’est trouvé, les éléments suivants se produisent :
- Le message ne sera pas envoyé à l’orchestration de BatchSuspend.
- L’instance d’orchestration "UpgradeBatching" ainsi que son message seront suspendus.
- Une erreur est enregistrée dans le journal des événements indiquant qu’un lot n’a pas été trouvé.
Orchestration de suspension par lot
L'orchestration BatchSuspend gère les messages non valides reçus par l'orchestration de traitement par lot. L’orchestration BatchSuspend est nécessaire, car il n’existe aucun moyen direct de suspendre un message d’une orchestration (dans ce cas, l’orchestration par lot) sans arrêter l’exécution de l’instance de l’orchestration.
Lorsqu’une instance de l’orchestration par lot reçoit un message, elle tente de la valider. Si le message échoue lors de la validation, l’orchestration de traitement par lots crée une instance de l’orchestration BatchSuspend et configure la propriété de contexte EDI.BatchItemValidationFailure
sur True. L’orchestration BatchSuspend s’abonne à tous les messages dont la propriété de contexte est définie sur True. Après que le jeu de transactions non valides ait été routé vers l'orchestration BatchSuspend, l'instance d'orchestration BatchSuspend est suspendue.
Les informations détaillées sur la première erreur rencontrée sont fournies par l'orchestration BatchSuspend.
Vous pouvez créer une orchestration personnalisée pour gérer les jeux de transactions qui échouent lors de la validation par l'orchestration de regroupement, en utilisant la propriété EDI.BatchElementValidationFailure
dans un filtre.
Pipeline d’envoi EDI
Après avoir reçu un échange par lots à partir de l’orchestration de traitement par lots, le pipeline d’envoi EDI effectue les opérations suivantes :
Pour un échange encodé X12, le pipeline d’envoi 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 d’échange
GS4 : Date
GS5 : Heure
GS6 : Numéro de contrôle de groupe
ST2: Numéro de contrôle de l'ensemble de transactions
Pour un échange encodé EDIFACT, le pipeline d’envoi applique les propriétés suivantes à l’enveloppe :
UNB4.1 : Date
UNB4.2 : Heure
UNB5 : Informations de référence sur le contrôle des échanges
UNB6.1 : Mot de passe de référence du destinataire
UNG4.1 : Date
UNG4.2 : Heure
UNG5 : Informations de référence sur les groupes fonctionnels
UNG8 : Mot de passe de l’application
Remet le message via l’adaptateur associé