覆盖主要内容

Java Script

组件介绍

使用 JavaScript 作业项来计算布尔表达式。 结果可用于确定下一步将要执行的步骤。 您可以使用函数,过程调用,“与”,“与”号,“或”,“等式”等。Javascript 作业条目评估并返回 true 或 false。


双击组件运行图


JavaScript 作业条目的结果为真或假。换句话说,它需要以布尔表达式结束。 下面是一些可能的评估,以 : 来结束脚本。

lines_input > 100

true

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

表达式可用于以下变量:

变量描述
错误上一个作业条目中的错误数(长)
lines_input从数据库或文件读取的行数(长)
lines_output写入数据库或文件的行数(长)
lines_updated数据库表中更新的行数(长)
lines_read从上一个转换步骤读取的行数(长)
lines_written写入下一个转换步骤的行数(长)
files_retrieved从 FTP 服务器检索的文件数(长)
exit_statusshell 脚本的退出状态(整数)
nr(整数)上一个作业条目的作业条目编号(长);每个下一个作业条目的增量
is_windows如果五角数据集成在 Windows 上运行(布尔值),请使用
parent_job当前作业条目的父作业 (org. pentaho. di. job. 作业类)
条目当前职位条目 (org. pentaho. di. job. entry. jobEntryEval 类)

变量

  以下是 如何计算变量字符串的内容:parent_job.getVariable("NR_OF_ROWS"= 1000000 由于

有权访问 parent_job 对象,也可以在父作业中设置变量:parent_job.setvariable("NR_OF_ROWS","1000000");

例如,您可以执行以下操作来操作此作业条目中的变量:

useDate = parent_job.getVariable("use_date").equals("1");
if (useDate == 0) { //We get to use native java classes as this is using Rhino mocks???
date = new java.util.Date();
date.setDate(date.getDate()-1); //Go back 1 full day
dateFormat = new java.text.SimpleDateFormat("yyyyMMdd");
newDateStr = dateFormat.format(date);
parent_job.setVariable("start_date", newDateStr);
}
true;

上一个结果

作业输入完成后,执行结果将是作为"previous_result"公开到 JavaScript 引擎的 Result 对象:

表达式替代数据类型意义
previous_result. getExitStatus()exit_statusint上一个 shell 脚本作业条目的退出状态
previous_result. getLogchannelId()String上一个作业条目的日志通道的 ID。您可以使用它查找日志通道日志表中有关执行跟踪的信息。
previous_result. getLogText()String执行上一个作业项及其子项的日志文本。
previous_result. getnrfilesRetrieved()files_retrievedint从 FTP、SFTP 等检索的文件数。
previous_result.getNrLinesDeleted()lines_deletedlong已删除行数
previous_result.getNrLinesWritten()lines_writtenlong写入下一步的行数
previous_result.getNrLinesOutput()lines_outputlong写入文件或数据库的行数
previous_result.getNrLinesInput()lines_inputlong从文件或数据库读取的行数
previous_result.getNrLinesRead()lines_readlong从前面的步骤读取的行数
previous_result.getNrLinesRejected()lines_rejectedlong拒绝并通过错误处理传递到另一个步骤的行数
previous_result.getNrLinesUpdated()lines_updatedlong文件或数据库中更新的行数
previous_result.getNrErrors()errorslong错误数,也可以作为变量"错误"
previous_result.getResult()boolean如果成功执行上一个作业项,则为 true;如果存在某些错误,则为 false。
previous_result.getResultFilesList()List<ResultFile>上一个作业条目(或条目)中使用的所有文件的列表
previous_result.getRows()List<RowMetaAndData>结果行,另请参阅下面。
previous_result.isStopped()boolean标记以表示上一个作业条目是否停止。
is_windowsboolean如果作业在 Windows 变体上运行,则为 True,如果情况并非如此,则为 false。

平台

  我们还公开了一个名为"is_windows"的变量,以帮助您做出特定于平台的选择

  向 JavaScript 公开的"行"变量可帮助您使用"复制行结果"步骤评估传递到下一个作业条目的结果行。 下面是一个如何使用此数组的示例脚本:

var firstRow = rows[0];

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

此脚本将遵循绿色作业跃点是表达式计算为 true。如果字段"name"包含字符串"Foo",将发生这种情况。