Procedura dettagliata: Disassembly di file flat tramite un'intestazione e un trailer
Panoramica
In questa procedura dettagliata viene illustrato l'utilizzo degli schemi creati mediante la Procedura guidata Schema file flat per eseguire il disassemblaggio di file flat per un file contenente un'intestazione, una pagina di riepilogo e un corpo del messaggio ripetuto. Viene inoltre sviluppata parte di un sistema fittizio di rilevamento degli errori che soddisfa i requisiti seguenti:
I messaggi di errore vengono registrati in varie posizioni fisiche all'interno della società e inviati a una posizione centrale per essere elaborati in diversi sistemi back-end.
I messaggi di errore vengono scritti in un formato file flat contenente un'intestazione che indica la posizione, un corpo contenente uno o più messaggi di errore e una pagina di riepilogo che indica il numero di batch.
I messaggi non vengono considerati validi se non presentano un'intestazione, un corpo e una pagina di riepilogo.
Al termine della procedura dettagliata, i file flat verranno elaborati da un'applicazione BizTalk Server e scritti come XML in modo che possano essere elaborati da un sistema back-end.
Prerequisiti
Per l'esempio specifico è necessaria dimestichezza nella creazione di progetti BizTalk Server, nella firma di un assembly e nell'utilizzo della console Amministrazione BizTalk Server per la visualizzazione di applicazioni e porte. Dovresti anche essere comodo con le idee presentate in Procedura dettagliata: Distribuzione di un'applicazione BizTalk di base. Può infine risultare utile, anche se non indispensabile, una familiarità con le nozioni di base relative alla Procedura guidata Schema file flat.
Scopo dell'esempio
In questo esempio vengono elaborati i messaggi in formato file flat in ingresso mediante una pipeline personalizzata e il componente del disassembler del file flat. I messaggi vengono esaminati mediante gli schemi di intestazione, pagina di riepilogo e corpo, quindi vengono scritti in un indirizzo di trasmissione per essere poi sottoposti a elaborazione back-end.
Esempio
Per creare l'esempio, attenersi alle procedure indicate nelle sezioni che seguono.
Creazione di un nuovo progetto BizTalk
Prima di creare una soluzione, è necessario creare un progetto BizTalk, verificare che presenti un nome sicuro e assegnargli un nome applicazione. L'assegnazione di un nome applicazione impedisce la distribuzione della soluzione nell'applicazione BizTalk predefinita.
Usare Visual Studio per creare un nuovo progetto BizTalk. Chiamare il progetto FFDisassemblerWalk through.
Generare un file di chiavi e assegnarlo al progetto. Per altre informazioni su questa attività, vedere Pagina di firma, Progetto Designer.
Nelle proprietà di distribuzione per il progetto impostare Nome applicazione su "FlatFileExample" e impostare Riavvia istanze host su
True
. L'impostazione di questo flag indica all'host di cancellare eventuali istanze dell'assembly memorizzate nella cache.
Creazione del file di dati di esempio
Prima di generare gli schemi, è necessario creare un file di test.
Avviare Blocco note o un altro editor di testo.
Creare un file di test di esempio. Il file è composto da un'intestazione che indica la posizione di segnalazione degli errori, una pagina di riepilogo contenente l'ID batch per il batch specifico e un corpo formato da uno o più record di errori. Di seguito è riportato il formato del file.
Location ERRORid|type|priority|description|errorDateTime …additional error records BatchID
Il record ERROR è contrassegnato dal tag "ERROR" e delimitato dal carattere "|", a differenza dei record posizionali. Nella tabella che segue vengono illustrati gli elementi di dati del record ERROR.
Elemento Tipo di dati Descrizione ID numero intero ID dell'errore. Tipo numero intero Tipo di errore. Priorità string Indicatore di priorità: basso, medio o alto. Descrizione string Descrizione dell'errore. ErrorDateTime Datetime Data e ora in cui si è verificato l'errore. Il file può presentare uno o più record ERROR.
--O--
Copiare i dati di esempio seguenti nel nuovo file. L'ultima riga contiene una linea finale:
East Coast Facility ERROR102|0|High|Sprocket query fails.|1999-05-31T13:20:00.000-05:00 ERROR16502|2|Low|Time threshold exceeded.|1999-05-31T13:20:00.000-05:00 8675309
Salvare il nuovo file di esempio nella directory del progetto. Utilizzare un nome descrittivo come "ErrorFile.txt" in modo da facilitarne l'individuazione.
Creazione e test degli schemi di intestazione, pagina di riepilogo e corpo
Una volta creato il file di dati di esempio, il passaggio successivo consiste nella creazione degli schemi di intestazione, pagina di riepilogo e corpo. Questi schemi vengono utilizzati con il componente della pipeline di ricezione del disassembler del file flat per l'elaborazione dei messaggi ricevuti.
Usare la Procedura guidata schema file flat per creare lo schema di intestazione
Aggiungere un nuovo schema al progetto. In Esplora soluzioni fare clic con il pulsante destro del mouse su FFDisassemblerWalk through, scegliere Aggiungi e quindi fare clic su Nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento fare clic su File schema e selezionare Creazione guidata schema file flat. Assegnare un nome al nuovo schema "Header.xsd" e quindi fare clic su Aggiungi.
Nella pagina Creazione guidata schema file BizTalk flat fare clic su Avanti.
Nella pagina Informazioni schema file flat fare clic su Sfoglia e individuare il file di dati di esempio creato in precedenza. Modificare il nome record in "Intestazione", verificare la tabella codici e quindi fare clic su Avanti.
Nota
Se il file di esempio è stato salvato in formato Unicode, la tabella codici sarà Little-Endian-UTF16 (1200). Ciò non inciderà negativamente sull'esempio.
A questo punto selezionare i dati del documento. Nella pagina Seleziona dati documento evidenziare la prima riga di dati, inclusi i caratteri di nuova riga {CR} e {LF} come illustrato:
Fare clic su Avanti.
Nella pagina Seleziona formato record fare clic su Avanti per accettare l'impostazione predefinita. È possibile accettare l'impostazione predefinita "Mediante simbolo delimitatore" dal momento che il file di dati non utilizza posizioni relative.
Nella pagina Record delimitato fare clic su Avanti.
È ora possibile specificare gli elementi figlio. L'intestazione contiene un elemento denominato "Location":
Fare clic su Avanti per continuare.
Nella pagina Visualizzazione schema verificare lo schema.
Quando si è soddisfatti, fare clic su Fine per completare la procedura guidata.
Fare clic sul <nodo Schema nel riquadro Schema> intestazione. Nel riquadro Proprietà modificare Elemento FormDefault in Qualificato. Ciò indica che gli elementi dichiarati in locale devono essere qualificati dallo spazio dei nomi di destinazione in un documento dell'istanza.
Usare la procedura guidata schema file flat per creare lo schema trailer
Aggiungere un nuovo schema al progetto. In Esplora soluzioni fare clic con il pulsante destro del mouse su FFDisassemblerWalk through, scegliere Aggiungi e quindi fare clic su Nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento fare clic su File schema e selezionare Creazione guidata schema file flat. Assegnare al nuovo schema il nome "Trailer.xsd" e quindi fare clic su Aggiungi.
Nella pagina Creazione guidata schema file BizTalk flat fare clic su Avanti.
Nella pagina Informazioni schema file flat fare clic su Sfoglia e individuare il file di dati di esempio creato in precedenza. Modificare il nome record in "Trailer", verificare la tabella codici e quindi fare clic su Avanti.
Nota
Se il file di esempio è stato salvato in formato Unicode, la tabella codici sarà Little-Endian-UTF16 (1200). Ciò non inciderà negativamente sull'esempio.
A questo punto selezionare i dati del documento. Nella pagina Seleziona dati documento evidenziare l'ultima riga di dati, inclusi i caratteri di nuova riga {CR} e {LF} come illustrato:
Fare clic su Avanti.
Nella pagina Seleziona formato record fare clic su Avanti per accettare l'impostazione predefinita. È possibile accettare l'impostazione predefinita "Mediante simbolo delimitatore" dal momento che il file di dati non utilizza posizioni relative.
Nella pagina Record delimitato fare clic su Avanti.
È ora possibile specificare gli elementi figlio. L'intestazione contiene un elemento denominato "BatchID":
Fare clic su Avanti per continuare.
Nella pagina Visualizzazione schema verificare lo schema.
Quando si è soddisfatti, fare clic su Fine per completare la procedura guidata.
Fare clic sul <nodo Schema> nel riquadro Schema trailer. Nel riquadro Proprietà modificare elementFormDefault in Qualificato. Ciò indica che gli elementi dichiarati in locale devono essere qualificati dallo spazio dei nomi di destinazione in un documento dell'istanza.
Usare la Procedura guidata schema file flat per creare lo schema del corpo
Aggiungere un nuovo schema al progetto. In Esplora soluzioni fare clic con il pulsante destro del mouse su FFDisassemblerWalk through, scegliere Aggiungi e quindi fare clic su Nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento fare clic su File schema e selezionare Creazione guidata schema file flat. Assegnare al nuovo schema il nome "Body.xsd" e quindi fare clic su Aggiungi.
Nella pagina Creazione guidata schema file BizTalk flat fare clic su Avanti.
Nella pagina Informazioni schema file flat fare clic su Sfoglia e individuare il file di dati di esempio creato in precedenza. Modificare il nome record in "Corpo", verificare la tabella codici e quindi fare clic su Avanti.
Nota
Se il file di esempio è stato salvato in formato Unicode, la tabella codici sarà Little-Endian-UTF16 (1200). Ciò non inciderà negativamente sull'esempio.
A questo punto selezionare i dati del documento. Nella pagina Seleziona dati documento evidenziare le righe due e tre dei dati, inclusi i caratteri di nuova riga {CR} e {LF} come illustrato di seguito:
Fare clic su Avanti.
Nella pagina Seleziona formato record fare clic su Avanti per accettare l'impostazione predefinita. È possibile accettare l'impostazione predefinita "Mediante simbolo delimitatore" dal momento che il file di dati non utilizza posizioni relative.
Nella pagina Record delimitato selezionare Avanti.
A questo punto è possibile definire gli elementi figlio. Modificare Body_Child1 in Errore impostare il tipo di elemento su Ripeti record. Impostare il tipo di record dell'elemento Body_Child2 su Ignora.
Nella pagina Visualizzazione schema fare clic su Avanti per definire gli elementi figlio del record di errore.
Nella pagina Seleziona dati documento fare clic su Avanti. La procedura guidata consente di scegliere correttamente i dati per la definizione dei record.
Nella pagina Seleziona formato record fare clic su Avanti. I dati vengono formattati mediante il simbolo del delimitatore.
Nella pagina Record delimitato selezionare | per il delimitatore figlio. Selezionare quindi la casella di controllo Record ha un identificatore di tag e digitare ERROR per il valore del tag.
Fare clic su Avanti.
È ora possibile definire gli elementi figlio del record Error.
Fare clic su Avanti.
Nella pagina Visualizzazione schema verificare lo schema.
Se si sono fatti errori, fare clic su Indietro e apportare le correzioni necessarie. Quando si è soddisfatti, fare clic su Fine per completare la procedura guidata.
Fare clic sul <nodo Schema nel riquadro Schema> corpo. Nel riquadro Proprietà modificare Elemento FormDefault in Qualificato. Ciò indica che gli elementi dichiarati in locale devono essere qualificati dallo spazio dei nomi di destinazione in un documento dell'istanza.
Fare clic sul <nodo Errore> nel riquadro Schema corpo. Nel riquadro Proprietà modificare Max Si verifica su 1. In questo modo il disassembler del file flat determina la suddivisione di ogni errore nel relativo messaggio.
Testare gli schemi usando FFDasm
Aprire un prompt dei comandi e passare alla directory del progetto.
Dal prompt dei comandi eseguire FFDasm.exe come illustrato di seguito.
<Samples Path>\SDK\Utilities\PipelineTools\FFDasm ErrorFile.txt -hs header.xsd -bs body.xsd -ts Trailer.xsd
Per informazioni sulla posizione di questo e altri strumenti della pipeline, vedere Strumenti di pipeline.
FFDasm.exe dovrebbe produrre due file di output denominati {GUID}.xml, uno per ogni record ERROR del file di test. Il record di errore con priorità alta sarà simile al seguente:
<Body xmlns="http://FFDisassemblerWalkthrough.Body"> <Error> <ID>102</ID> <Type>0</Type> <Priority>High</Priority> <Description>Sprocket query fails.</Description> <DateTime>1999-05-31T13:20:00.000-05:00</DateTime> </Error> </Body>
Creazione di una pipeline di ricezione personalizzata
Una volta definiti gli schemi del file flat, è necessario creare una pipeline personalizzata che utilizzi il componente del disassembler del file flat. Tale componente può essere configurato per utilizzare gli schemi di intestazione, corpo e pagina di riepilogo per la suddivisione dei messaggi.
Aggiungere una nuova pipeline di ricezione al progetto. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto FFDisassemblerWalk through, scegliere Aggiungi e quindi fare clic su Nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento scegliere File della pipeline e quindi fare clic su Ricezione pipeline. Assegnare un nome alla nuova pipeline "FFReceivePipeline" e quindi fare clic su Aggiungi.
Per configurare la nuova pipeline è possibile trascinare il componente del disassembler del file flat dal riquadro Casella degli strumenti nel passaggio Disassembla.
Nel riquadro Proprietà impostare lo schema del documento su FFDisassemblerWalk through.Body, lo schema intestazione su FFDisassemblerWalk through.Header e lo schema Trailer su FFDisassemblerWalk through.Trailer.
Distribuzione dell'applicazione e configurazione delle porte di invio e ricezione
Con gli schemi e la pipeline di ricezione personalizzata creati, è necessario compilare e distribuire il progetto. Una volta distribuito, è possibile utilizzare la Console di amministrazione BizTalk Server per configurare le porte di invio e ricezione.
Distribuisci
Da Visual Studio distribuire la soluzione facendo clic con il pulsante destro del mouse sul progetto e quindi facendo clic su Distribuisci.
Usando la console di amministrazione di BizTalk Server, espandere il gruppo Applicazioni per verificare che FlatFileExample sia presente come applicazione personalizzata.
Configurare la porta di ricezione
Usare Esplora risorse per creare una directory denominata "Ricezione" nella directory del progetto FFDisassemblerWalk through .
Nella console di amministrazione BizTalk Server espandere l'applicazione FlatFileExample, fare clic con il pulsante destro del mouse su Porte di ricezione, scegliere Nuovo e quindi fare clic su Porta di ricezione unidirezionale.
Nella finestra di dialogo Proprietà porta di ricezione impostare il nome della porta su "ReceiveError".
Fare clic su Posizioni di ricezione e quindi su Nuovo per aggiungere un percorso di ricezione. Assegnare al nuovo indirizzo di ricezione il nome "ReceiveErrorLocation". Impostare la pipeline di ricezione su FFReceivePipeline. Per Tipo di trasporto selezionare FILE e quindi fare clic su Configura. Selezionare la directory di ricezione creata e quindi impostare La maschera file su *.txt.
Fare clic su OK. A questo punto la porta di ricezione risulta configurata. Fare clic su OK per chiudere.
Configurare la porta di invio
Usare Esplora risorse per creare una directory denominata "Send" nella directory del progetto FFDisassemblerWalk through .
Nella console di amministrazione BizTalk Server espandere l'applicazione FlatFileExample, fare clic con il pulsante destro del mouse su Invia porte, scegliere Nuovo e quindi fare clic su Statico One-Way Porta di invio....
Nella finestra di dialogo Proprietà porta di invio impostare il nome della porta su "Invia".
Per il tipo di trasporto selezionare FILE e quindi fare clic su Configura. Impostare la cartella di destinazione sulla directory di trasmissione creata in precedenza.
A questo punto è possibile configurare il filtro. Fare clic su Filtri e aggiungere un'espressione:
- BTS. MessageType ==
http://FFDisassemblerWalkthrough.Body#Body
- BTS. MessageType ==
Fare clic su OK per completare la configurazione della porta di trasmissione. A questo punto la porta di trasmissione risulta configurata.
Esecuzione dell'esempio
È ora possibile eseguire l'esempio. Dopo aver usato la console di gestione di BizTalk Server per avviare l'applicazione, copiare i file di test nel percorso di ricezione e osservare cosa viene prodotto nel percorso di invio.
Nella console di amministrazione di BizTalk Server fare clic con il pulsante destro del mouse sull'applicazione FlatFileExample e quindi scegliere Avvia. In questo modo vengono inserite le porte di invio e ricezione.
Rilasciare la copia del file di esempio Errorfile.txt nella directory di ricezione. I due file di output verranno scritti nella directory di trasmissione.