Altova MapForce 2023 Professional Edition

MapForce permite leer datos BLOB (objeto binario grande) a partir de archivos binarios en una asignación y consumirlos sin cambiar la estructura interna de los datos binarios (sin formato). Por ejemplo, puede guardar datos binarios en un campo BLOB de BD, en un campo de tipo xs:base64Binary de un archivo XML o enviarlo a un servicio web*.

 

* Las llamadas a servicios web solo se pueden realizar con MapForce Enterprise Edition.

 

También puede crear asignaciones que lean datos binarios desde un origen (como un campo BLOB de BD, un campo de tipo xs:base64Binary de un archivo XML o un servicio web) y después escriban datos binarios en disco.

 

Estos son solo algunos ejemplos de los casos en los que puede venir bien poder leer o escribir archivos binarios:

 

Extraer contenido binario cifrado en base 64 de un archivo XML y guardarlo en disco (por ejemplo, como archivo PDF)

Procesar archivos de imagen almacenados en disco y enviarlos como contenido binario cifrado en base 64 a un servicio web

Extraer contenido BLOB de una tabla de BD y guardarlo en disco como archivos de imagen (uno por cada fila de la tabla de BD)

Leer archivos de imagen desde el disco y guardarlos en una tabla de BD como campos de datos BLOB.

 

Nota:para asignar datos a o desde archivos binarios necesita el lenguaje de transformación BUILT-IN. Puede acceder a la vista previa de la asignación en MapForce (y guardar los archivos de salida, si los hay) o ejecutarla con MapForce Server (requiere una licencia propia) en un equipo o una plataforma distintos. No se pueden generar ejecutables en C#, C++ o Java a partir de asignaciones que leen o escriben en archivos binarios.

 

Añadir archivos binarios a la asignación

En MapForce no existe ningún tipo de componente asociado a archivos binarios, como sí ocurre, por ejemplo, con los archivos XML, JSON o de texto. Sin embargo, para lograr los objetivos de los ejemplos del punto anterior puede usar estas funciones integradas de MapForce:

 

read-binary-file

write-binary-file

 

Puede encontrar estas funciones en la ventana Bibliotecas (más concretamente, en la biblioteca "lang"). Para usar alguna de estas funciones en una asignación basta con arrastrarlas desde la ventana Biblioteca hasta la asignación o hacer doble clic dentro de una zona vacía de la asignación y empezar a escribir el nombre de la función para después seleccionarlo. Para más información consulte Agregar una función integrada a una asignación de datos.s

 

read-binary-file

Esta función devuelve el contenido del archivo indicado como BLOB (objeto binario grande por sus siglas en inglés) de tipo xs:base64Binary. Tenga en cuenta que aunque el tipo de datos se llama "base64Binary", la representación interna es únicamente un BLOB. La codificación en base 64 no tiene lugar hasta que no asigna el resultado de la función a un nodo XML de tipo xs:base64Binary. También puede asignar el resultado de la función a xs:hexBinary, a un blob de BD o a un campo binario de una estructura de Protocol Buffers.

mf-func-read-binary-file

Para leer un archivo binario en una asignación debe dar su ruta como entrada del argumento filepath. Si filepath es relativo, entonces MapForce buscará el archivo en el mismo directorio que la asignación. El argumento must-exist es opcional; si no se puede abrir el archivo y su parámetro es true, la asignación emite un error. Si no se puede abrir el archivo y su parámetro es false, la asignación devuelve un binario vacío.

 

write-binary-file

Esta función escribe contenido binario en la ruta de archivo indicada y devuelve la ruta del archivo escrito. Si quiere que el resultado sera únicamente un archivo binario, conecte el resultado de la función a un componente de salida simple. Esta función escribe un archivo cada vez que se usa su resultado en la asignación, por lo que recomendamos que conecte el resultado de la función directamente a un componente de destino, sin usar otros procesamientos intermedios.

mf-func-write-binary-file

Para escribir archivos binarios debe dar su ruta como entrada del argumento filepath. Si filepath es relativo, entonces MapForce genera el archivo en el mismo directorio que la asignación. El argumento content debe estar conectado al contenido binario (por ejemplo, un campo BLOB de una BD).

 

Si accede a la vista previa de la asignación en MapForce, la función genera archivos temporales por defecto, en lugar de escribir archivos directamente en disco. Para guardar estos archivos temporales en disco haga clic en la pestaña Resultados y después haga clic en los botones de la barra de herramientas Guardar resultado generado ic-save-sel-string o Guardar todos los resultados generados ic-save-all-out.

 

Para configurar MapForce para que escriba el resultado directamente en archivos finales en vez de temporales seleccione el comando de menú Herramientas | Opciones, haga clic en Generales y después marque la opción Escribir directamente en archivos de salida finales. Tenga en cuenta que esta opción sobrescribe cualquier otro archivo que tenga el mismo nombre.

 

La función siempre devuelve el nombre de archivo final (no el temporal), incluso aunque no haya guardado aún el archivo final en disco (que es el caso cuando accede a la vista previa de la asignación y se deshabilita la opción Escribir directamente en archivos de salida finales).

 

Tenga en cuenta que una asignación no puede volver a leer su propio archivo de salida.

 

Ejemplos

Consulte Ejemplo: leer archivos binarios y Ejemplo: escribir archivos binarios.

© 2016-2022 Altova GmbH