Trabajar con varios esquemas de destino

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Tutoriales >

Trabajar con varios esquemas de destino

En el tutorial anterior aprendimos a asignar datos de varios esquemas de origen a un solo esquema de destino y creamos un archivo llamado merged_library.xml donde se almacenan los registros de libros procedentes de dos fuentes. Ahora imaginemos que alguien de otro departamento solicita un subconjunto de datos de este archivo XML. Concretamente solicita un archivo XML que contenga solamente los libros publicados después de 1900.

 

Si quiere puede modificar la asignación MultipleSourcesToOneTarget.mfd que viene con MapForce para poder generar tanto la biblioteca XML completa como la biblioteca con los datos filtrados.

Tutorial_Multiple_Targets

Modelo abstracto de la transformación de datos

En este diagrama puede ver que primero se combinan lo datos de dos esquemas diferentes (books.xsd y library.xsd) y se guardan en un solo archivo XML llamado merged_library.xml. Después se transforman los datos con ayuda de una función de filtrado y se envían al siguiente componente, que se encarga de generar un archivo XML llamado filtered_library.xml. El componente intermedio hace tanto de destino como de origen. En MapForce esta técnica recibe el nombre de encadenar asignaciones y también se utiliza en este tutorial.

 

En este tutorial nuestro objetivo es poder generar tanto el archivo merged_library.xml como el archivo filtered_library.xml siempre que se quiera. Para conseguir nuestro objetivo es necesario seguir estos pasos:

 

Paso nº1: preparar el archivo de diseño de asignación

Como partida utilizamos la asignación MultipleSourcesToOneTarget.mfd de la carpeta <Documentos>\Altova\MapForce2019\MapForceExamples\Tutorial\. Esta asignación es la que diseñamos en el tutorial Asignar varios orígenes de datos a un destino. Para empezar, abra el archivo MultipleSourcesToOneTarget.mfd en MapForce y guárdelo con otro nombre.

 

Asegúrese de guardar la asignación nueva en la carpeta <Documentos>\Altova\MapForce2019\MapForceExamples\Tutorial\ porque hace referencia a varios archivos que están en esa carpeta.

mfdMultipleSourcesToOneTarget-BAS

MultipleSourcesToOneTarget.mfd

 

Paso nº2: agregar y configurar el segundo componente de destino

Para agregar otro componente de destino haga clic en el botón Insertar archivo o esquema XML ic-new-schema de la barra de herramientas y abra el archivo library.xsd situado en la carpeta <Documentos>\Altova\MapForce2019\MapForceExamples\Tutorial\. Haga clic en Omitir cuando la aplicación solicite un archivo de instancia de muestra. La asignación tendrá este aspecto:

tut-04-01-BAS

Como se aprecia en la imagen, ahora la asignación tiene dos componentes de origen (books y library) y dos componentes de destino. Para distinguirlos bien pondremos el nombre filtered_library al segundo componente de destino y definiremos el nombre del archivo XML que debe generar. Esto se consigue haciendo doble clic en el título del segundo componente de destino y editando su configuración:

tut-04-02-BAS

Observe que ahora el componente nuevo se llama filtered_library y que su archivo XML de salida se llama filtered_library.xml.

tut-04-03-BAS

 

Paso nº3: crear las conexiones

Cree una conexión entre el elemento publication del componente merged_library y el elemento publication del componente filtered_library. Aparece una notificación:

tut-04-04-BAS

Haga clic en Aceptar. Observe que en los componentes de destino ahora aparecen nuevos botones: Vista previa ( btn_component_preview ) y Paso a través ( btn_component_pass-through ). En los siguientes pasos del tutorial aprenderemos a usar estos botones.

tut-04-05-BAS

 

Paso nº4: filtrar los datos

Para filtrar los datos antes de pasarlos a filtered_library usaremos un componente de filtrado. Para agregar un componente de filtrado haga clic con el botón derecho en la conexión que existe entre merged_library y filtered_library y seleccione el comando Insertar filtro: nodos/filas del menú contextual.

