Compartir vía


Tutorial: Desensamblar archivos planos con un encabezado y un finalizador

Información general

En este tutorial se muestra el uso de esquemas creados por el Asistente para esquema de archivo sin formato a fin de llevar a cabo el desensamblado de un archivo con un encabezado, un finalizador y un cuerpo de mensaje repetido. En este tutorial se desarrollará parte de un sistema de seguimiento de errores ficticio que cumple con los siguientes requisitos:

  • Los mensajes de error se registran en varias ubicaciones físicas de la compañía y se envían a una ubicación central para su procesamiento en varios sistemas de servidor.

  • Los mensajes de error se escriben en el formato de archivo sin formato que contiene un encabezado que indica la ubicación, un cuerpo que contiene uno o varios mensajes y un finalizador que indica el número de lote.

  • Los mensajes se consideran no válidos si no tienen un encabezado, un cuerpo y un finalizador.

    Cuando se completa un tutorial, es preciso disponer de una aplicación de BizTalk Server que procese archivos sin formatos y los escriba como XML para que lo procese un sistema de servidor.

Requisitos previos

Para este ejemplo, es preciso saber desenvolverse con la creación de proyectos de BizTalk Server, la firma de un ensamblado y el uso de la consola de administración de BizTalk Server para ver aplicaciones y puertos. También debe estar cómodo con las ideas presentadas en Tutorial: Implementación de una aplicación básica de BizTalk. También resultará de utilidad cierta familiaridad de nivel básico con el Asistente para esquemas de archivo sin formato, aunque no constituye un requisito necesario.

Qué se hace en este ejemplo

En este ejemplo, se procesan mensajes de archivo sin formato de entrada mediante una canalización personalizada y el componente Desensamblador de archivo sin formato. Los mensajes se analizan mediante esquemas de cuerpo, finalizador y encabezado y, seguidamente, se escriben en una ubicación de envío para el procesamiento de servidor.

Ejemplo

Para crear el ejemplo, siga los pasos que se especifican en las secciones que se presentan a continuación.

Crear un nuevo proyecto de BizTalk

Antes de generar una solución, es preciso crear un proyecto de BizTalk, asegurarse de que se le ha asignado un nombre seguro y un nombre de aplicación. La asignación de un nombre de aplicación evita que BizTalk Server implemente la solución en la aplicación de BizTalk predeterminada.

  1. Use Visual Studio para crear un nuevo proyecto de BizTalk. Llame al proyecto FFDisassemblerWalkthrough.

  2. Genere un archivo de clave y asígnelo al proyecto. Para obtener más información sobre esta tarea, vea Página de firma, Proyecto Designer.

  3. En las propiedades de implementación del proyecto, establezca Nombre de aplicación en "FlatFileExample" y reinicie instancias de host en True. Al definir esta marca, se ordena al host que borre todas las instancias del ensamblado almacenadas en caché.

Crear el archivo de datos del ejemplo

Antes de generar esquemas, es necesario crear un archivo de prueba.

  1. Inicie Bloc de notas u otro procesador de texto.

  2. Cree un archivo de prueba de ejemplo. El archivo consta de un encabezado que indica la ubicación que informa de los errores, un finalizador con un Id. para este lote y un cuerpo compuesto de uno o varios registros de errores. El formato del archivo es el siguiente:

    Location
    ERRORid|type|priority|description|errorDateTime
    …additional error records
    BatchID
    

    El registro ERROR está etiquetado con el texto “ERROR” y delimitado por el carácter “|” (frente al caso posicional). Los elementos de datos del registro ERROR se describen en la siguiente tabla.

    Elemento Tipo de datos Descripción
    ID integer ID de este error.
    Tipo integer Tipo de error.
    Priority string Indicador de prioridad: Bajo, Medio o Alto.
    Descripción string Descripción del error.
    ErrorDateTime DateTime Fecha y hora del error.

    El archivo puede tener uno o varios registros ERROR.

    --O--

    Copie los siguientes datos de ejemplo en el nuevo archivo. La última línea contiene un avance de línea final:

    East Coast Facility
    ERROR102|0|High|Sprocket query fails.|1999-05-31T13:20:00.000-05:00
    ERROR16502|2|Low|Time threshold exceeded.|1999-05-31T13:20:00.000-05:00
    8675309
    
    
  3. Guarde el nuevo archivo de ejemplo en el directorio del proyecto. Use un nombre descriptivo como "ArchivoErrores.txt" para localizarlo fácilmente.

Crear y probar los esquemas de cuerpo, finalizador y encabezado

Una vez creado el archivo de datos del ejemplo, el paso siguiente es crear los esquemas de cuerpo, finalizador y encabezado. Estos esquemas se utilizan con el componente de canalización de recepción Desensamblador de archivos sin formato para procesar mensajes recibidos.

