Condividi tramite


Assemblaggio di un interscambio EDI in batch

Per assemblare singoli elementi batch di set di transazioni in un interscambio EDI, BizTalk Server EDI e AS2 esegue le operazioni seguenti:

  • Identifica gli elementi batch per l'invio in batch.

  • Convalida e memorizza nel buffer i singoli elementi del batch al momento della ricezione.

  • Recupero di specifici elementi batch e assemblaggio di un interscambio in modalità batch quando vengono soddisfatti i criteri di rilascio.

    L'ora di inizio per la raccolta di singoli messaggi da inserire in un batch è determinata dai criteri di attivazione del batch. L'ora in cui il batch viene rilasciato è determinata dai criteri di rilascio del batch. Per altre informazioni su questi due set di criteri, vedere Configurazione di un batch in uscita.

Flusso per i messaggi in modalità batch in uscita

Quando BizTalk Server è configurato per eseguire il batch di un messaggio in uscita, i componenti BizTalk Server eseguiranno le seguenti serie di passaggi per preparare il messaggio in batch per l'invio. In questa serie di passaggi viene descritto il caso in cui la pipeline EDIReceive con il componente della pipeline BatchMarker elabora gli interscambi ricevuti che contengono set di transazioni da inserire in un batch per l'invio.

  1. Il componente della pipeline BatchMarker nella pipeline EDIReceive determina i messaggi che è necessario inserire in un batch in base alle impostazioni del filtro batch EDI delle proprietà dell'entità (questo è l'unico componente batch che esamina le impostazioni del filtro batch e agisce su di esse).

  2. Se le impostazioni del filtro di una sola configurazione batch sottoscrivono un messaggio, il componente BatchMarker promuoverà la proprietà EDI.ToBeBatched = True. In tal modo viene assicurato il prelievo del messaggio da parte dell'orchestrazione batch.

  3. Se le impostazioni del filtro di più di una configurazione batch corrispondono al contesto di un messaggio, il componente BatchMarker promuove le proprietà EDI.ToBeRouted = True e imposta la EDI.BatchIds proprietà su un elenco delimitato di spazio contenente gli ID batch corrispondenti. In tal modo viene assicurata la sottoscrizione del messaggio da parte dell'orchestrazione batch.

    Nota

    È possibile alzare il livello delle proprietà di contesto appropriate in una pipeline di ricezione personalizzata o in un'orchestrazione personalizzata. La pipeline di ricezione personalizzata può usare il componente della pipeline BatchMarker oppure alzare il livello delle proprietà senza usare il componente.

  4. L'orchestrazione di routing seleziona qualsiasi set di transazioni per cui EDI.ToBeRouted = True viene promosso e EDI.BatchIds quindi crea copie del set di transazioni, assicurandosi che sia presente una copia per ogni ID batch contenuto in EDI.BatchIds. Il set EDI.ToBeBatched = True di orchestrazione di routing e EDI.BatchId viene impostato sull'ID batch della configurazione batch corrispondente per ogni copia del set di transazioni. In tal modo viene assicurato il prelievo dei set di transazioni da parte dell'orchestrazione batch per l'inserimento nel batch.

  5. L'orchestrazione batch preleva tutti i messaggi per i quali le seguenti proprietà sono state alzate di livello:

    • EDI.ToBeBatched = True ed EDI.BatchId = ID del batch associato all'istanza corrente dell'orchestrazione batch.

    • EDI.ToBeBatched = True ed EDI.BatchName = nome del batch configurato ed EDI.DestinationPartyName = nome dell'entità che contiene la configurazione batch.

      Quando i messaggi in ingresso vengono elaborati dalla pipeline EDIReceive (con il componente della pipeline BatchMarker), l'orchestrazione batch inserirà nel batch solo i set di transazioni con codifica X12 o EDIFACT.

    Nota

    Sarà presente un'istanza di orchestrazione batch per ogni configurazione batch attiva, ciascuna delle quali sottoscrive un ID batch specifico. Il valore dell'ID batch viene impostato automaticamente quando si crea una nuova configurazione batch nella sezione Identificazione della pagina Configurazione batch della scheda contratto unidirezionale della finestra di dialogo Proprietà contratto .

  6. L'orchestrazione batch convalida ciascun set di transazioni da inserire in un batch. Se il set di transazioni ha esito negativo, imposta la EDI.BatchItemValidationFailure proprietà di contesto su "True". L'orchestrazione BatchSuspend seleziona il messaggio in base a tale proprietà di contesto, pubblica le informazioni sugli errori e quindi viene sospesa.

  7. Quando i criteri di rilascio del batch vengono soddisfatti, l'orchestrazione batch assembla gli elementi del batch in un batch e crea una busta.

  8. Una volta terminata l'operazione dell'orchestrazione batch su un interscambio, vengono alzate di livello le seguenti proprietà dell'interscambio: EDI.DestinationPartyName = %PartyName%, EDI.BatchEncodingType = X12 o EDIFACT e EDI.ToBeBatched = False.

  9. Una porta di invio seleziona i set di transazioni in batch basati su EDI. DestinationPartyName = <PartyName>, EDI. BatchEncodingType = EDIFACT o X12 e EDI. ToBeBatched = False.

