Procédure pas à pas : désassemblage de fichier plat à l'aide d'un en-tête et d'un code de fin
Vue d’ensemble
Cette procédure pas à pas illustre l'utilisation de schémas créés par l'Assistant Schéma de fichier plat pour effectuer le désassemblage de fichier plat d'un fichier contenant un en-tête, un code de fin et un corps de message répété. Lors de cette procédure pas à pas, vous développez en partie un système de suivi des erreurs fictif répondant aux conditions suivantes :
les messages d'erreur sont consignés dans divers sites physiques de l'entreprise, puis envoyés vers un emplacement central pour être traités par différents systèmes principaux ;
les messages d'erreur sont écrits dans un format de fichier plat qui comprend un en-tête indiquant l'emplacement, un corps contenant un ou plusieurs messages d'erreur et un code de fin indiquant le numéro du lot ;
les messages sont considérés comme non valides s'ils ne comportent ni en-tête, ni corps, ni code de fin.
Au terme de la procédure pas à pas, vous disposez d'une application BizTalk Server qui traite les fichiers plats et les convertit au format XML en vue de leur traitement par un système principal.
Prérequis
Cet exemple nécessite que vous soyez familiarisé avec la création de projets BizTalk, la signature d'un assembly et l'utilisation de la console Administration de BizTalk Server pour afficher les applications et les ports. Vous devez également vous familiariser avec les idées présentées dans Procédure pas à pas : déploiement d’une application BizTalk de base. Les notions de base de l'Assistant Schéma de fichier plat sont également utiles mais pas nécessaires.
Ce que fait cet exemple
Cet exemple traite des messages de fichier plat entrants à l'aide d'un pipeline personnalisé et du composant Désassembleur de fichier plat. Les messages sont analysés à l'aide de schémas d'en-tête, de code de fin et de corps, puis écrits dans un emplacement d'envoi en vue du traitement principal.
Exemple
Pour créer l'exemple, suivez les étapes présentées dans les sections ci-après.
Créer un projet BizTalk
Avant de concevoir une solution, vous devez créer un projet BizTalk, vous assurer qu'il porte un nom fort, puis lui attribuer un nom d'application. Attribuer un nom d'application empêche BizTalk Server de déployer la solution dans l'application BizTalk par défaut.
Utilisez Visual Studio pour créer un projet BizTalk. Appelez le projet FFDisassemblerWalkthrough.
Générez un fichier de clé et attribuez-le au projet. Pour plus d’informations sur cette tâche, consultez Page de signature, Project Designer.
Dans les propriétés de déploiement du projet, définissez Nom de l’application sur « FlatFileExample » et définissez Restart Host Instances sur
True
. La définition de cet indicateur indique à l'hôte d'effacer toutes les instances mises en cache de l'assembly.
Création du fichier de données exemple
Avant de générer des schémas, vous devez créer un fichier de test.
Lancez le Bloc-notes ou un autre éditeur de texte.
Créez un exemple de fichier de test. Ce fichier est composé d'un en-tête indiquant l'emplacement qui signale les erreurs, d'un code de fin accompagné de l'ID de ce lot et d'un corps consistant en un ou plusieurs enregistrements Error. Le format du fichier est le suivant :
Location ERRORid|type|priority|description|errorDateTime …additional error records BatchID
L'enregistrement ERROR est marqué avec le texte « ERROR » et délimité par le caractère « | » (et non pas positionnel). Les données qu'il contient sont décrites dans le tableau suivant.
Élément Type de données Description id entier ID de l'erreur Type entier Type d'erreur Priorité string Indicateur de priorité : Faible, Moyen ou Élevé. Description string Description de l'erreur. ErrorDateTime DateTime Date et heure auxquelles l'erreur s'est produite. Le fichier peut comporter un ou plusieurs enregistrements ERROR.
--OU--
Copiez les exemples de données suivants dans le nouveau fichier. La dernière ligne contient un flux de lignes de fin :
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
Enregistrez le nouveau fichier exemple dans le répertoire du projet. Nommez-le par exemple « ErrorFile.txt. ».
Création et test des schémas d'en-tête, de code de fin et de corps
Une fois le fichier de données exemple créé, l'étape suivante consiste à créer les schémas d'en-tête, de code de fin et de corps. Ces schémas sont utilisés avec le composant de pipeline Désassembleur de fichier plat pour traiter les messages reçus.
Utiliser l’Assistant Schéma de fichier plat pour créer le schéma d’en-tête
Ajoutez un nouveau schéma au projet. Dans Explorateur de solutions, cliquez avec le bouton droit sur FFDisassemblerWalkthrough, pointez sur Ajouter, puis cliquez sur Nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément , cliquez sur Fichiers de schéma , puis sélectionnez Assistant Schéma de fichier plat. Nommez le nouveau schéma « Header.xsd », puis cliquez sur Ajouter.
Dans la page Bienvenue dans l’Assistant Schéma de fichier plat BizTalk , cliquez sur Suivant.
Dans la page Informations sur le schéma de fichier plat , cliquez sur Parcourir et recherchez l’exemple de fichier de données créé précédemment. Remplacez le nom de l’enregistrement par « En-tête », vérifiez la page de codes, puis cliquez sur Suivant.
Notes
Si vous avez enregistré l'exemple de fichier au format Unicode, le format de la page de code est Little-Endian-UTF16 (1200). Ceci n'affecte pas l'exemple.
Sélectionnez ensuite les données du document. Dans la page Sélectionner des données de document , mettez en surbrillance la première ligne de données, y compris les caractères de nouvelle ligne {CR} et {LF} comme indiqué :
Cliquez sur Suivant.
Dans la page Sélectionner le format d’enregistrement , cliquez sur Suivant pour accepter la valeur par défaut. Vous pouvez accepter l'option « par symbole délimiteur » par défaut, car le fichier de données n'utilise pas de position relative.
Dans la page Enregistrement délimité , cliquez sur Suivant.
À présent, spécifiez les éléments enfants. L'en-tête contient un élément nommé « Location » :
Cliquez sur Suivant pour continuer.
Dans la page Vue du schéma , vérifiez le schéma.
Lorsque vous êtes satisfait, cliquez sur Terminer pour terminer l’Assistant.
Cliquez sur le <nœud Schéma> dans le volet Schéma d’en-tête. Dans le volet Propriétés, remplacez l’élément FormDefault par Qualifié. Vous indiquez ainsi que les éléments déclarés localement doivent être qualifiés par l'espace de noms cible dans un document d'instance.
Utiliser l’Assistant Schéma de fichier plat pour créer le schéma de bande-annonce
Ajoutez un nouveau schéma au projet. Dans Explorateur de solutions, cliquez avec le bouton droit sur FFDisassemblerWalkthrough, pointez sur Ajouter , puis cliquez sur Nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément , cliquez sur Fichiers de schéma , puis sélectionnez Assistant Schéma de fichier plat. Nommez le nouveau schéma « Trailer.xsd », puis cliquez sur Ajouter.
Dans la page Bienvenue dans l’Assistant Schéma de fichier plat BizTalk , cliquez sur Suivant.
Dans la page Informations sur le schéma de fichier plat , cliquez sur Parcourir et recherchez l’exemple de fichier de données créé précédemment. Remplacez le nom de l’enregistrement par « Bande-annonce », vérifiez la page de codes, puis cliquez sur Suivant.
Notes
Si vous avez enregistré l'exemple de fichier au format Unicode, le format de la page de code est Little-Endian-UTF16 (1200). Ceci n'affecte pas l'exemple.
Sélectionnez ensuite les données du document. Dans la page Sélectionner des données de document , mettez en surbrillance la dernière ligne de données, y compris les caractères de nouvelle ligne {CR} et {LF} comme indiqué :
Cliquez sur Suivant.
Dans la page Sélectionner le format d’enregistrement , cliquez sur Suivant pour accepter la valeur par défaut. Vous pouvez accepter l'option « par symbole délimiteur » par défaut, car le fichier de données n'utilise pas de position relative.
Dans la page Enregistrement délimité , cliquez sur Suivant.
À présent, spécifiez les éléments enfants. L'en-tête contient un élément nommé « BatchID » :
Cliquez sur Suivant pour continuer.
Dans la page Vue de schéma , vérifiez le schéma.
Lorsque vous êtes satisfait, cliquez sur Terminer pour terminer l’Assistant.
Cliquez sur le <nœud Schéma> dans le volet Schéma de la bande-annonce. Dans le volet Propriétés, remplacez elementFormDefault par Qualifié. Vous indiquez ainsi que les éléments déclarés localement doivent être qualifiés par l'espace de noms cible dans un document d'instance.
Utiliser l’Assistant Schéma de fichier plat pour créer le schéma de corps
Ajoutez un nouveau schéma au projet. Dans Explorateur de solutions, cliquez avec le bouton droit sur FFDisassemblerWalkthrough, pointez sur Ajouter, puis cliquez sur Nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément , cliquez sur Fichiers de schéma et sélectionnez Assistant Schéma de fichier plat. Nommez le nouveau schéma « Body.xsd », puis cliquez sur Ajouter.
Dans la page Bienvenue dans l’Assistant Schéma de fichier plat BizTalk , cliquez sur Suivant.
Dans la page Informations sur le schéma de fichier plat , cliquez sur Parcourir et recherchez l’exemple de fichier de données créé précédemment. Remplacez le nom de l’enregistrement par « Corps », vérifiez la page de code, puis cliquez sur Suivant.
Notes
Si vous avez enregistré l'exemple de fichier au format Unicode, le format de la page de code est Little-Endian-UTF16 (1200). Ceci n'affecte pas l'exemple.
Sélectionnez ensuite les données du document. Dans la page Sélectionner des données de document , mettez en surbrillance les lignes deux et trois des données, y compris les caractères de nouvelle ligne {CR} et {LF} comme indiqué :
Cliquez sur Suivant.
Dans la page Sélectionner le format d’enregistrement , cliquez sur Suivant pour accepter la valeur par défaut. Vous pouvez accepter l'option « par symbole délimiteur » par défaut, car le fichier de données n'utilise pas de position relative.
Dans la page Enregistrement délimité , sélectionnez Suivant.
Définissez ensuite les éléments enfants. Remplacez Body_Child1 par Erreuret définissez son type d’élément sur Enregistrement répétiteur. Définissez le type d’enregistrement d’élément Body_Child2sur Ignorer.
Dans la page Vue de schéma , cliquez sur Suivant pour définir les éléments enfants de l’enregistrement d’erreur.
Dans la page Sélectionner des données de document , cliquez sur Suivant. L'Assistant choisit les données de définition d'enregistrement correctement.
Dans la page Sélectionner le format d’enregistrement , cliquez sur Suivant. Les données sont formatées par symbole délimiteur.
Dans la page Enregistrement délimité , sélectionnez | le délimiteur enfant. Ensuite, sélectionnez la zone Record has a a tag identifier case activée et tapez ERROR pour la valeur de balise.
Cliquez sur Suivant.
Définissez à présent les éléments enfants de l'enregistrement Error.
Cliquez sur Suivant.
Dans la page Vue de schéma , vérifiez le schéma.
Si vous avez commis des erreurs, cliquez sur Précédent et apportez les corrections nécessaires. Lorsque vous êtes satisfait, cliquez sur Terminer pour terminer l’Assistant.
Cliquez sur le <nœud Schéma> dans le volet Schéma du corps. Dans le volet Propriétés, remplacez Élément FormDefault par Qualifié. Vous indiquez ainsi que les éléments déclarés localement doivent être qualifiés par l'espace de noms cible dans un document d'instance.
Cliquez sur le <nœud Erreur> dans le volet Schéma du corps. Dans le volet Propriétés, remplacez Max Occurs par1. Le désassembleur de fichier plat fractionne alors chaque erreur dans son propre message.
Tester les schémas à l’aide de FFDasm
Ouvrez une invite de commandes et remplacez le répertoire par celui de votre projet.
À l'invite de commandes, exécutez FFDasm.exe comme suit.
<Samples Path>\SDK\Utilities\PipelineTools\FFDasm ErrorFile.txt -hs header.xsd -bs body.xsd -ts Trailer.xsd
Pour plus d’informations sur l’emplacement de cet outil de pipeline et d’autres, consultez Outils de pipeline.
FFDasm.exe génère normalement deux fichiers de sortie nommés {GUID}.xml, un pour chaque enregistrement ERROR du fichier de test. L'enregistrement Error prioritaire se présente comme suit :
<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>
Création d'un pipeline de réception personnalisé
À présent que les schémas de fichier plat sont définis, vous devez créer un pipeline de réception personnalisé qui utilise le composant Désassembleur de fichier plat. Le composant Désassembleur de fichier plat peut ensuite être configuré pour utiliser les schémas d'en-tête, de corps et de code de fin afin de scinder les messages.
Ajoutez un nouveau pipeline de réception au projet. Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet FFDisassemblerWalkthrough, pointez sur Ajouter, puis cliquez sur Nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément , pointez sur Fichiers de pipeline , puis cliquez sur Pipeline de réception. Nommez le nouveau pipeline « FFReceivePipeline », puis cliquez sur Ajouter.
Configurez le nouveau pipeline en faisant glisser le composant Désassembleur de fichier plat du volet Boîte à outils vers l'étape Désassembler.
Dans le volet Propriétés, définissez le schéma du document sur FFDisassemblerWalkthrough.Body, le schéma d’en-têtesur FFDisassemblerWalkthrough.Header et le schéma de la bande-annoncesur FFDisassemblerWalkthrough.Trailer.
Déploiement de l'application et configuration des ports d'envoi et de réception
Une fois les schémas et le pipeline de réception personnalisé créés, vous devez compiler et déployer le projet. Lorsque le projet est déployé, vous pouvez utiliser la console Administration de BizTalk Server pour configurer les ports d'envoi et de réception.
Déployer
À partir de Visual Studio, déployez la solution en cliquant avec le bouton droit sur le projet, puis en cliquant sur Déployer.
À l’aide de la console Administration BizTalk Server, développez le groupe Applications pour vérifier que FlatFileExample est présent en tant qu’application personnalisée.
Configurer le port de réception
Utilisez Windows Explorer pour créer un répertoire nommé « Receive » sous le répertoire du projet FFDisassemblerWalkthrough.
Dans la console Administration BizTalk Server, développez l’application FlatFileExample, cliquez avec le bouton droit sur Ports de réception, pointez sur Nouveau, puis cliquez sur Port de réception unidirectionnel.
Dans la boîte de dialogue Propriétés du port de réception , définissez le nom du port sur « ReceiveError ».
Cliquez sur Emplacements de réception, puis sur Nouveau pour ajouter un emplacement de réception. Nommez le nouvel emplacement « ReceiveErrorLocation ». Définissez le pipeline de réception sur FFReceivePipeline. Pour Type de transport, sélectionnez FICHIER, puis cliquez sur Configurer. Sélectionnez le répertoire de réception que vous avez créé, puis définissez le masque de fichier sur *.txt.
Cliquez sur OK. Votre port de réception devrait à présent être configuré. Cliquez sur OK pour fermer.
Configurer le port d’envoi
Utilisez Windows Explorer pour créer un répertoire nommé « Send » sous le répertoire du projet FFDisassemblerWalkthrough.
Dans la console Administration BizTalk Server, développez l’application FlatFileExample, cliquez avec le bouton droit sur Ports d’envoi, pointez sur Nouveau, puis cliquez sur Statique One-Way Port d’envoi....
Dans la boîte de dialogue Propriétés du port d’envoi, définissez le nom du port sur « Send ».
Pour type de transport, sélectionnez FICHIER, puis cliquez sur Configurer. Définissez le dossier de destination sur le répertoire d'envoi que vous avez créé auparavant.
Configurez à présent le filtre. Cliquez sur Filtres et ajoutez une expression :
- BTS. MessageType ==
http://FFDisassemblerWalkthrough.Body#Body
- BTS. MessageType ==
Cliquez sur OK pour terminer la configuration du port d’envoi. Votre port d'envoi devrait à présent être configuré.
Exécution de l'exemple
Il est maintenant temps d'exécuter l'exemple. Après avoir utilisé la console de gestion BizTalk Server pour démarrer l’application, copiez les fichiers de test dans l’emplacement de réception et observez ce qui est produit dans l’emplacement d’envoi.
Dans la console Administration BizTalk Server, cliquez avec le bouton droit sur l’application FlatFileExample, puis cliquez sur Démarrer. Cette opération inscrit et démarre les ports d’envoi et de réception.
Faites glisser la copie de l'exemple de fichier Errorfile.txt dans le répertoire de réception. Deux fichiers de sortie sont normalement écrits dans le répertoire d'envoi.