Usar el Asistente para esquemas de archivos planos para crear el esquema de encabezado
  1. Agregue un nuevo esquema al proyecto. En Explorador de soluciones, haga clic con el botón derecho en FFDisassemblerWalkthrough, seleccione Agregar y, a continuación, haga clic en Nuevo elemento.

  2. En el cuadro de diálogo Agregar nuevo elemento , haga clic en Archivos de esquema y seleccione Asistente para esquemas de archivos planos. Asigne al nuevo esquema el nombre "Header.xsd" y, a continuación, haga clic en Agregar.

  3. En la página Asistente para esquemas de archivos planos de BizTalk , haga clic en Siguiente.

  4. En la página Información del esquema de archivo plano , haga clic en Examinar y busque el archivo de datos de ejemplo creado anteriormente. Cambie el nombre del registro a "Encabezado", compruebe la página de códigos y, a continuación, haga clic en Siguiente.

    Nota

    Si se ha guardado el archivo de ejemplo en formato Unicode, la página de código será Little-Endian-UTF16 (1200). Esto no tendrá ninguna repercusión negativa en el ejemplo.

  5. A continuación, seleccione los datos de documento. En la página Seleccionar datos de documento , resalte la primera línea de datos, incluidos los caracteres de nueva línea {CR} y {LF} como se muestra:

    Datos seleccionados para ffwiz_header_select_document_data de esquema de encabezado

    Haga clic en Next.

  6. En la página Seleccionar formato de registro , haga clic en Siguiente para aceptar el valor predeterminado. Se puede aceptar el valor predeterminado "por símbolo delimitador" porque el archivo de datos no utiliza posición relativa.

  7. En la página Registro delimitado , haga clic en Siguiente.

  8. Ahora, podrá especificar elementos secundarios. El encabezado contiene un elemento denominado “Location”.

    Nodo de ubicación definido para de encabezado

    Haga clic en Siguiente para continuar.

  9. En la página Vista de esquema , compruebe el esquema.

    Vista esquema que muestra ffwiz_header_schema_view de esquema de encabezado completado

    Cuando esté satisfecho, haga clic en Finalizar para completar el asistente.

  10. Haga clic en el <nodo Esquema> en el panel Esquema de encabezado. En el panel Propiedades, cambie Elemento FormDefault a Calificado. Con ello, se indica que el espacio de nombres de destino debe calificar los elementos declarados localmente en un documento de instancia.

Usar el Asistente para esquemas de archivos planos para crear el esquema del finalizador
  1. Agregue un nuevo esquema al proyecto. En Explorador de soluciones, haga clic con el botón derecho en FFDisassemblerWalkthrough, seleccione Agregar y, a continuación, haga clic en Nuevo elemento.

  2. En el cuadro de diálogo Agregar nuevo elemento , haga clic en Archivos de esquema y seleccione Asistente para esquemas de archivos planos. Asigne al nuevo esquema el nombre "Trailer.xsd" y, a continuación, haga clic en Agregar.

  3. En la página Asistente para esquemas de archivos planos de BizTalk , haga clic en Siguiente.

  4. En la página Información del esquema de archivo plano , haga clic en Examinar y busque el archivo de datos de ejemplo creado anteriormente. Cambie el nombre del registro a "Tráiler", compruebe la página de códigos y, a continuación, haga clic en Siguiente.

    Nota

    Si se ha guardado el archivo de ejemplo en formato Unicode, la página de código será Little-Endian-UTF16 (1200). Esto no tendrá ninguna repercusión negativa en el ejemplo.

  5. A continuación, seleccione los datos de documento. En la página Seleccionar datos de documento , resalte la última línea de datos, incluidos los caracteres de nueva línea {CR} y {LF} como se muestra:

    Datos seleccionados para la ffwiz_trailer_select_document_data del esquema del finalizador

    Haga clic en Next.

  6. En la página Seleccionar formato de registro , haga clic en Siguiente para aceptar el valor predeterminado. Se puede aceptar el valor predeterminado "por símbolo delimitador" porque el archivo de datos no utiliza posición relativa.

  7. En la página Registro delimitado , haga clic en Siguiente.

  8. Ahora, podrá especificar elementos secundarios. El encabezado contiene un elemento denominado “BatchID”.

    Nodo de ubicación definido para el ffwiz_trailer_child_elements del finalizador

    Haga clic en Siguiente para continuar.

  9. En la página Vista de esquema , compruebe el esquema.

    Vista esquema que muestra ffwiz_trailer_schema_view de esquema finalizado finalizado

    Cuando esté satisfecho, haga clic en Finalizar para completar el asistente.

  10. Haga clic en el <nodo Esquema> en el panel Esquema finalizador. En el panel Propiedades, cambie elementFormDefault a Calificado. Con ello, se indica que el espacio de nombres de destino debe calificar los elementos declarados localmente en un documento de instancia.

