Saltar al contenido

Solución de problemas de operaciones en Jitterbit Integration Studio

Introducción

Si experimentas problemas al ejecutar una operación, se recomiendan las siguientes acciones de solución de problemas.

Probar la conexión

Para cualquier operación que utilice conectores, en la conexión, haz clic en el botón Probar para asegurarte de que la conexión sea exitosa.

Para conectores basados en Connector SDK desplegados en operaciones que se ejecutan en agentes privados, hacer clic en el botón Probar asegura que la última versión del conector se descargue al agente (a menos que se esté utilizando la política de organización Deshabilitar actualización automática del conector).

Verificar los registros de la operación

Revisa los registros de la operación para obtener cualquier información escrita durante la ejecución de la operación.

Dependiendo del tipo de agente, puedes hacer lo siguiente para recuperar archivos de registro y datos adicionales:

Posibles errores en los registros de la operación

Las siguientes secciones cubren errores que pueden estar presentes en un registro de operación y su resolución.

Advertencia de subelemento extra

Una advertencia de subelemento extra en los mensajes de registro generalmente puede ser ignorada. Esta advertencia indica que la carga útil de la API de un conector devolvió más nodos o campos de datos de los definidos en el esquema de datos de respuesta.

Caracteres no permitidos en los mapeos de esquema XML

Dependiendo de la actividad del conector, estos caracteres son inválidos y resultarán en un error en tiempo de ejecución:

\x00 (NULL) \x0E (cambio de salida)
\x01 (inicio de encabezado) \x0F (cambio de entrada)
\x02 (inicio de texto) \x1A (carácter de sustitución)
\x03 (fin de texto) \x1B (escape)
\x04 (fin de transmisión) \x1C (separador de archivo, separador de información cuatro)
\x05 (consulta) \x1D (separador de archivo, separador de información tres)
\x06 (reconocimiento) \x1E (separador de archivo, separador de información dos)
\x07 (campana) \x1F (separador de archivo, separador de información uno)
\x08 (retroceso) \xD800 a \xDFFF (caracteres de sustitución alta UTF-16)
\x0B (tabulación vertical) \xFFFE
\x0C (avance de formulario) \xFFFF

Cuando los datos de entrada o salida que se suministran o devuelven de una transformación adyacente a una actividad de conector basada en XML contienen uno de los caracteres anteriores, se devuelve un error específico que hace referencia a ese carácter en tiempo de ejecución. Por ejemplo, cuando el carácter de control \x1E está presente en la transformación de respuesta para la actividad Get BAQ de Epicor Kinetic, se devuelve este error en tiempo de ejecución:

La excepción es carácter de espacio en blanco inválido (0x1e) en el texto a output

Elementos XML no soportados cuando están incrustados en JSON

Las secciones de datos de carácter (CDATA) no son compatibles con XML incrustado en JSON destinado a ser enviado a través de una transformación. Incluir secciones CDATA puede causar que aparezca el siguiente error en un registro de operaciones en tiempo de ejecución:

La transformación falló. Error: La operación "Operación" falló.
Error: Falló al convertir el archivo XML a JSON.
org.jitterbit.integration.server.engine.EngineSessionException: org.xml.sax.SAXParseException ...

Para solucionar esto, utiliza un script de Jitterbit para Reemplazar los caracteres &, <, >, ' y " de toda la sección CDATA, incluida su definición (<![CDATA[ ... ]]>), con &amp, &lt, &gt, &apos, &quot respectivamente. Si es necesario, se puede reemplazar toda la cadena XML que contiene la sección CDATA si apuntar a la sección no se ajusta a tu caso de uso.

El siguiente ejemplo se considera inválido sin reemplazos:

{
  "name": "Jitterbit",
  "data": "<xml><content><![CDATA[<greeting>Hello, world!</greeting>]]></content></xml>"
}

Reprocesamiento de esquemas XML reflejados

