Altova MapForce 2025 Professional Edition

Con los componentes value-map (imagen siguiente) puede reemplazar un valor por otro con la ayuda de una tabla de consulta predefinida. Este tipo de componente solo procesa un valor cada vez, por lo que en la asignación tiene una entrada y una salida.

mf_lookup_01

Los componentes value-map son útiles si quiere asignar elementos individuales dentro de dos conjuntos para reemplazar elementos. Por ejemplo, puede expresar los días de la semana como números (1, 2, 3, 4, 5, 6 y 7) y asignarlos a los nombres de los días ("lunes", "martes", "miércoles", etc.). También puede asignar los nombres de los meses ("enero", "febrero", "marzo", etc.) a la representación numérica de los mismos (1, 2, 3, 4, etc.). Cuando ejecute la asignación los valores que coincidan serán reemplazados según su tabla personal de consulta. Los valores de estos dos conjuntos pueden ser de distinto tipo, pero cada conjunto debe almacenar valores del mismo tipo de datos.

 

Los componentes value-map sirven para realizar consultas simples en las que cada valor del primer conjunto corresponde a un único valor del segundo conjunto. Si no se encuentra algún valor en la tabla de consulta puede optar por reemplazarlo con el valor que quiera, con un valor vacío o pasarlo tal y como esté. Si necesita buscar o filtrar valores en base a un criterio más complejo, es mejor que use uno de los componentes de filtrado.

 

Es importante subrayar que cuando se genera código o se compila un archivo de ejecución de MapForce Server desde la asignación, la tabla de consulta está incrustada en el código o archivo generado. En consecuencia, solo recomendamos que defina una tabla de consulta directamente en la asignación si los datos de esa tabla no cambian a menudo y si no se trata de una gran cantidad de datos (menos de unas cien entradas). Si los datos de la tabla de consulta cambian a menudo, puede que resulte difícil mantener al día tanto la asignación como el código generado. En este caso sería más sencillo guardar la tabla de consulta en formato texto, XML, BD o Excel.

 

Si la tabla de consulta es enorme ralentizará la ejecución de la asignación. En este caso es mejor utilizar un componente de BD con SQL-Where. En estos casos son útiles las bases de datos SQLite, dada su portabilidad. Del lado servidor puede mejorar el rendimiento de las tablas de consulta ejecutando sus asignaciones con MapForce Server o MapForce Server Advanced Edition.

 

Crear una asignación de valores

Para añadir un componente de asignación de valores a la asignación, elija una de estas opciones:

 

Haga clic en el botón de la barra de herramientas Insertar asignación de valores ic-valmap.

En el menú Insertar haga clic en Asignación de valores.

Haga clic con el botón derecho en una conexión y seleccione Insertar asignación de valores en el menú contextual.

 

Así añade un componente de asignación de valores nuevo a la asignación. Ahora puede empezar añadir pares de elementos a la tabla de consulta. Para ello haga doble clic en la barra del título del componente o haga clic con el botón derecho y seleccione Propiedades en el menú contextual.

mf_lookup_02

En el momento de ejecutar la asignación, MapForce comprueba cada valor que llega a la entrada del componente value-map. Si hay un valor que coincida en la columna izquierda de la tabla, este reemplaza al valor de entrada original con el valor de la columna derecha. De lo contrario puede configurarla para que devuelva:

 

Un valor de reemplazo. En el ejemplo anterior el valor de reemplazo es el texto "fecha incorrecta". También puede definir el valor de reemplazo como un valor vacío. Para ello basta con que no introduzca ningún texto en ese campo.

El valor de entrada original. Esto significa que si no hay ninguna coincidencia en la tabla de consulta el valor que se pasa a la asignación es el valor de entrada original sin modificar.

 

Si no configura una condición "Si no existe, entonces", entonces el componente value-map devuelve un nodo vacío si no encuentra una coincidencia. En este caso no se pasa ningún valor al componente de destino y el resultado contiene campos vacíos. Para evitar esto debe configurar la condición "Si no existe, entonces" o usar la función substitute-missing.

 

No es lo mismo definir un valor de reemplazo como vacío y no definir la condición "Si no existe, entonces". En el primer caso, el campo se genera en el resultado, pero contiene un valor vacío. En el segundo caso, el campo (o elemento XML) que contiene el valor ni siquiera se crea. Para más información consulte Ejemplo: reemplazar puestos de trabajo.

 

Rellenar una asignación de valores

En una tabla de consulta puede definir tantos pares de valores como necesite. Puede introducirlos de forma manual o copiar los datos de la tabla desde archivos de texto, CSV o Excel. En la mayoría de los casos también se pueden copiar y pegar tablas desde una página HTML usando un navegador web. También puede pegar datos desde la cuadrícula de la BD en el panel de consulta de BD.  Si copia datos desde archivos de texto los campos deben estar separados por el carácter tabulador. Por lo general MapForce también reconoce texto separado por coma o por punto y coma.

 

Al crear tablas de consulta, tenga en cuenta lo siguiente:

 

1.Todos los elementos de la columna izquierda deben ser únicos. De lo contrario no es posible determinar qué elemento en concreto quiere asignar.

2.Los elementos que pertenecen a la misma columna deben ser del mismo tipo de datos. Puede elegir el tipo de datos de la lista desplegable que hay al principio de cada columna en la tabla de consulta. Si necesita convertir tipos booleanos, introduzca el texto "true" o "false". Para ver un ejemplo consulte el apartado Ejemplo: reemplazar días de la semana.

 

Si MapForce encuentra datos no válidos en la tabla de consulta, entonces muestra un mensaje de error y resalta las filas no válidas en color rosa:

mf_lookup_03

Para usar una fuente de datos externa para importar datos en el componente de asignación de valores, siga estos pasos:

 

1.Seleccione las celdas relevantes en el programa de origen (por ejemplo, Excel). Puede seleccionar una sola columna de datos o dos adyacentes.

2.Copie los datos en el portapapeles con el comando Copiar del programa externo.

3.En el componente de asignación de valores haga clic en la fila anterior a la fila en la que quiere pegar los datos.

4.Haga clic en el botón Pegar tabla desde el portapapeles mf_ic_paste del componente de asignación de valores. También pude pulsar Ctrl+V o Mayús+Insertar.

 

Nota:El botón Pegar tabla desde el portapapeles sólo se habilita si copia primero datos de alguna fuente de datos (es decir, si hay datos en el portapapeles).

 

Si el portapapeles contiene varias columnas, en la tabla de consulta solamente se insertan las dos primeras columnas y el resto de ellas se omite. Si pega datos desde una única columna encima de otros valores aparece un menú contextual que pregunta si los datos del portapapeles se deben insertar como filas nuevas o si se deben sobrescribir las que ya existen. Por lo tanto, si lo que quiere es sobrescribir los datos de la tabla de consulta en vez de insertar nuevas filas, debe asegurarse de que el portapapeles debe contener una sola columna y no varias.

 

Para insertar filas manualmente antes de una fila que ya existe, primero debe hacer clic en la fila en cuestión y después pulsar el botón Insertar mf_ic_insert.

 
Para mover una fila que ya existe a una posición distinta, arrástrela hasta la nueva posición (hacia arriba o hacia abajo) mientras mantiene pulsado el botón izquierdo del ratón.

 

Si quiere copiar o cortar filas para después pegarlas en una posición distinta, primero seleccione la fila en cuestión y después haga clic en el botón Copiar mf_ic_copy (o Cortar mf_ic_cut). También puede copiar o cortar filas que no sean consecutivas. Para ello, mantenga pulsada la tecla Ctrl mientras va haciendo clic en las filas que quiere seleccionar. Tenga en cuenta que el texto cortado o copiado siempre contiene valores de ambas columnas, no puede cortar ni copiar valores de una columna solamente.

 

Para eliminar una fila haga clic en ella y después pulse el botón Eliminar mf_ic_delete.

 

Para intercambiar una columna por otra haga clic en el botón Intercambiar columnas mf_ic_swap.

 

Cambiar el nombre de parámetros de asignación de valores

Por defecto, el parámetro de entrada de un componente de asignación de valores se llama "input" (entrada) y el parámetro de salida se llama "result" (resultado). Para que la asignación resulte más clara puede cambiar el nombre a cualquiera de estos parámetros haciendo clic en el botón Editar mf_ic_pencil que hay junto al nombre en cuestión. Este es un ejemplo de un componente de asignación de valores en el que se han cambiado los nombres de los parámetros:

mf_lookup_04

 

Vista previa de una asignación de valores

Una vez haya terminado de crear la asignación de valores puede acceder a una vista previa de su implementación directamente desde la asignación. Para ello sólo debe pasar el cursor por encima de la barra del título del componente:

mf_lookup_05

 

Crear una asignación de valores a partir de un valor de enumeración

MapForce le permite crear una asignación de valores a partir de nodos con valores de enumeración. Actualmente, esta función es compatible con los componentes XML cuyos nodos tienen facetas de enumeración (todas las ediciones) y con los componentes EDI cuyos nodos tienen listas de códigos EDI (edición Enterprise). Puede crear este tipo de asignación de valores a partir del conector de entrada o de salida de un nodo, según lo que necesite.

 

Para crear una asignación de valores a partir de un valor de enumeración, siga estos pasos:

 

1.Haga clic con el botón derecho en el conector de entrada o salida del nodo (según sus objetivos) para los valores de enumeración desde los que desea crear una asignación de valores. En nuestro ejemplo (imagen siguiente) hemos seleccionado el conector de salida del nodo Genre.

MF_CreateValueMapForEnumValues

2.Seleccione Crear asignación de valores para valores de enumeración en el menú contextual.

3.Ahora aparecerá el cuadro de diálogo Propiedades de la asignación de valores. Tanto la parte de entrada como la de salida de la asignación de valores se prellenan con los mismos valores de enumeración. Ahora puede revisar y editar los valores según sea necesario. La siguiente imagen muestra la lista de valores Genre que tiene inicialmente el archivo XML de origen (entrada) y la lista de valores modificados que queremos asignar (salida).

MF_ValueMapModifiedEnumValues

4.Cuando termine de revisar los valores de enumeración, haga clic en Aceptar. Con esta acción se añadirá un componente value-map al área de asignación. El componente value-map se conectará automáticamente al nodo con cuyos valores de enumeración se creó la asignación de valores.

5.Conecte el otro parámetro de la asignación de valores con el nodo correspondiente y continúe diseñando su asignación como desee.

 

© 2018-2024 Altova GmbH