Messaggi di controllo dell'orchestrazione batch

L'orchestrazione batch viene attivata, terminata o sottoposta a override dai seguenti messaggi di controllo:

  • BatchActivation: quando l'orchestrazione riceve questo messaggio, viene creata un'istanza dell'orchestrazione in batch e l'orchestrazione è attiva per ricevere elementi batch (se soddisfa i criteri di attivazione batch). Questo messaggio di controllo viene inviato facendo clic sul pulsante Start di una configurazione batch nella pagina Configurazione batch della scheda contratto unidirezionale della finestra di dialogo Proprietà contratto .

  • BatchTermination: quando l'orchestrazione riceve questo messaggio, crea un batch da elementi batch esistenti, pubblica il messaggio in MessageBox e termina. Questo messaggio di controllo viene inviato facendo clic sul pulsante Arresta di una configurazione batch nella pagina Configurazione batch della scheda contratto unidirezionale della finestra di dialogo Proprietà contratto .

    Nota

    L'orchestrazione viene terminata anche se raggiunge l'ora specificata per la proprietà End-by nella sezione Terminazione della pagina Configurazione batch della scheda contratto unidirezionale della finestra di dialogo Proprietà contratto .

  • BatchOverride: quando l'orchestrazione riceve questo messaggio, crea un batch da elementi esistenti, pubblica il messaggio in MessageBox e quindi attende i messaggi per il batch successivo. Questo messaggio di controllo viene inviato facendo clic sul pulsante Override di una configurazione batch nella pagina Configurazione batch della scheda contratto unidirezionale della finestra di dialogo Proprietà contratto .

    L'orchestrazione batch riceve i messaggi di controllo attraverso l'indirizzo di ricezione BatchControlMessageRecvLoc. L'intervallo di polling per questa posizione di ricezione SQL è impostato per impostazione predefinita su 30 secondi, ma può essere modificato nella finestra di dialogo Proprietà trasporto SQL per la posizione di ricezione. Se si riduce l'intervallo di polling, si assicura che l'indirizzo di ricezione BatchControlMessageRecvLoc riceva un messaggio di controllo subito dopo aver eseguito l'azione che ha inviato il messaggio di controllo, ad esempio quando si avvia l'orchestrazione batch.

    Quando si avvia un'orchestrazione batch, si effettuano le seguenti operazioni:

  1. Quando si fa clic sul pulsante Start, BizTalk Server crea un record in una tabella che indica quale parte e ID batch si sta attivando l'orchestrazione batch per.

  2. L'adapter SQL associato all'indirizzo di ricezione BatchControlMessageRecvLoc esegue il polling per verificare se il record è presente nel database.

  3. Se il record è presente, l'adapter SQL crea un messaggio di controllo usando le informazioni contenute nel record.

    Nota

    Questa modalità di creazione del messaggio di controllo assicura che l'orchestrazione non possa essere avviata da un messaggio di controllo non valido.

  4. Il percorso di ricezione batchControlMessageRecvLoc riceve il messaggio di controllo e BizTalk Server attiva un'istanza di orchestrazione in batch.

Componenti del batch

BizTalk Server EDI esegue il batch di set di transazioni XML negli interscambi EDI usando i componenti seguenti:

  • BatchMarkerReceivePipelineComponent nella pipeline di ricezione EDI

  • Orchestrazione di routing

  • Orchestrazione batch

  • Orchestrazione UpgradeBatching

  • Orchestrazione BatchSuspend

  • Pipeline di trasmissione EDI

    Questi componenti vengono installati come DLL quando si installano e si configurano BizTalk Server EDI e AS2.

Nota

I componenti in batch in BizTalk Server EDI e AS2 non garantiscono l'ordinamento dei set di transazioni in un batch.

BatchMarkerReceivePipelineComponent

BatchMarkerReceivePipelineComponent nella pipeline di ricezione EDI consente all'orchestrazione batch di prelevare i messaggi da inserire in un batch. Questo componente della pipeline è applicato dopo il Disassembler nella pipeline di ricezione EDI. Il componente valuta i criteri di filtro impostati nella sezione Filtro della pagina Configurazione batch della scheda contratto unidirezionale della finestra di dialogo Proprietà contratto e contrassegna i set di transazioni con le proprietà di contesto seguenti per l'elaborazione tramite il routing e l'esecuzione in batch di orchestrazioni

  • Se una singola parte sottoscrive un messaggio da eseguire in batch, promuove ToBeBatched = True e BatchId è impostato sul valore dell'ID batch della configurazione batch corrispondente. Ciò consente il prelevamento da parte dell'orchestrazione batch.

  • Se più batch sottoscrivono un messaggio da eseguire in batch, promuove ToBeRouted = Truee imposta la EDI.BatchIds proprietà impostata su un elenco delimitato dallo spazio degli ID batch. Ciò consente il prelevamento da parte dell'orchestrazione di routing.

  • Se non sono presenti sottoscrizioni, non viene alzato il livello di alcuna proprietà di contesto. Ciò indica che il set di transazioni non deve essere inserito in un batch.

    Il componente della pipeline ignora i messaggi diversi da XML e messaggi con la ReuseEnvelope proprietà (batch conservati). Se i riconoscimenti non devono essere inseriti nel batch, il componente della pipeline ignorerà i tipi di messaggi ACK (CONTRL, TA1 e 997). Per ottimizzare l'elaborazione delle orchestrazioni di routing e batch, BatchMarkerPipelineComponent passa il messaggio al MessageBox se la proprietà MessageDestination del contesto del messaggio è impostata su "SuspendedQueue" dal disassembler.

    Se si usa una pipeline personalizzata anziché la pipeline EDIReceive, è possibile usare il componente BatchMarker nella pipeline personalizzata. Se non si usa la pipeline EDIReceive e si pubblicano messaggi da un'orchestrazione, è necessario promuovere ToBeBatched = True e BatchID l'ID di un batch attivo in uno dei componenti.

Orchestrazione di routing

L'orchestrazione di routing sottoscrive qualsiasi messaggio con la proprietà di contesto e la proprietà ToBeRouted = TrueEDI.BatchIds di contesto impostata su un elenco delimitato dallo spazio degli ID batch. Ciò si verifica quando più filtri batch sottoscrivono un messaggio da inserire in un batch. L'orchestrazione di routing eseguirà una copia del messaggio per ogni ID batch contenuto in EDI.BatchIds. Ciascuna copia verrà contrassegnata con due nuove proprietà di contesto:

  • EDI.BatchID, impostata sull'ID del batch al quale è indirizzato il messaggio.

  • EDI.ToBeBatched, impostata su True.

    Le copie vengono quindi indirizzate a MessageBox affinché siano prelevate dall'orchestrazione batch. Ogni ID batch di destinazione usa un'istanza singleton della stessa orchestrazione, con un filtro sull'ID batch specifico.

Orchestrazione batch

L'orchestrazione batch è un servizio con stato che memorizza in un buffer gli elementi batch (set di transazioni) in un dato lasso di tempo, li assembla in un interscambio e rilascia quindi l'interscambio alla pipeline di trasmissione in base ai criteri di rilascio.

Dopo l'attivazione, un'istanza dell'orchestrazione in batch può avviare il batch di messaggi di un tipo di codifica specifico a una determinata parte (se la data di inizio è passata). In un dato momento possono essere presenti numerose istanze dell'orchestrazione batch per ciascuna entità, una per ogni configurazione batch attiva. Una singola istanza dell'orchestrazione batch può rilasciare più batch per una singola configurazione batch. Dopo aver soddisfatto i criteri di completamento, l'istanza di orchestrazione batch verrà interrotta. È necessario creare manualmente una nuova istanza dell'orchestrazione in batch dal TPM (Trading Partner Management) usando il pulsante Start .

Se l'orchestrazione batch viene avviata prima della data di inizio visualizzata nella sezione Attivazione della pagina Configurazione batch della scheda Contratto unidirezionale della finestra di dialogo Proprietà contratto , riceverà solo i messaggi specificati nell'intervallo di attivazione. e non quelli inviati prima della data/ora di inizio.