Usar el Asistente para esquemas de archivos planos para crear el esquema del cuerpo
  1. Agregue un nuevo esquema al proyecto. En Explorador de soluciones, haga clic con el botón derecho en FFDisassemblerWalkthrough, seleccione Agregar y, a continuación, haga clic en Nuevo elemento.

  2. En el cuadro de diálogo Agregar nuevo elemento , haga clic en Archivos de esquema y seleccione Asistente para esquemas de archivos planos. Asigne al nuevo esquema el nombre "Body.xsd" y, a continuación, haga clic en Agregar.

  3. En la página Asistente para esquemas de archivos planos de BizTalk , haga clic en Siguiente.

  4. En la página Información del esquema de archivo plano , haga clic en Examinar y busque el archivo de datos de ejemplo creado anteriormente. Cambie el nombre del registro a "Cuerpo", compruebe la página de códigos y, a continuación, haga clic en Siguiente.

    Nota

    Si se ha guardado el archivo de ejemplo en formato Unicode, la página de código será Little-Endian-UTF16 (1200). Esto no tendrá ninguna repercusión negativa en el ejemplo.

  5. A continuación, seleccione los datos de documento. En la página Seleccionar datos de documento , resalte las líneas dos y tres de los datos, incluidos los caracteres de nueva línea {CR} y {LF} como se muestra:

    Datos seleccionados para la ffwiz_body_select_document_data del esquema del cuerpo

    Haga clic en Next.

  6. En la página Seleccionar formato de registro , haga clic en Siguiente para aceptar el valor predeterminado. Se puede aceptar el valor predeterminado "por símbolo delimitador" porque el archivo de datos no utiliza posición relativa.

  7. En la página Registro delimitado , seleccione Siguiente.

  8. A continuación, defina los elementos secundarios. Cambie Body_Child1 a Errory establezca su tipo de elemento en Registro repetido. Establezca el tipo de registro de elemento Body_Child2 en Omitir.

  9. En la página Vista de esquema , haga clic en Siguiente para definir los elementos secundarios del registro Error.

  10. En la página Seleccionar datos de documento , haga clic en Siguiente. El Asistente selecciona los datos de definición del registro correctamente.

  11. En la página Seleccionar formato de registro , haga clic en Siguiente. El símbolo delimitador da formato a los datos.

  12. En la página Registro delimitado , seleccione | para el delimitador secundario. A continuación, active la casilla Registro tiene un identificador de etiqueta y escriba ERROR para el valor de etiqueta.

    Configuración del registro delimitado con el identificador de etiqueta

    Haga clic en Next.

  13. Ahora, defina los elementos secundarios del registro de errores.

    Registro de error definido con cinco elementos

    Haga clic en Next.

  14. En la página Vista de esquema , compruebe el esquema.

    Vista esquema que muestra ffwiz_bodyerror_schema_view de esquema del cuerpo completado

    Si ha cometido errores, haga clic en Atrás y realice las correcciones necesarias. Cuando esté satisfecho, haga clic en Finalizar para completar el asistente.

  15. Haga clic en el <nodo Esquema> en el panel Esquema de cuerpo. En el panel Propiedades, cambie Elemento FormDefault a Calificado. Con ello, se indica que el espacio de nombres de destino debe calificar los elementos declarados localmente en un documento de instancia.

  16. Haga clic en el <nodo Error> en el panel Esquema del cuerpo. En el panel Propiedades, cambie Max Occurs a 1. Con ello, el Desensamblador de archivos sin formato divide cada uno de los errores en su propio mensaje.

Prueba de los esquemas mediante FFDasm
  1. Abra un símbolo del sistema y cambie el directorio al que le corresponde al proyecto.

  2. En el símbolo del sistema, ejecute FFDasm.exe, tal como se muestra a continuación.

    <Samples Path>\SDK\Utilities\PipelineTools\FFDasm ErrorFile.txt  -hs header.xsd -bs body.xsd -ts Trailer.xsd
    

    Para obtener información sobre la ubicación de esta y otras herramientas de canalización, consulte Herramientas de canalización.

  3. FFDasm.exe debe producir dos archivos de salida denominados {GUID}.xml, uno para cada registro ERROR en el archivo de prueba. El registro ERROR de alta prioridad tiene el aspecto siguiente:

    <Body xmlns="http://FFDisassemblerWalkthrough.Body">
      <Error>
        <ID>102</ID>
        <Type>0</Type>
        <Priority>High</Priority>
        <Description>Sprocket query fails.</Description>
        <DateTime>1999-05-31T13:20:00.000-05:00</DateTime>
      </Error>
    </Body>
    

