描述(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循環抽取數據