Habilite JavaScript para visualizar esta página.

Altova MapForce 2021 Professional Edition

Generador de código > Integrar código generado con MapForce

Cambiar tipo de datos de entrada/salida de la asignación (C# y Java)

Desplazarse Inicio Anterior Inicio Siguiente Más

Este apartado ofrece información detallada sobre los tipos de objetos que puede usar mediante programación si tiene pensado ejecutar asignaciones de MapForce desde aplicaciones Java o  C# personalizadas.

 

Puede usar varios objetos de entrada y salida (como archivos, cadenas, documentos DOM, etc.) como parámetros del método run. El método run es la función más importante de las clases de asignación que se generan. Tiene un parámetro por cada componente de origen o destino estático de la asignación y un parámetro final para el componente de salida. Los componentes que procesan varios archivos no aparecen como parámetros del método run porque en este caso los nombres de archivo se procesan de forma dinámica dentro de la asignación misma.

 

Los objetos que pueden utilizarse como parámetros del método run están disponibles en el paquete com.altova.io (Java) y en el espacio de nombres Altova.IO (C#). Estas son las clases base de los objetos de entrada y salida que se generan:

 

C#

Altova.IO.Input

Altova.IO.Output

 

Java

com.altova.io.Input

com.altova.io.Output

 

En la siguiente tabla puede ver los tipos de objeto que se pueden usar como parámetros de entrada/salida del método run (incluidos sus formatos de archivo de entrada/salida correspondientes).

 

Tipo de objeto

XML

Microsoft Excel*

EDI* **

FlexText*

CSV

Archivos de longitud fija

Archivos

ü

ü

ü

ü

ü

ü

Objetos de secuencia binaria

ü

ü

ü

ü

ü

ü

Cadenas

ü

ü

ü

ü

ü

Escritor/lector de entrada/salida (objetos de secuencia de caracteres)

ü

ü

ü

ü

ü

Documentos DOM

ü

 

* Formatos compatibles con la edición MapForce Enterprise Edition solamente.

** Incluye X12 y HL7.

 

Archivos

Los objetos de tipo archivo (identificados en el código por su nombre de archivo) tienen esta definición:

 

C#

Altova.IO.FileInput(string nombreArchivo)

Altova.IO.FileOutput(string nombreArchivo)

 

Java

com.altova.io.FileInput(String nombreArchivo)

com.altova.io.FileOutput(String nombreArchivo)

 

Objetos de secuencia binaria

Los objetos de secuencia binaria del código generado son una alternativa a los archivos físicos. El uso de objetos de secuencia binaria no ofrece ninguna ventaja en cuanto al uso de memoria. Esta es su definición:

 

C#

Altova.IO.StreamInput(System.IO.Stream secuencia)

Altova.IO.StreamOutput(System.IO.Stream secuencia)

 

Java

com.altova.io.StreamInput(java.io.InputStream secuencia)

com.altova.io.StreamOutput(java.io.OutputStream secuencia)

 

Notas:

 

Se supone que los objetos de secuencia binaria se abren y están listos antes de llamar al método run.

Por defecto el método run cierra la secuencia cuando se termina. Para evitar este comportamiento basta con insertar este código antes de llamar al método run:

 

Java

MappingMapToSomething.setCloseObjectsAfterRun(false); // Java

 

C#

MappingMapToSomething.CloseObjectsAfterRun = false;   // C#

 

Cadenas

Los objetos de tipo cadena tienen esta definición:

 

C#

Altova.IO.StringInput(string contenido)

Altova.IO.StringOutput(StringBuilder contenido)

 

Java

com.altova.io.StringInput(String contenidoXML)

com.altova.io.StringOutput()

 

En Java StringOutput no toma ningún argumento. Puede acceder al contenido con:

 

// asignación de Cadena a (otra) Cadena
String MyText = "<here>is some XML text</here>";
 
Input input = new StringInput(MyText);
Output output = new StringOutput();
 
MappingMapToMyText.run(input, output);
 
String myTargetData = output.getString().toString();

 

El método getString() devuelve StringBuffer, de ahí que toString() sea necesario.

 

En C# StringOutput toma un argumento (StringBuilder) que debe aportarse de antemano. Puede que el argumento StringBuilder ya contenga datos, de modo que el resultado de la asignación se le anexa.

 

No se pueden crear asignaciones entre orígenes/destinos Excel y cadenas de texto.

 

Escritor/lector de entrada/salida (objetos de secuencia de caracteres)

Los objetos de secuencia de caracteres tienen esta definición:

 

C#

Altova.IO.ReaderInput(System.IO.TextReader lector)

Altova.IO.WriterOutput(System.IO.TextWriter escritor)

 

Java

com.altova.io.ReaderInput(java.io.Reader lector)

com.altova.io.WriterOutput(java.io.Writer escritor)

 

Notas:

 

Se supone que los objetos de secuencia de caracteres se abren y están listos antes de llamar al método run.

Los orígenes/destinos Excel no se pueden leer desde secuencias de caracteres ni escribirse en secuencias de caracteres.

Por defecto el método run cierra la secuencia cuando se termina. Para evitar este comportamiento basta con insertar este código antes de llamar al método run:

 

Java

MappingMapToSomething.setCloseObjectsAfterRun(false); // Java

 

C#

MappingMapToSomething.CloseObjectsAfterRun = false;   // C#

 

Documentos DOM

Los documentos DOM tienen esta definición:

 

C#

Altova.IO.DocumentInput(System.Xml.XmlDocument documento)

Altova.IO.DocumentOutput(System.Xml.XmlDocument documento)

Java

com.altova.io.DocumentInput(org.w3c.dom.Document documento)

com.altova.io.DocumentOutput(org.w3c.dom.Document documento)

 

Notas:

 

El documento que se pasa al constructor DocumentOutput como destino debe estar vacío.

Después de llamar a run el documento DOM que genera el constructor de DocumentOutput ya contiene datos asignados, por lo que no es necesario "guardar en documento". Una vez creada la asignación, puede manipular el documento según corresponda.

A los documentos DOM solamente se puede asignar contenido XML.

 

Ejemplo

Imaginemos que desea integrar el código generado con MapForce en su aplicación Java. La asignación de MapForce está compuesta por dos archivos XML de origen y un archivo de texto de destino. Cuando genere el código de MapForce, la función run tendrá este aspecto:

 

void run(Input in1, Input in2, Output out1);

 

Ahora imaginemos que su aplicación exige asignar datos de un archivo local y de una secuencia binaria a una secuencia de caracteres. Como los datos los aportan otros orígenes, la aplicación deberá declarar los orígenes y los destinos:

 

String filename; // Declarar el origen de la primera entrada
Java.io.InputStream stream; // Declarar el origen de la segunda entrada
Java.io.Writer writer; // Declarar la salida como secuencia de caracteres

 

 

Además deben construirse estos contenedores para la función run generada por MapForce:

 

// se asume que com.altova.io ya está importado:
Input input1 = new FileInput(filename);
Input input2 = new StreamInput(stream);
Output output1 = new WriterOutput(writer);

 

Ahora puede llamar a la función run generada por MapForce:

 

MappingMapToSomething.run(input1, input2, output1);

 

El comportamiento en C# es prácticamente idéntico, con la diferencia de que run se llama Run y de que la secuencia .NET y las clases lectoras/escritoras se llaman de otra manera.

 

Con la misma técnica puede usar otros tipos de datos de entrada y salida, como cadenas o documentos DOM.

© 2015-2021 Altova GmbH