Evaluando condiciones en la entrada de trabajo "Javascript"

Introducción

Ocasionalmente surge la pregunta sobre cómo evaluar ciertas condiciones en la entrada de trabajo "Javascript" de la versión 3.x de Pentaho Data Integration.

Evaluación

El resultado de una entrada de trabajo "Javascript" es ó bien verdadero ó bien falso. En otras palabras, debe finalizar con una expresión booleana.

Aquí se listan algunas de las evaluaciones posibles para finalizar un script:

lineas_entrada > 100

ó

true

ó

parent_job.getVariable("DIRECTORIO_ENTRADA").equals("/tmp");

Variables 

Así es como se evalúa el contenido de una cadena variable:

parent_job.getVariable("NR_DE_FILAS") == 1000000;

Siendo que tenemos acceso al objeto "parent_job", también podemos establecer variables en el trabajo padre de esta manera:

parent_job.setVariable("NR_DE_FILAS", "1000000");

(La llamada a "setVariable" puede evaluar a "falso". Coloque un "true" a continuación para evitar que el paso evalúea a "falso" y arroje un error)

Resultado previo

Cuando una entrada de trabajo finaliza, el resultado de la ejecución será un objeto "Result" expuesto como "previous_result" al motor Javascript

Expresión

Alternativa

Tipo de Dato

Significado

previous_result.getResult()


boolean

"true" si la entrada previa se ejecutó correctamente, "false" si hubo algún error

previous_result.getExitStatus()

exit_status

int

Estado de salida de la entrada de trabajo "Script de línea de comandos" previa

previous_result.getEntryNr()

nr

int

El número de entrada se aumenta cada vez que una entrada de trabajo es ejecutada

previous_result.getNrErrors()

errors

long

El número de errores

previous_result.getNrLinesInput()

lines_input

long

El número de filas leídas de un archivo ó base de datos

previous_result.getNrLinesOutput()

lines_output

long

El número de filas escritas a un archivo ó base de datos

previous_result.getNrLinesRead()

lines_read

long

El número de filas leídas de pasos previos

previous_result.getNrLinesUpdated()

lines_updated

long

El número de filas actualizadas en un archivo ó base de datos

previous_result.getNrLinesWritten()

lines_written

long

El número de filas escritas al siguiente paso

previous_result.getNrLinesDeleted()

lines_deleted

long

El número de filas eliminadas

previous_result.getNrLinesRejected()

lines_rejected

long

El número de filas rechazadas y pasadas otro paso vía manejo de errores

previous_result.getRows()


List<RowMetaAndData>

Las filas resultantes, ver también abajo

previous_result.isStopped()

 

boolean

Bandera que señaliza si la entrada de trabajo anterior se detuvo ó no

previous_result.getResultFilesList()

 

List<ResultFile>

La lista de todos los archivos utilizados en la ó las entradas de trabajo previas

previous_result.getNrFilesRetrieved()

files_retrieved

int

El número de archivos recibidos por FTP, SFTP, etc.

Plataforma

Existe una variable "is_windows" que permite realizar decisiones específicas para cada plataforma.

Filas

La variables "rows" que se expone a Javascript permite evaluar las filas resultado que fueron pasados al trabajo mediante el paso "Copiar filas a resultado".
Aquí hay un script que ejemplifica cómo utilizar el arreglo:

var primeraFila = rows[0];

firstRow.getString("nombre", "").equals("Foo")

 Este script seguirá el salto de trabajo verde si la expresión evalúa a verdadero. Esto sucede si el campo "nombre" contiene a la cadena "Foo".