Job内嵌对象
Job为作业对象,提供了获取作业中上一节点的输出消息、作业调度计划时间、作业执行时间等属性和方法。
属性和方法
| 属性 | 类型 | 描述 |
|---|---|---|
| name | String | 作业名称。 |
| planTime | java.util.Date | 作业调度计划时间,即周期调度配置的时间,例如每天凌晨1:01调度作业。 |
| startTime | java.util.Date | 作业执行时间,有可能与planTime同一个时间,也有可能晚于planTime(由于作业引擎繁忙等)。 |
| eventData | String | 当作业使用事件驱动调度时,从通道获取的消息。 |
| projectId | String | 当前数据开发模块所处项目ID。 |
| 方法 | 描述 | 示例 |
|---|---|---|
| String getNodeStatus(String nodeName) | 获取指定节点运行状态,成功状态返回success,失败状态返回fail。 例如,判断节点是否运行成功,可以使用如下判断条件,其中test为节点名称: #{(Job.getNodeStatus("test")) == "success" } | 获取test节点运行状态。 #{Job.getNodeStatus("test")} |
| String getNodeOutput(String nodeName) | 获取指定节点的输出。此方法只能获取前面依赖节点的输出。 |
|
| String getParam(String key) | 获取作业参数。 注意此方法只能直接获取当前作业里配置的参数值,并不能获取到父作业传递过来的参数值,也不能获取到工作空间里面配置的全局变量,作用域仅为本作业。 这种情况下建议使用表达式${job_param_name},既可以获取到父作业传递过来的参数值,也可以获取到全局配置的变量。 | 获取参数test的值: #{Job.getParam("test")} |
| String getPlanTime(String pattern) | 获取指定pattern的计划时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 | 获取作业调度计划时间,具体到毫秒: #{Job.getPlanTime("yyyy-MM-dd HH:mm:ss:SSS")} |
| String getYesterday(String pattern) | 获取执行pattern的计划时间前一天的时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 | 获取作业调度计划时间的前一天的时间,具体到日期: #{Job.getYesterday("yyyy-MM-dd HH:mm:ss:SSS")} |
| String getLastHour(String pattern) | 获取执行pattern的计划时间前一小时的时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 | 获取作业调度计划时间前一小时的时间,具体到小时: #{Job.getLastHour("yyyy-MM-dd HH:mm:ss:SSS")} |
| String getRunningData(String nodeName) | 获取指定节点运行中记录的数据,当前只支持获取DLI SQL节点SQL语句运行的作业id。此方法只能获取前面依赖节点的输出。 例如,想要获取DLI节点第3条语句的job ID(DLI节点名为DLI_INSERT_DATA),可以这样使用:#{JSONUtil.path(Job.getRunningData("DLI_INSERT_DATA"),"jobIds[2]")}。 | 获取指定DLI SQL节点test中第三条语句的job ID: #{JSONUtil.path(Job.getRunningData("test"),"jobIds[2]")} |
| String getInsertJobId(String nodeName) | 返回指定DLI SQL或Transform Load节点第一个Insert SQL语句的作业ID,不指定参数nodeName时,获取前面一个节点第一个DLI Insert SQL语句的作业ID,如果无法获取到作业ID,返回null值。 | 获取DLI SQL节点test中第一个Insert SQL语句的job ID: #{Job.getInsertJobId("test")} |
| String getPreviousWorkday(Integer num, String pattern) | 按照指定的pattern返回计划时间前第num个工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 | 获取作业调度前五天的工作日的日期。 #{Job.getPreviousWorkday(5, "yyyyMMdd")} |
| String getPreviousNonWorkday(Integer num, String pattern) | 按照指定的pattern返回计划时间前第num个非工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 | 获取作业调度前一天的非工作日的日期。 #{Job.getPreviousNonWorkday(1, "yyyyMMdd")} |
| String getCalendarPreviousWorkday(String calendarName, Integer num, String pattern) | 按照指定的pattern返回指定日历计划时间前第num个工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 | 获取指定日历作业调度计划时间前五天的工作日的日期。 #{Job.getCalendarPreviousWorkday(5, "yyyyMMdd")} |
| String getCalendarPreviousNonWorkday(String calendarName, Integer num, String pattern) | 按照指定的pattern返回指定日历计划时间前第num个非工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 | 获取指定日历作业调度计划时间前一天的非工作日的日期。 #{Job.getCalendarPreviousNonWorkday(1, "yyyyMMdd")} |
| String getCalendarNextWorkday(String calendarName, Integer num, String pattern) | 按照指定的pattern返回指定日历计划时间后第num个工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 | 获取指定日历作业调度计划时间后五天的工作日的日期。 #{Job.getCalendarNextWorkday(5, "yyyyMMdd")} |
| String getCalendarNextNonWorkday(String calendarName, Integer num, String pattern) | 按照指定的pattern返回指定日历计划时间后第num个非工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 | 获取指定日历作业调度计划时间后一天的非工作日的日期。 #{Job.getPreviousNonWorkday(1, "yyyyMMdd")} |
举例1
获取作业中节点名称为test的输出结果,EL表达式如下:
#{Job.getNodeOutput("test")}