Java Script
组件介绍
组件图标
组件作用
JavaScript 操作运行 Javascript 代码并返回一个布尔表达式。 结果可用于确定下一步将执行的操作。 您可以使用函数、过程调用、AND、& 符号、OR、EQUAL 等。 Javascript 工作流操作评估并返回 true 或 false。
- 输入:无
- 输出:无
- 参数:无
页面介绍
选项 | 说明 |
---|---|
作业条目名称 | 画布上作业条目的唯一名称。 |
JavaScript(必填) | JavaScript 字段 |
JavaScript 作业条目的结果为真或假。换句话说,它需要以布尔表达式结束。 下面是一些可能的评估,以 : 来结束脚本。
lines_input > 100
或
true
或
parent_job.getVariable("INPUT_DIRECTORY").equals("/tmp");
表达式可用于以下变量:
变量 | 描述 |
---|---|
errors | 上一个作业条目中的错误数(long) |
lines_input | 从数据库或文件读取的行数(long) |
lines_output | 写入数据库或文件的行数(long) |
lines_updated | 数据库表中更新的行数(long) |
lines_read | 从上一个转换步骤读取的行数(long) |
lines_written | 写入下一个转换步骤的行数(long) |
files_retrieved | 从 FTP 服务器检索的文件数(long) |
exit_status | shell 脚本的退出状态(integer) |
nr | 上一个作业条目的作业条目编号(长);每个下一个作业条目的增量 |
is_windows | 如果 Hop 在 Windows 上运行(boolean) |
parent_workflow | 当前作业条目的父作业 |
action | 当前工作流操作 |
变量
以下是如何计算变量字符串的内容:
parent_workflow.getVariable("NR_OF_ROWS") == 1000000;
由于我们可以访问 parent_workflow 对象,我们还可以通过这种方式在父工作流中设置变量:
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.getResult() | boolean | 如果成功执行上一个作业项,则为 true;如果存在某些错误,则为 false。 | |
previous_result.getExitStatus() | exit_status | int | 先前 shell 脚本工作流操作的退出状态。 |
previous_result.getActionNr() | nr | int | 每次执行工作流动作时,动作编号都会增加。 |
previous_result.getNrErrors() | errors | long | 错误数,也可作为变量“errors”使用。 |
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_written | long | 写入下一个转换的行数。 |
previous_result.getNrLinesDeleted() | lines_deleted | long | 删除的行数。 |
previous_result.getNrLinesRejected() | lines_rejected | long | 拒绝并通过错误处理传递到另一个步骤的行数 |
previous_result.getRows() | List<RowMetaAndData> | 结果行,另请参阅下面。 | |
previous_result.isStopped() | boolean | 用于指示上一个工作流操作是否停止的标志。 | |
previous_result.getResultFilesList() | List<ResultFile> | 上一个作业条目(或条目)中使用的所有文件的列表。 | |
previous_result.getNrFilesRetrieved() | files_retrieved | int | 从 FTP、SFTP 等检索的文件数。 |
previous_result.getLogText() | String | 上一个工作流操作及其子项的执行日志文本。 | |
previous_result.getLogChannelId() | String | 上一个工作流操作的日志通道的 ID。您可以使用它在日志通道日志表中查找有关执行的信息。 |
行
向 JavaScript 公开的"行"变量可帮助您使用"复制行结果"步骤评估传递到下一个作业条目的结果行。 下面是一个如何使用此数组的示例脚本:
var firstRow = rows[0];
firstRow.getString("name", "").equals("Foo")
此脚本将遵循绿色作业跃点是表达式计算为 true。如果字段"name"包含字符串"Foo",将发生这种情况。
使用案例
该案例演示Java Script的使用方法
总体流程如下图所示:
输入输出结果对比预览: 无
案例数据
无
案例操作
该步骤是作业工作流的开始组件,直接拖入无需配置。
② Java Script
该步骤将配置Java Script必要的一些字段 该组件配置主要分为 4 步:
- 第一步:填入Java Script脚本为1 == 1;
- 第二步:执行后,可以看出流程走向是启动->JavaScript->true1;
- 第三步:填入Java Script脚本为1 == 2;
- 第四步:执行后,可以看出流程走向是启动->JavaScript->true2;
结果预览
无
常见问题
无