tut-04-06-BAS

El componente de filtrado aparece ahora en la asignación.

tut-04-07-BAS

 

Como se aprecia en la imagen, el conector de entrada bool es de color naranja, lo cual indica que exige una entrada. Si pasa el puntero por el conector podrá ver que exige una entrada de tipo xs:boolean. Recuerde que para poder ver la información rápida es necesario tener habilitado el botón Mostrar información rápida ic-show-lib-info de la barra de herramientas.

tut-04-07a-BAS

El componente de filtrado exige una condición que devuelva el valor true o false. Cuando la condición booleana devuelva true, los datos de la secuencia publication actual se copiarán en el componente de destino. Sin embargo, cuando devuelva false, no se copiarán datos.

 

En este tutorial nuestro objetivo es filtrar todos los libros que se publicaron después de 1900. Para crear la condición:

 

1.Añada una constante de tipo numérico que tenga el valor "1900" (haciendo clic en Insertar | Constante). Elija el tipo Número.

tut-04-08-BAS

2.En la ventana Bibliotecas busque la función greater y arrástrela hasta el área de asignación.
3.Cree conexiones con la función greater tal y como muestra la siguiente imagen. Estas conexiones dan a MapForce esta instrucción: "cuando publish_year sea mayor que 1900, copiar el elemento de origen publication actual en el elemento de destino publication".

tut-04-09-BAS

 

Paso nº5: consultar la vista previa de resultados y guardar los resultados de cada componente de destino

Ahora ya puede consultar la vista previa de resultados y guardar los resultados de ambos componentes de destino. Cuando en la misma asignación hay varios componentes de destino, puede elegir cuál de los dos se usa para generar la vista previa de resultados. Esto se hace con el botón Vista previa btn_component_preview de los componentes. Si el botón Vista previa btn_component_preview_pressed de un componente está pulsado, significa que ese componente concreto se usará para generar la vista previa de resultados. Este botón no puede estar pulsado en más de un componente a la vez.

 

Por tanto, cuando quiera consultar y guardar los resultados de merged_library (es decir, del componente intermedio), siga estos pasos:

 

1.Haga clic en el botón Vista previa btn_component_preview_pressed del componente merged_library.
2.Haga clic en el botón Resultados situado en la parte inferior del panel de asignación.
3.En el menú Resultados haga clic en el comando Guardar el archivo de salida si quiere guardar los resultados en un archivo.

 

Cuando quiera cuando quiera consultar y guardar los resultados del componente filtered_library:

 

1.Haga clic en el botón Paso a través btn_component_pass-through_pressed del componente merged_lilbrary.
2.Haga clic en el botón Vista previa btn_component_preview_pressed del componente filtered_library.
3.Haga clic en el botón Resultados situado en la parte inferior del panel de asignación.
4.En el menú Resultados haga clic en el comando Guardar el archivo de salida si quiere guardar los resultados en un archivo.

 

El estado del botón Paso a través btn_component_pass-through_pressed desempeña un papel importante en las asignaciones que tienen varios componentes de destino. Si este botón está pulsado, MapForce deja pasar los datos por el componente intermedio para que pueda consultar la vista previa de los resultados de toda la asignación.

 

Si el botón Paso a través btn_component_pass-through no está pulsado, la vista previa incluirá solamente los resultados de la asignación de datos entre merged_library y filtered_library. En el ejemplo que nos ocupa esto daría lugar a un error porque el componente intermedio no tiene un archivo XML de entrada válido para leer datos. Para resolver este problema haga doble clic en el título del componente y especifique un archivo XML de entrada válido:

tut-04-10-BAS

La asignación creada en este tutorial tiene varios componentes de salida y podemos consultar y guardar los resultados de cada uno de ellos. Para más información sobre el funcionamiento de los componentes de paso a través consulte el apartado Asignaciones encadenadas.

 


© 2019 Altova GmbH