Crear una canalización de recepción personalizada

Ahora que están definidos los esquemas de archivo sin formato, será necesario crear una canalización personalizada que utilice el componente Desensamblador de archivos sin formato. Seguidamente, el Desensamblador de archivos sin formato puede configurarse para utilizar los esquemas de finalizador, cuerpo y encabezado para fragmentar mensajes.

  1. Agregue una nueva canalización de recepción al proyecto. En Explorador de soluciones, haga clic con el botón derecho en el proyecto FFDisassemblerWalkthrough, seleccione Agregar y, a continuación, haga clic en Nuevo elemento.

  2. En el cuadro de diálogo Agregar nuevo elemento , seleccione Archivos de canalización y, a continuación, haga clic en Recibir canalización. Asigne un nombre a la nueva canalización "FFReceivePipeline" y, a continuación, haga clic en Agregar.

  3. Para configurar la nueva canalización, arrastre el componente Desensamblador de archivos sin formato desde el panel Cuadro de herramientas hasta el paso de desensamblado.

  4. En el panel Propiedades, establezca el esquema document en FFDisassemblerWalkthrough.Body, el esquema de encabezado en FFDisassemblerWalkthrough.Header y el esquema trailer en FFDisassemblerWalkthrough.Trailer.

Implementar la aplicación y configurar los puertos de envío y recepción

Con los esquemas y la canalización de recepción personalizada creados, será necesario compilar el proyecto e implementarlo. Una vez implementado, se podrá utilizar la consola de administración de BizTalk Server para configurar los puertos de envío y recepción.

Implementar
  1. Desde Visual Studio, implemente la solución; para ello, haga clic con el botón derecho en el proyecto y, a continuación, haga clic en Implementar.

  2. Con la consola de administración de BizTalk Server, expanda el grupo Aplicaciones para comprobar que FlatFileExample está presente como una aplicación personalizada.

Configuración del puerto de recepción
  1. Use el Explorador de Windows para crear un directorio denominado "Receive" en el directorio del proyecto FFDisassemblerWalkthrough .

  2. En la consola de administración de BizTalk Server, expanda la aplicación FlatFileExample, haga clic con el botón derecho en Puertos de recepción, seleccione Nuevoy, a continuación, haga clic en Puerto de recepción unidireccional.

  3. En el cuadro de diálogo Propiedades del puerto de recepción , establezca el nombre del puerto en "ReceiveError".

  4. Haga clic en Ubicaciones de recepcióny, a continuación, haga clic en Nuevo para agregar una ubicación de recepción. Nombre la nueva ubicación de recepción "ReceiveErrorLocation". Establezca la canalización de recepción en FFReceivePipeline. En Tipo de transporte, seleccione ARCHIVO y, a continuación, haga clic en Configurar. Seleccione el directorio de recepción que creó y, a continuación, establezca la máscara de archivo en *.txt.

  5. Haga clic en OK. Con ello, el puerto de recepción debería estar configurado. Haga clic en Aceptar para cerrar.

Configuración del puerto de envío
  1. Use el Explorador de Windows para crear un directorio denominado "Send" en el directorio del proyecto FFDisassemblerWalkthrough .

  2. En la consola de administración de BizTalk Server, expanda la aplicación FlatFileExample, haga clic con el botón derecho en Puertos de envío, seleccione Nuevoy, a continuación, haga clic en Static One-Way Send Port....

  3. En el cuadro de diálogo Propiedades del puerto de envío, establezca el nombre del puerto en "Enviar".

  4. En Tipo de transporte, seleccione ARCHIVO y, a continuación, haga clic en Configurar. Defina el directorio de envío creado anteriormente como la carpeta de destino.

  5. Ahora, configure el filtro. Haga clic en Filtros y agregue una expresión:

    • BTS. MessageType == http://FFDisassemblerWalkthrough.Body#Body
  6. Haga clic en Aceptar para completar la configuración del puerto de envío. Con ello, el puerto de envío debería estar configurado.

Ejecutar el ejemplo

Ha llegado el momento de ejecutar el ejemplo. Después de usar la consola de administración de BizTalk Server para iniciar la aplicación, copie los archivos de prueba en la ubicación de recepción y observe lo que se genera en la ubicación de envío.

  1. En la consola de administración de BizTalk Server, haga clic con el botón derecho en la aplicación FlatFileExample y, a continuación, haga clic en Iniciar. Esto da de alta e inicia los puertos de envío y recepción.

  2. Suelte la copia del archivo Errorfile.txt de ejemplo en el directorio de recepción. Se deberían escribir dos archivos de salida en el directorio de envío.