Procesar un fichero EDI con Talend

0
16916

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 :

USU+Víctor:Madrid Triviño+vjmadrid@autentia.com'
TEM+Terracitas de Verano'
DIR+1+Ananda+Ciudad de Barcelona s/n+++Metro Atocha'
DET+Sitio divertido y buenas vistas'
DIR+2+Pedro Larumbe (ABC de Serrano)+Serrano 61+915751112++Metro Rubén Darío'
DIR+3+Terraza Europa+Paseo de la Castellana 95+915 217 379++Metro Santiago Bernabéu'
DIR+4+Café de las Comendadoras+Plaza de las Comendadoras 2+915472222++Metro Noviciado'
DET+Sitio tranquilo en pleno centro de Madrid'
DIR+5+Círculo de Bellas Artes+Alcalá 42+913605400++Metro Sevilla'

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 😉

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad