描述(Description)
使用JavaScript作业条目来计算布尔表达式。结果可用于确定下一步将要执行的步骤。Javascript作业条目会评估并返回true或false。
评估(Evaluation)
JavaScript作业条目的结果为true或false。换句话说,它需要以布尔表达式结尾。
下面是一些可能的评估,以结束您的脚本:
lines_input > 100 或 true 或者 parent_job.getVariable("INPUT_DIRECTORY").equals("/tmp");
以下变量可用于表达式:
变量(Variables)
这是评估变量字符串内容的方法:
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)
作业条目完成后,执行结果将是一个Result对象,向JavaScript引擎公开为“ previous_result”:
表达式 | 替代 | 数据类型 | 含义 |
---|---|---|---|
previous_result.getResult() | boolean | 如果先前的作业条目已成功执行,则为true;如果存在某些错误,则为false。 | |
previous_result.getExitStatus() | exit_status | int | 前一个Shell脚本作业条目的退出状态 |
previous_result.getEntryNr() | nr | int | 每次执行作业条目时,条目号都会增加。 |
previous_result.getNrErrors() | errors | long | 错误数,也可以作为变量“错误”使用 |
previous_result.getNrLinesInput() | lines_input | long | 从文件或数据库读取的行数 |
previous_result.getNrLinesOutput() | lines_output | long | 写入文件或数据库的行数 |
previous_result.getNrLinesRead() | lines_read | long | 从上一步读取的行数 |
previous_result.getNrLinesUpdated() | lines_updated | long | 文件或数据库中更新的行数 |
previous_result.getNrLinesWritten() | lines_writer | long | 写入下一步的行数 |
previous_result.getNrLinesDeleted() | lines_deleted | long | 删除的行数 |
previous_result.getNrLinesRejected() | lines_rejected | long | 通过错误处理拒绝并传递到另一步骤的行数 |
previous_result.getRows() | List | 结果行,另请参见下文。 | |
previous_result.isStopped() | boolean | 标记以指示上一个先前的作业条目是否停止。 | |
previous_result.getResultFilesList() | List | 上一个作业条目中使用的所有文件的列表 | |
previous_result.getNrFilesRetrieved() | files_retrieved | int | 从FTP,SFTP等检索到的文件数。 |
previous_result.getLogText() | String | 上一个作业条目及其子执行的日志文本。 | |
previous_result.getLogChannelId() | String | 上一个作业条目的日志通道的ID。您可以使用它在日志通道日志表中查找有关执行沿袭的信息。 | |
is_windows | Boolean | 如果作业在Windows变体上运行,则为true,否则为false。 |
平台(Platform)
我们还公开了一个名为“ is_windows”的变量,以帮助您做出特定于平台的选择
行数(rows)
我们向JavaScript公开的“rows”变量可帮助您使用“将行复制到结果”步骤评估传递到下一个作业条目的结果行。
这是有关如何使用此数组的示例脚本:
var firstRow = rows[0];
firstRow.getString("name", "").equals("Foo")
js的使用:
var prevRow=previous_result.getRows(); parent_job.setVariable("prevRow",prevRow); parent_job.setVariable("size",prevRow.size()); parent_job.setVariable("size1",prevRow.get(0).size()); parent_job.setVariable("prevRow.get(0)", String(prevRow.get(0)).replace("],[",",").replace("[","").replace("]","").split(",")[0]); true;
实例:kettle循环抽取数据