Altova MapForce 2023 Enterprise Edition

Depuración de asignaciones

Inicio Anterior Inicio Siguiente

MapForce viene con un depurador de asignaciones integrado para el lenguaje de transformación integrado. El depurador de asignaciones le permitirá:

 

Ver y analizar los valores que produce la asignación por cada uno de los conectores.

Resaltar en la asignación el contexto (conjunto de nodos) responsable de producir un valor determinado.

Ejecutar paso a paso una asignación de datos para ver cómo se procesa o calcula cada valor en tiempo real y generar una vista previa del resultado de la asignación a medida que se produce.

Establecer puntos de interrupción en los que se debe detener la ejecución de la asignación y ver los valores que se están procesando en ese momento.

Ver el historial de valores procesados por un conector desde que se empezó a ejecutar la asignación hasta la posición actual de la ejecución.

 

El depurador de asignaciones solamente está disponible si el lenguaje de transformación de la asignación es BUILT-IN. Si comienza a depurar una asignación configurada para otro tipo de lenguaje, MapForce solicitará que cambie el lenguaje por BUILT-IN. También puede convertir una asignación al lenguaje BUILT-IN seleccionando el comando de menú Resultados | Motor de ejecución integrado. En ambos casos la conversión a BUILT-IN solo será posible si la asignación carece de componentes incompatibles con el lenguaje BUILT-IN (como las funciones XSLT por ejemplo).

 

El depurador de MapForce se diferencia de los depuradores tradicionales en que no recorre el código de programa línea por línea (ya que en MapForce no es necesario escribir código). Por el contrario, el depurador de MapForce expone los resultados del código generado a partir de las asignaciones diseñadas. Concretamente, el depurador registra los valores que se pasan entre los componentes de la asignación a través de los conectores de entrada y salida. Los valores registrados se pueden analizar después en la asignación directamente o en ventanas especiales.

 

A continuación explicamos algunos casos de uso para trabajar con el depurador de asignaciones.

 

Depuración con puntos de interrupción

Cuando necesite detener la ejecución de la depuración en una posición determinada de la asignación, podrá establecer puntos de interrupción (tal y como se hace en los entornos de desarrollo tradicionales). La diferencia es que en MapForce los puntos de interrupción no se añaden a una línea de código sino a un conector de entrada o salida de un componente de la asignación. También puede añadir condiciones a los puntos de interrupción (lo cual puede ser de gran ayuda si solamente queremos que la ejecución se detenga solamente si se cumple cierta condición).

 

diagram_debugging_breakpoints

Puede definir puntos de interrupción en los conectores pertinentes y ejecutar la asignación hasta que se encuentre el primer punto de interrupción y después continuar hasta el siguiente y así sucesivamente. De este modo podrá analizar el contexto de la asignación y los valores asociados a los conectores elegidos. También podrá acelerar o ralentizar la ejecución con ayuda de los comandos Paso a paso por instrucciones, Paso a paso para salir, Paso a paso por procedimientos y Paso mínimo que ofrece el depurador. Estos comandos sirven para pasar por alto partes de la asignación o ejecutar partes de la asignación más detalladamente.

 

Depuración por pasos

Puede depurar una asignación por pasos y analizar el contexto de la asignación y los valores asociados a cada paso. Al igual que en el tipo de depuración anterior podrá acelerar o ralentizar la ejecución con los comandos Paso a paso por instrucciones, Paso a paso para salir, Paso a paso por procedimientos y Paso mínimo que ofrece el depurador.

diagram_debugging_steps

 

Analizar el registro de valores

Puede configurar MapForce para que recuerde el registro de todos los valores (historial de seguimiento) que fueron procesados por todos lo conectores mientras depura una asignación de datos. El historial de seguimiento puede deshabilitarse ya que puede no ser una opción adecuada para las asignaciones que hagan un uso intensivo de lo datos. Si se deshabilita el historial de seguimiento, podrá analizar el registro de todos los valores procesados por cada conector hasta la posición actual de la ejecución. También puede configurar MapForce para que recree el contexto de asignación asociado con un valor determinado (lo cual puede ayudarle a comprender el motivo por el que se produjo dicho valor).

diagram_debugging_standard

 

Establecer el contexto en un valor relacionado con la posición actual de la ejecución

Cuando el depurador se encuentra en una posición determinada de la ejecución, se puede analizar el contexto de un valor pasado relacionado con la posición actual de la ejecución (como si se retrocediera un poco en la ejecución):

diagram_debugging_step_back

El sentido del contexto es explicar por qué se calcula un valor. En otras palabras, describe cómo se generó un valor determinado de la asignación. El contexto suele ser la posición actual de la ejecución, aunque también puede ser un contexto del pasado reciente que MapForce permite definir. Cuando el contexto se establece en un valor determinado, MapForce resalta en la asignación directamente los nodos que son relevantes, ofrece consejos junto a los conectores y expone información adicional en las ventanas del depurador (ventanas Valores, Contexto y Puntos de interrupción).

 

Cuando termine de inspeccionar un contexto de la asignación que no sea igual a la posición actual de la ejecución, podrá restablecer el contexto en la posición actual de la ejecución:

diagram_debugging_reset

 

Restricciones

Cuando MapForce ejecuta una asignación, a veces optimiza el código de forma interna (por ejemplo, almacenando datos en caché o calculando resultados intermedios en puntos aleatorios). Esto puede provocar que sea imposible acceder a ciertos conectores (y, por tanto, a ciertos puntos de interrupción) durante la depuración. Cuando esto ocurre, MapForce muestra una notificación. Nota: las optimizaciones de código de MapForce (y por consiguiente el comportamiento que expone el depurador) pueden diferir en las diferentes versiones del software aunque el resultado de la asignación sea el mismo.

El depurador puede depurar la generación resultante para cada componente de destino uno a uno. Si la asignación incluye varios componentes de destino, deberá seleccionar qué componente de destino se ejecuta en el depurador.

Actualmente la depuración no es compatible con las acciones de tabla de BD (como "Insertar todo", "Actualizar si", etc.) de los componentes de base de datos.

No se pueden establecer puntos de interrupción en estas entidades: constantes, la función core | position, elementos descendientes de las conexiones de copia total y parámetros de funciones definidas por el usuario insertadas.

© 2017-2023 Altova GmbH