Debido a los cambios realizados en las versiones de Harmony 10.25 y 10.27, es posible que observes un comportamiento diferente en proyectos creados antes de estas versiones. Estos cambios afectan a los esquemas XML que han sido reflejados y es más probable que impacten en los mapeos que utilizan funciones XML que involucran espacios de nombres, como la función SelectNodes. En este caso, los mapeos que anteriormente eran válidos pueden ahora ser inválidos con un error relacionado con la sintaxis de la función XML.

Compara las diferencias entre este ejemplo de esquema XML reflejado antes de 10.25 con uno creado en 10.25 o posterior:

Esquema XML anotado

  • Ejemplo de Esquema XML Antes de 10.25: En proyectos creados antes de 10.25, los esquemas XML reflejados utilizan el prefijo de espacio de nombres predeterminado para documentos XML: xsi. Como se muestra resaltado en rojo arriba, xmlns:xsi declara el espacio de nombres y los campos no mapeados se muestran en el esquema con el atributo xsi:nil="true".
  • Ejemplo de Esquema XML en 10.25 y Posteriores: En proyectos creados en 10.25 y posteriores y resaltados en verde arriba, los esquemas XML reflejados utilizan el prefijo de espacio de nombres ns para declarar un espacio de nombres calificado. Los campos no mapeados no se muestran en el esquema.

En las versiones 10.25 y 10.26, si importaste un proyecto con un esquema XML reflejado que fue creado antes de 10.25, el esquema fue reprocesado y cambiado para usar el prefijo de espacio de nombres calificado.

A partir de la versión 10.27, los proyectos importados cuyos esquemas XML reflejados fueron creados antes de 10.25 conservan el prefijo de espacio de nombres del esquema XML predeterminado para que el esquema sea idéntico al que se creó. Este cambio significa que cualquier proyecto anterior a 10.25 que se importe a la versión actual debería funcionar como se diseñó originalmente.

Para forzar una actualización de un esquema XML anterior a 10.25 para usar el prefijo de espacio de nombres actualizado, puedes regenerar el esquema actualizándolo o reconfigurando la actividad que proporciona el esquema.

Caracteres especiales en esquemas JSON proporcionados por conectores

Cuando una transformación utiliza un esquema JSON heredado de una actividad de conector adyacente, cualquier carácter especial en un campo o nombre de nodo del esquema se reemplaza por guiones bajos (_).

Al utilizar el procesamiento JSON heredado (el predeterminado para proyectos creados antes de la versión 11.48 de Harmony), este comportamiento puede causar que se devuelvan errores desde el punto final.

Por ejemplo, si la actividad proporciona un nombre de campo de location_ids[], se convierte en location_ids__, sin embargo, el endpoint aún espera el nombre de campo original de location_ids[] y devuelve el error, como "error_message": "{location_ids:expected String to be a Array}",}}.

Para resolver este problema, sigue estos pasos:

  1. Confirma que se está utilizando un esquema JSON en la actividad afectada. Tales esquemas tendrán un nodo raíz llamado json:

    json schema

  2. Configura el proyecto para usar el procesamiento de nombres JSON preservados activando la opción Preserve JSON names configuración del proyecto (se requiere la versión del agente 11.48 o posterior).

  3. Reconfigura, despliega y ejecuta la operación.

    Importante

    Cuando Preserve JSON names está activado en un proyecto donde actualmente está deshabilitado, ten en cuenta que el procesamiento de nombres JSON preservados solo se utilizará para operaciones y esquemas configurados después de que se habilite la configuración. Es decir, las operaciones y esquemas existentes seguirán utilizando el procesamiento JSON heredado. Recomendamos reconfigurar todas las operaciones y esquemas existentes en tales proyectos, ya que usar ambos métodos de procesamiento de esquemas en un solo proyecto puede causar inconsistencias en el proyecto.

Al utilizar el procesamiento de nombres JSON preservados, puedes verificar el nombre del campo o nodo que se está pasando al endpoint viendo el jsonPropertyName en los datos de entrada o salida de la actividad cuando se habilita el registro de depuración (para agentes en la nube o para agentes privados). El valor del jsonPropertyName es el valor que se envía en la solicitud:

jsonPropertyName