Flat Files complejos

Cuando se trabaja con BTS 2004 es muy común tener que generar esquemas (schemas) para representar archivos de texto (flat files) que ingresan al proceso de integración como message object que posteriormente es utilizan en mapeos u otras operaciones. Bien, en ocasiones los archivos de texto pueden ser representados por schemas sencillos de construir, pero en otras ocasiones los archivos de texto se tornan un poco complejos de representar debido a sus características lo son los registros opcionales; a continuación se presenta un ejemplo de cómo representar estos archivos con un schema.

Especificación Archivo Texto

La información almacenada en el archivo representa un pedido realizado con una información básica acerca del mismo, en forma adicional un pedido puede tener asociados uno o mas clientes a los cuales se les debe de distribuir el pedido y para cada uno de los clientes se debe especificar que pertenecen a los mismos. Por ultimo, se debe especificar la persona que entrega el pedido, y si existe alguna falla en alguna entrega se deberá de dar una descripción.

No toda la información en el archivo es obligatoria, por lo que algunos registros pueden o no existir; adicionalmente los registros estarán separados por retornos de línea. El siguiente cuadro expresa mejor el requerimiento:

Registro IdentificaciónRegistro Requerido
NumeroPedido 0100 X
DescripcionPedido 0101
DatosCliente 0200 X
DomicilioCliente 0201 X
DescripcionCliente 0202
DomicilioAuxiliar 0203
NombreArticulo 0300 X
DescripcionArticulo 0300
EntregadoPor 0400 X
EntregaFallida 0500

Creación del esquema

De acuerdo a la especificación inicial, nos podremos hacer una referencia en la cabeza con un XML estructurado (ver XML)

Crear el esquema inicial para lograr esta representación no es complicado, pero centremos la atención en dos aspectos importantes: como identificar los registros y como realizar excepción de registros opcionales.

Identificar registros

En la definición de los esquemas utilizaremos nodos padres y nodos que representaran los registros del archivo. Los nodos que representan los registros se declararan como una estructura basada en posiciones y en forma adicional se establecerá que el identificador del nodo será el indicado en la especificación inicial.

Esto es, por ejemplo, para el registro NumeroPedido así quedaran las propiedades:

Propiedad Valor
Structure Positional
Tag Identifier 0100

En forma adicional, en el primer elemento de cada uno de estos registros (elementos o atributos) se debe de especificar la propiedad Positional Offset igual a 4. Esto se realiza asi para establecer el inicio del contenido del registro.

Registros Opcionales

Al detallar la especificación se puede observar que algunos registros son opcionales y por lo tanto pueden no existir en los archivos ingresados, en este caso se pueden utilizar Choice Group y agrupar en estos los registros que deseamos sea opcional.

Dentro de la especificación del esquema de XML (XML Schema), este tipo de agrupación permite que el elemento sea opcional y pueda estar presente o no en una instancia de un mensaje. Al finalizar, el esquema resultara así con los elementos de agrupación previamente mencionados (ver imagen)

Se adjunta el xsd y un txt de ejemplo.

Autor: Carlos Medina

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga ningún derecho