Víctor Javier Madrid

Consultor tecnológico de desarrollo de proyectos informáticos.

Ingeniero en Informática con especialidad en Ingeniería del Conocimiento *.

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2010-05-24

Tutorial visitado 6.590 veces Descargar en PDF
Procesar un fichero EDI con Talend

Procesar un fichero EDI con Talend


0. Índice de contenidos.

1. Introducción

En este tutorial se pretende enseñar una forma de trabajar con un fichero EDI mediante el uso de la herramienta TOS (Talend Open Studio). Antes de nada, aconsejaría visitar los siguientes tutoriales, ya que este tutorial vendría a ser la continuación de los anteriores y por lo tanto requiere de conceptos y recursos que se explican en cada uno de ellos.

Nota : En el segundo tutorial se enseña a instalar el componente que usaremos en este tutorial. Antes de ponernos a trabajar, quería recordar que el componente que utilizaremos para trabajar pertecene al framework de Smooks http://www.smooks.org (framework para construir aplicaciones que permitan procesar XML u otros documentos (CSV, EDI , etc.. usando Java).

Vamos con un poco de teoría..... ;-)

¿Qué es EDI?

EDI es el acrónimo de Electronic Data Interchange), es decir, intercambio electrónico de datos aunque yo prefiero que lo veáis como el concepto de "factura electrónica". Este formato está normalizado entre los sistemas informáticos de quienes participan en transacciones comerciales tratando de conseguir la minimización de cualquier operación manual por parte de una persona.

Permite la implementación en diferentes formatos :

  • Texto plano : TXT
  • Texto estructurado : XML
  • Texto especifico : EDIFACT

A nosotros nos va a interesar para este tutorial el formato EDIFACT

¿Qué es EDIFACT?

EDIFACT es el acrónimo de Electronic Data Interchange for Administration, Commerce and Transport, es decir , intercambio electrónico de datos para la Administración , Comercio y Transporte. EDIFACT es un estándar de la ONU para el intercambio de información comercial que es utilizado en todo el mundo.

Me gustaría aclarar que a partir de este estándar nacen otros subestándares para cada entorno de negocio (automoción, logística, etc) o bien para cada pais. Aunque si os digo la verdad, cada casi nadie lo cumple totalmente y cada uno suele darle su particular visión ;-)

¿Para qué se utiliza EDI?

El principal objetivo de EDI es el de ser el sustito del papel nivel comercial de forma que todo el mundo sea capaz de comunicarse utilizando el mismo formato (normalización).

Con eso lo que se consigue es tener un sistema de transacciones comerciales sin papeles.


2. Entorno.

El tutorial está escrito usando el siguiente entorno:


3. Preparación.

3.1 Creación de un nuevo subestandar de EDIFACT : EDIVERSION

Vamos a generar un subestándar inventado de EDIFACT para el intercambio de localizaciones de ocio al que denominaremos EDIVERSION.

Cualquier estándar de EDIFACT viene definido por una serie de CAMPOS que contendrán información específica en COMPONENTES y en SUBCOMPONENTES (son componentes secundarios dentro de un componente principal).

Un SEGMENTO suele agrupar elementos de una temática común (Fechas, usuario , etc)

El primero de los campos representa al SEGMENTO con el que se trabajará, por lo que todos los COMPONENTES y SUBCOMPONENTES pertenecen a un SEGMENTO.

Los SEGMENTOS, CAMPOS y SUBCAMPOS pueden tener un ámbito de ejecución : obligatorio, opcional o no requerido (puede darse el caso de que haya que dejarlo en blanco)

Definiremos los siguientes separadores entre los diferentes elementos :

  • Separador de segmentos : "'"
  • Separador de campos : "+"
  • Separador de componentes : ":"
  • Separador de subcomponentes : "~"

Código que permite definir lo anterior en el esquema EDIVERSION en el fichero de mapeo

Los SEGMENTOS suelen venir definidos mediante un esquema que representa su secuencialidad

Segmento USU : Contiene información del usuario

Este segmento es obligatorio

Nº de apariciones : 1

Campos / Subcampos EDIVERSION Descripción
NOMBRE Y APELLIDOS Obligatorio Campo compuesto : nombre y apellidos
-> Nombre Obligatorio
-> Apellidos Obligatorio
Email Obligatorio Correo del usuario

Ejemplo : USU+Víctor:Madrid Triviño+vjmadrid@autentia.com'

Código que permite definir lo anterior en el esquema EDIVERSION en el fichero de mapeo


Segmento TEM : Temática del fichero de intercambio

Este segmento es obligatorio

Nº de apariciones : 1

Segmento posterior a USU

Campos / Subcampos EDIVERSION Descripción
Motivo Obligatorio

Ejemplo : TEM+Terracitas de Verano'

Código que permite definir lo anterior en el esquema EDIVERSION en el fichero de mapeo


Segmento DIR : Detalle de la dirección de la localización

Este segmento es opcional

Nº de apariciones : 1..N

Segmento posterior a TEM

Campos / Subcampos EDIVERSION Descripción
Nº de localización Obligatorio
Lugar Obligatorio
Dirección Obligatorio
Teléfono Opcional
Nocturnidad Suprimido Habrá que dejarlo en blanco debido al siguiente campo
Metro Obligatorio

Ejemplo : DIR+1+Ananda+Ciudad de Barcelona s/n+++Metro Atocha'

Código que permite definir lo anterior en el esquema EDIVERSION en el fichero de mapeo


Segmento DET : Detalle anexo de la localización

Este segmento es opcional

Nº de apariciones : 1

Segmento dependiente de DIR

Campos / Subcampos EDIVERSION Descripción
Descripción Obligatoriedad

Ejemplo : DET+Amplia pista de baile y buenas vistas'

Código que permite definir lo anterior en el esquema EDIVERSION en el fichero de mapeo


3.2 Generación de un fichero de mapeo del componente tSmooks

Para ello integramos los anteriores elementos "medi:segment" para constituir la estructura definida

Recordar añadir como primera línea : <?xml version="1.0" encoding="UTF-8"?>

Guardaremos el anterior fichero como mappingEDIVERSION.xml


3.3 Generación de un fichero de configuracion del componente tSmooks

Generamos un fichero de configuración

Recordar añadir como primera línea : <?xml version="1.0"?>

Guardaremos el anterior fichero como configEDIVERSION.xml

3.4 Creación de fichero EDIVERSION que represente a nuestro esquema :

Nota Importante : Antes de guardar eliminar los saltos de línea para que quede todo el documento en una única línea

Guardaremos el anterior fichero como Ejemplo.edi

4. Procesamiento.

PASO 1 : Creamos un trabajo nuevo

PASO 2 : Insertamos el componente de Pre Trabajo (tPreJob)

PASO 3 : Asociamos al componente de Pre Trabajo el componente para establecer las variables globales (tSetGlobalVar)

Introducidos dos variables globales :

  • "configuracion_tSmooks" : Con valor la ruta del directorio de configuración (En mi caso "C:/Users/ASUS/Desktop/ficheroEDI/configEDIVERSION.xml")
  • "mapeo_tSmooks" : Con valor la ruta del directorio de mapeo (En mi caso "C:/Users/ASUS/Desktop/ficheroEDI/mappingEDIVERSION.xml")

PASO 4 : Insertamos el componente de tSmooks para realizar el procesamiento

  • Configuramos como fichero de entrada nuestro fichero EDI : Ejemplo.edi
  • Configuramos como fichero de configuracion la variable asociada : ((String)globalMap.get("configuracion_tSmooks"))
  • Configuramos como fichero de salida el que nosotros queramos establecer
  • Configuramos como parámetro "mapeo" como ((String)globalMap.get("mapeo_tSmooks"))

PASO 5 : Ejecución del Job


Si todo está bien generaremos un fichero XML de resultado



5. Conclusiones.

Con veis ha sido muy fácil convertir un fichero en formato EDI a un fichero XML con el que es más fácil trabajar para realizar cualquier tipo de acción. Además os he enseñado cómo trabajan con casi todos los estándares realacionados con EDIFACT.Espero que os ayude ;-)

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL: