Changer Type de données entrée/sortie
Un code généré par MapForce peut être intégré, ou adapté dans votre application spécifique, bien que le résultat de la génération de code est une application complète et entièrement fonctionnelle. Après avoir généré le code Java ou C# avec MapForce, vous pouvez changer en option le type de données de l’entrée ou la sortie de mappage en éditant le code généré. Plus spécifiquement, vous pouvez utiliser les objets de paramètres de mappage des types autres que ceux générés par défaut. Par exemple, à la place que le mappage lise l’entrée d’un fichier sur le disque, vous pouvez fournir un string ou un objet stream comme entrée. Notez que cette fonction est spécifique au code généré dans C# ou uniquement Java.
Les types d’objet pris en charge comme entrée ou sortie sont recensés dans la première colonne de la table ci-dessous. Chaque colonne suivante précise les formats de données où ce type spécifique est pris en charge. Pour une définition plus précise de chaque type, voir la section « définition de types » ci-dessous.
XML | JSON* | Microsoft Excel* | EDI (inclut X12, HL7)* | FlexText* | CSV/Text | |
---|---|---|---|---|---|---|
Fichiers | Oui | Oui | Oui | Oui | Oui | Oui |
Flux | Oui | Oui | Oui | Oui | Oui | Oui |
Chaînes | Oui | Oui | – | Oui | Oui | Oui |
Reader/Writer | Oui | Oui | – | Oui | Oui | Oui |
Documents DOM | Oui | – | – | – | – | – |
* Formats pris en charge uniquement dans MapForce Enterprise Edition
Pour modifier le type de données d'une d'entrée ou sortie d'une fonction :
1.Générer du code C# ou Java depuis un mappage.
2.Dans le code généré, trouvez l’appel dans la méthode run (dans Java) ou la méthode Run (dans C#), comme suit :
a.Si vous utilisez C#, ouvrez le fichier MappingConsole.cs.
b.Si vous utilisez Java, ouvrez MappingConsole.java (le programme de la console) ou le fichier MappingFrame.java (le programme GUI).
Note : | le nom du fichier peut être différent si vous avez changé le nom de l’application en paramètres de mappage. Par exemple, si vous le changez en « MyApp », le nom du fichier généré devient MyAppConsole.js et MyAppConsole.java, et MyAppFrame.java, respectivement. |
3.Créez une instance du type requis (voir la section « définitions de type »).
4.Fournissez les objets déclarés comme paramètres dans la méthode run (dans Java) ou la méthode Run (dans C#), comme affiché dans l’exemple ci-dessous.
La méthode run est la méthode la plus importante des classes de mappage générées. Elle contient un paramètre pour chaque source statique ou composant d’entrée dans le mappage et un paramètre final pour le composant de sortie. Si votre mappage contient des composants qui traitent les multiples fichiers de manière dynamique, les paramètres respectifs n’apparaissent pas dans le code généré, car dans ce cas, les noms de fichiers sont traités de manière dynamique à l’intérieur du mappage.
Définitions de type
Dans C#, les types que vous pouvez fournir en tant que paramètres dans la méthode Run sont des classes définies dans l’espace de noms com.altova.io). Les classes de base sont Altova.IO.Input et Altova.IO.Output, respectivement.
Types C#
Fichiers | Altova.IO.FileInput(nom de fichier String) Altova.IO.FileOutput(nom de fichier String ) |
Flux | Altova.IO.StreamInput(System.IO.Stream stream) Altova.IO.StreamOutput(System.IO.Stream stream) |
Chaînes | Altova.IO.StringInput(contenu string) Altova.IO.StringOutput(System.Text.StringBuilder sbuilder) |
Reader/Writer | Altova.IO.ReaderInput(System.IO.TextReader reader) Altova.IO.WriterOutput(System.IO.TextWriter writer) |
Documents DOM | Altova.IO.DocumentInput(System.Xml.XmlDocument document) Altova.IO.DocumentOutput(System.Xml.XmlDocument document) |
Dans Java, les types que vous pouvez fournir en tant que paramètres dans la méthode run sont des classes définies dans le package com.altova.io). Les classes de base sont com.altova.io.Input et com.altova.io.Output, respectivement.
Type Java
Fichiers | com.altova.io.FileInput(String filename) |
Flux | com.altova.io.StreamInput(java.io.InputStream stream) com.altova.io.StreamOutput(String filename) |
Chaînes | com.altova.io.StringInput(String content) com.altova.io.StringOutput() |
Reader/Writer | com.altova.io.ReaderInput(java.io.Reader reader) com.altova.io.WriterOutput(java.io.Writer writer) |
Documents DOM | com.altova.io.DocumentInput(org.w3c.dom.Document document) com.altova.io.DocumentOutput(org.w3c.dom.Document document) |
Exemple
Pour illustrer le changement de l’entrée et de la sortie par programmation, nous utiliserons le mappage ConvertProducts.mfd comme modèle. Après avoir installé et exécuté MapForce au moins une fois, vous pouvez trouver ce mappage dans le répertoire suivant : C:\Users\<username>\Documents\Altova\MapForce2024\MapForceExamples\Tutorial.
ConvertProducts.mfd
Tel qu’illustré ci-dessus, le mappage convertit les données depuis un document XML source vers un autre document XML. Nos objectifs sont les suivants :
1.Générer Java et le code de programme C# depuis ce mappage.
2.Changer le type de données du composant source en un type string.
3.Changer le type de données du composant cible en un type writer string.
Pour générer le code de programme, ouvrez le mappage ConvertProducts.mfd et exécutez la commande Fichier | Générer code dans | C# (ou Java). Pour l’exemple, nous partirons du fait que les paramètres de mappage de ConvertProducts.mfd sont les paramètres par défaut.
Cet exemple utilise les répertoires cible suivants pour le code généré (n’hésitez pas à modifier le chemin, le cas échéant) :
•C:\codegen\cs\ConvertProducts, for C#
•C:\codegen\java\ConvertProducts, for Java
Ayant généré le code de programme, ouvrez MappingConsole.cs (dans C#) ou MappingConsole.java (dans Java) et trouvez les lignes suivantes :
C#
Altova.IO.Input Products2Source = Altova.IO.StreamInput.createInput("Products.xml"); |
Java
com.altova.io.Input Products2Source = com.altova.io.StreamInput.createInput("Products.xml"); |
Commenter les lignes ci-dessus et changez le code comme suit :
C#
//Altova.IO.Input Products2Source = Altova.IO.StreamInput.createInput("Products.xml"); } |
Java
//com.altova.io.Input Products2Source = com.altova.io.StreamInput.createInput("Products.xml"); |
Dans les listes de code C# et Java ci-dessus, les points suivants ont lieu :
•Les deux lignes originales qui fournissent l’entrée et la sortie à la méthode run sont commentées. En conséquence, l’application de mappage ne lit plus les données de Products.xml. En fait, nous ne devons pas copier ce fichier dans le répertoire de travail du programme.
•Le type Products2Source a été déclaré comme StringInput qui fournit le contenu du fichier d’entrée XML à être traité.
•Le type ProductValuePairs2Target a été déclaré comme type WriterOutput qui prend un « string writer » comme argument.
•Une fois que le mappage termine l’exécution, les contenus du « string writer » sont imprimés vers la console.
Lignes directrices d’utilisation pour les streams et objets Reader/Writer
En utilisant les streams binaires ou les objets Reader/Writer comme entrée ou sortie au mappage, notez la chose suivante :
•Les objets stream binaires devraient être ouverts et prêts à être utilisés avant d’appeler la méthode run.
•Par défaut, la méthode run ferme le stream une fois la procédure terminée. Pour éviter ce comportement, insérer (ou décommentez) la ligne suivante avant d’appeler la méthode run :
C#
MappingMapToSomething.CloseObjectsAfterRun = false; |
Java
MappingMapToSomething.setCloseObjectsAfterRun(false); |
Note : | Assurez-vous de changer MappingMapToSomething au nom de l’objet de mappage tel qu’applicable pour votre code généré. |
Lignes directrices d’utilisation pour strings
Dans Java, le constructeur de StringOutput ne prend pas d’argument. Le contenu du string produit par le mappage peut être accédé en appelant la méthode getString(), par exemple :
Java
com.altova.io.Input Products2Source = com.altova.io.StreamInput.createInput("Products.xml"); |
Dans C#, le constructeur de StringOutput prend un type de paramètre StringBuilder que vous devez déclarer avant. Si l’objet StringBuilder contient déjà des données, la sortie de mappage y est ajoutée.
C#
Altova.IO.Input Products2Source = Altova.IO.StreamInput.createInput("Products.xml"); |
Pour exécuter ces listes de codes, vous pouvez utiliser le même projet généré comme dans l’exemple précédent. Assurez-vous, toutefois, de copier le fichier Products.xml de C:\Users\<username>\Documents\Altova\MapForce2024\MapForceExamples\Tutorials\ dans votre répertoire de travail du programme, puisque le code de mappage lit les données depuis ce fichier.
Lignes directrices d’utilisation pour les documents DOM
Lorsque vous utilisez les documents DOM comme entrée ou sortie de mappage, notez les points suivants :
•L’instance de document fournie comme paramètre au constructeur DocumentOutput doit être vide.
•Après avoir appelé run, le document DOM généré par le constructeur de DocumentOutput contient déjà la sortie de mappage, et vous pouvez manipuler le document, le cas échéant.