Esta crónica es la primera que hago para el año 2021. Espero que quien esté leyendo la misma haya tenido unas fantásticas celebraciones navideñas y de fin de año, deseando que este año que comienza sea de lo mejor en todos los aspectos, y en especial, deséandoles mucha salud, que este asunto del COVID se quede como recuerdo y una historia de algo que pasó entre 2020 y 2021.
Sucedió que me encontraba generando una transformación en Pentaho, que se encargaría de consumir un web service de tipo SOAP, extraer un campo de la respuesta del mismo que viene codificada en base 64, decodificarla y depositar el resultado en un archivo de texto con extensión XML, cuyo contenido evidentemente era una estructura XML.
A continuación, muestro la primera versión de la transformación:

Un paso donde, a través de constantes, agrego los headers que se utilizarán en la petición. Posteriormente un Modified javascript variable para generar el ensobretado, el paso para consumir un web service, otro paso con javascript para manipular la respuesta del servicio; la extracción de los datos, decodificación y la salida al archivo de texto.
Todo se apreciaba en orden, pero, al ejecutarlo, no hacía nada. Es decir, la transformación ejecutaba pero no generaba un solo resultado. Tampoco había reporte de error o excepciones. Estuve revisando esto durante más de 30 minutos, sin éxito en búsquedas en google o en stackoverflow. Entonces, ¿cuál era el problema?
Más que problema, son problemas, en plural. Si ustedes son del tipo de usuario empírico o poco documentado, como es el caso de quien suscribe, ahí radica el primer problema. Hay que leer las instrucciones cuidadosamente antes de usar. El segundo problema, radica en una falta de entendimiento del concepto detrás de Pentaho y las transformaciones.
Las transformaciones están basadas en un flujo de datos, que como su nombre lo indica, requieren datos qué procesar. Para que una transformación haga algo, ejecute los pasos en turno, debe tener al menos un medio que le entregue datos con qué trabajar, en palabras propias de Pentaho, un paso de tipo INPUT.
Como corolario del párrafo anterior, veamos la descripción del paso Modified javascript value, que es con el que iniciaba mi transformación:

Marqué en amarillo los dos puntos de mayor importancia:
- El código que se teclee en el área de script se ejecuta por cada registro que llegue al paso
- Este paso no es un paso de entrada propiamente, y no ejecuta sin una entrada
«… y no ejecuta sin una entrada…» ¡Ajá! La solución ya era obvia. Agregué un input a la transformación; como toda la lógica iniciaba en el modified javascript value, el valor de entrada no tenía importancia, por lo que por un paso que genera una constante. La transformación quedó así:

Habiendo creado el input para generar el flujo de datos que requería la transformación, todo fluyó como se esperaba:

La reflexión de esta crónica, viene acompañada de aquella leyenda de las evaluaciones escritas: «Lee cuidadosamente cada pregunta antes de contestar», que podría ser utilizada en este contexto como: «Lee cuidadosamente las instrucciones antes de utilizar».

Deja un comentario