L'orchestrazione batch effettua le seguenti operazioni:

  • Sottoscrive gli elementi batch XML con le proprietà EDI.ToBeBatched = True di contesto e EDI.BatchId l'ID della configurazione batch o EDI.ToBeBatched = True EDI. BatchName = nome del batch configurato ed EDI. DestinationPartyName = nome della parte che contiene la configurazione batch. Riceve gli elementi batch usando un'operazione Di ricezione azione in un ciclo.

    Nota

    L'orchestrazione batch non imposta i set di transazioni batch in base ai criteri di filtro impostati nella sezione Filtro della pagina Configurazione batch della scheda Contratto unidirezionale della finestra di dialogo Proprietà contratto . Essa sottoscrive i set di transazioni per i quali sono state configurate le proprietà di contesto indicate in precedenza. Il componente della pipeline BatchMarker imposta e alza di livello tali proprietà di contesto in base alle impostazioni del filtro presenti nelle proprietà dell'entità.

  • Recupera le impostazioni di configurazione batch per l'entità identificata nella proprietà di BatchId contesto.

  • Convalida l'elemento del batch (set di transazioni) in base alle impostazioni dell'entità.

  • Se si verifica un errore in un elemento batch, l'orchestrazione batch promuoverà la proprietà seguente nel set di transazioni: EDI.BatchItemValidationFailure = True. L'orchestrazione BatchElementSuspend sottoscrive qualsiasi set di transazioni per il quale questa proprietà è stata alzata di livello. Questa orchestrazione fornirà informazioni dettagliate sul primo errore rilevato durante l'inserimento di batch nell'interscambio.

  • Se in un elemento di un batch non sono presenti errori, conserva un riferimento a tale elemento.

  • Quando viene ricevuto il messaggio di controllo appropriato o vengono soddisfatti i criteri di rilascio in batch, si interrompe il ciclo di azione Receive , recupera tutti gli elementi batch dal MessageBox e assembla l'interscambio.

  • Imposta la proprietà ToBeBatched = False di contesto per l'interscambio e la proprietà di contesto DestinationPartyName = %PartyName% dove %PartyName% è il nome dell'entità per cui è previsto il messaggio.

    Nota

    Se una porta di trasmissione sottoscrive una o entrambe le proprietà EDI.ToBeBatched = False ed EDI. DestinationPartyName = %PartyName%, che la porta di trasmissione può prelevare l'interscambio in batch. Assicurarsi che i filtri di una porta di trasmissione siano configurati in modo che la porta prelevi solo gli interscambi in batch previsti.

    Nota

    Gli interscambi eliminati dall'orchestrazione batch in MessageBox hanno solo le proprietà EDI.ToBeBatched = False, EDI. DestinationPartyName = %PartyName%e EDI. BatchEncodingType = "X12" o "EDIFACT" alzato di livello al contesto. Tutte le proprietà di contesto dei set di transazioni originali andranno perse.

  • Per un interscambio con codifica X12, applica le seguenti proprietà alla busta:

    • ISA6: ID mittente interscambio

    • ISA8: ID ricevitore interscambio

    • ISA15: Indicatore di utilizzo

    • ISA_Blob (scritto nel contesto)

  • Per un interscambio con codifica EDIFACT, applica le seguenti proprietà alla busta:

    • UNB2.1: ID mittente interscambio

    • UNB3.1: ID destinatario interscambio

    • UNB2.3: Indirizzo per il routing inverso

    • UNB11: Indicatore di utilizzo

    • UNA_Blob (scritto nel contesto)

    • UNB_Blob (scritto nel contesto)

  • Recapita l'interscambio in batch a MessageBox per il prelievo da parte della pipeline di trasmissione EDI.

Orchestrazione UpgradeBatching

L'orchestrazione UpgradeBatching gestisce i messaggi che hanno la EDI.ToBeBatched proprietà impostata su true, ma non hanno la EDI.BatchID proprietà impostata.

Nelle versioni precedenti di BizTalk Server, ogni parte potrebbe avere una sola configurazione batch. Durante l'elaborazione dei messaggi EDI.ToBeBatched impostati su true, è EDI.DestinationPartyId stato usato per determinare l'entità e quindi la configurazione batch è stata letta dalle proprietà del contratto.

In BizTalk Server, a ogni entità possono essere associate più configurazioni batch, pertanto non EDI.DestinationPartyId fornisce informazioni sufficienti per determinare quale configurazione batch deve essere usata. Quando BizTalk Server riceve messaggi, la EDI.BatchId proprietà viene usata per identificare quale configurazione batch specifica deve essere utilizzata durante l'elaborazione di un messaggio.

Dopo l'aggiornamento a BizTalk Server, potrebbero essere presenti pipeline personalizzate che usano la EDI.DestinationPartyId proprietà per specificare la configurazione dell'entità. Quando viene ricevuto un messaggio che ha EDI.ToBeBatched impostato su true e ha EDI.DestinationPartyID impostato invece di EDI. BatchID, l'orchestrazione UpgradeBatching tenta di determinare la configurazione batch da usare.

L'orchestrazione UpgradeBatching usa i seguenti filtri di sottoscrizione per sottoscrivere documenti contrassegnati per l'inserimento in un batch, ma che non specificano un ID batch:

  • EDI.ToBeBatched=True

  • EDI.EncodingType Esiste

  • EDI.DestinationPartyId Esiste

    Quando l'orchestrazione riceve un messaggio, tenta di trovare una configurazione batch corrispondente per il messaggio usando il nome dell'entità e il tipo di codifica. La EDI.DestinationPartyID proprietà viene usata per determinare il nome della parte e quindi l'orchestrazione cerca un nome batch corrispondente <a PartyName>+<EncodingType>+Default. Ad esempio, se il nome della entità è Contoso e il valore di EDI.EncodingType è X12, l'orchestrazione cercherà un batch denominato ContosoX12Default.

    Se viene trovata una configurazione batch corrispondente, il messaggio viene inserito nuovamente nella finestra del messaggio con le seguenti proprietà:

  • EDI.ToBeBatched = True

  • EDI.ToBeRouted = False

  • EDI.BatchId = ID batch del batch corrispondente

    L'orchestrazione batch elaborerà quindi il messaggio.

Nota

Se non vengono trovati batch corrispondenti, si verifica quanto segue:

  • Il messaggio non viene inviato all'orchestrazione BatchSuspend.
    • L'istanza di orchestrazione UpgradeBatching e il messaggio vengono sospesi.
    • Nel registro eventi viene registrato un messaggio per indicare che non sono stati trovati batch.

Orchestrazione BatchSuspend

L'orchestrazione BatchSuspend gestisce i messaggi non validi ricevuti dall'orchestrazione batch. L'orchestrazione BatchSuspend è necessaria poiché non esiste un modo diretto per sospendere un messaggio da un'orchestrazione (in questo caso, l'orchestrazione batch) senza interrompere l'esecuzione dell'istanza di orchestrazione.

Quando un'istanza di orchestrazione batch riceve un messaggio, cerca di convalidarlo. Se la convalida del messaggio non riesce, l'orchestrazione batch crea un'istanza dell'orchestrazione BatchSuspend e imposta la proprietà di EDI.BatchItemValidationFailure contesto su True. L'orchestrazione BatchSuspend sottoscrive tutti i messaggi con questa proprietà di contesto impostata su True. Una volta che il set di transazioni non valido è stato inviato all'orchestrazione BatchSuspend, l'istanza di questa'ultima viene sospesa.

L'orchestrazione BatchSuspend fornisce informazioni dettagliate sul primo errore rilevato.

È possibile creare un'orchestrazione personalizzata per gestire i set di transazioni che non superano la convalida tramite l'orchestrazione batch, usando la EDI.BatchElementValidationFailure proprietà in un filtro.

Pipeline di trasmissione EDI

Dopo aver ricevuto un interscambio in batch dall'orchestrazione batch, la pipeline di trasmissione EDI effettua le seguenti operazioni:

  • Per un interscambio con codifica X12, la pipeline di trasmissione applica le seguenti proprietà alla busta:

    • ISA2: informazioni di autorizzazione

    • ISA4: informazioni di sicurezza

    • ISA9: data interscambio

    • ISA10: ora interscambio

    • ISA13: numero di controllo interscambio

    • GS4: data

    • GS5: ora

    • GS6: numero di controllo gruppo

    • ST2: numero di controllo set transazioni

  • Per un interscambio con codifica EDIFACT, la pipeline di trasmissione applica le seguenti proprietà alla busta:

    • UNB4.1: data

    • UNB4.2: ora

    • UNB5: riferimento di controllo interscambio

    • UNB6.1: password di riferimento del destinatario

    • UNG4.1: data

    • UNG4.2: ora

    • UNG5: riferimento gruppo funzionale

    • UNG8: password applicazione

  • Trasmette il messaggio tramite l'adapter associato

Vedere anche

Invio in batch dei messaggi EDI in uscita