
# Job内嵌对象
Job为作业对象，提供了获取作业中上一节点的输出消息、作业调度计划时间、作业执行时间等属性和方法。
#### 属性和方法
表1属性说明 
| 属性        | 类型             | 描述                                                  |
|:---|:---|:---|
| name      | String         | 作业名称。                                               |
| planTime  | java.util.Date | 作业调度计划时间，即周期调度配置的时间，例如每天凌晨1:01调度作业。                 |
| startTime | java.util.Date | 作业执行时间，有可能与planTime同一个时间，也有可能晚于planTime（由于作业引擎繁忙等）。 |
| eventData | String         | 当作业使用事件驱动调度时，从通道获取的消息。                              |
| projectId | String         | 当前数据开发模块所处项目ID。                                     |
   
表2方法说明 
| 方法                                                                                     | 描述                                                                                                                                                                                                                                    | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| String getNodeStatus(String nodeName)                                                  | 获取指定节点运行状态，成功状态返回success，失败状态返回fail。 例如，判断节点是否运行成功，可以使用如下判断条件，其中test为节点名称： #{(Job.getNodeStatus("test")) == "success" }     | 获取test节点运行状态。 #{Job.getNodeStatus("test")}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| String getNodeOutput(String nodeName)                                                  | 获取指定节点的输出。此方法只能获取前面依赖节点的输出。                                                                                                                                                                                                           | - 获取test节点输出。 #{Job.getNodeOutput("test")}   - 当前一节点执行无结果时，输出结果为"null"。  - 当前一节点的输出结果是一个字段时，输出结果形如\[\["000"\]\]所示。此时可通过EL表达式分割字符串结果，获取前一节点输出的字段值，但注意输出结果类型为String。需要输出原数据类型时，仍需通过For Each节点及其支持的Loop内嵌对象EL表达式获取。 #{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("前一节点名"),"\]")\[0\],"\[")\[0\],"\\\\"")\[0\]}   - 当前一节点的输出结果是多个（两个及以上）字段时，输出结果形如\[\["000"\],\["001"\]\]所示。此时需要结合For Each节点及其支持的Loop内嵌对象EL表达式如#{Loop.current\[0\]}，循环获取输出结果，详见[获取SQL节点的输出结果值](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0584.html)。 说明： 上一个节点的输出作为下一个节点的输入时，获取上一节点数据的大小不能超过32768字符长度。如果超过32768字符长度时，则上一个节点输出内容为"DLF.ERROR:upstream output is larger than limit"，表示上一个节点输出内容超过大小限制，数据不会被保存。 当上一个节点为Rest Client时，它的输出结果传递给下一个SQL类型的节点时，传递的参数值不能超过1000000个字符。    |
| String getParam(String key)                                                            | 获取作业参数。 注意此方法只能直接获取当前作业里配置的参数值，并不能获取到父作业传递过来的参数值，也不能获取到工作空间里面配置的全局变量，作用域仅为本作业。 这种情况下建议使用表达式${job_param_name}，既可以获取到父作业传递过来的参数值，也可以获取到全局配置的变量。      | 获取参数test的值： #{Job.getParam("test")}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| String getPlanTime(String pattern)                                                     | 获取指定pattern的计划时间字符串，pattern为日期、时间模式，请参考[日期和时间模式](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0496.html)。                                                                                              | 获取作业调度计划时间，具体到毫秒： #{Job.getPlanTime("yyyy-MM-dd HH:mm:ss:SSS")}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| String getYesterday(String pattern)                                                    | 获取执行pattern的计划时间前一天的时间字符串，pattern为日期、时间模式，请参考[日期和时间模式](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0496.html)。                                                                                        | 获取作业调度计划时间的前一天的时间，具体到日期： #{Job.getYesterday("yyyy-MM-dd HH:mm:ss:SSS")}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| String getLastHour(String pattern)                                                     | 获取执行pattern的计划时间前一小时的时间字符串，pattern为日期、时间模式，请参考[日期和时间模式](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0496.html)。                                                                                       | 获取作业调度计划时间前一小时的时间，具体到小时： #{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")}
```
