
# 常用EL表达式样例合集
本章节介绍常用的EL表达式及示例。
表1常用的EL表达式 
| 方法                                          | 描述                                                                                                                                                                                                                                      | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| 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")}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Date addDays(Date date, int amount)         | 给date添加指定天数后，返回新Date对象，amount可以是负数。                                                                                                                                                                                                     | 将作业调度计划减一天的时间，转换为年月日格式。 #{DateUtil.format(DateUtil.addDays(Job.planTime,-1),"yyyy-MM-dd")}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| int getDay(Date date)                       | 从date获取天，例如：date为2018-09-14，则返回14。                                                                                                                                                                                                      | 从作业调度计划获取具体的天。 #{DateUtil.getDay(Job.planTime)}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Date now()                                  | 返回当前时间。                                                                                                                                                                                                                                 | 以秒格式返回当前的时间。 #{DateUtil.format(DateUtil.now(),"yyyy-MM-dd HH:mm:ss")}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Object path(String jsonStr,String jsonPath) | 返回json字符串指定路径下的字段值。类似于XPath，path方法可以通过路径检索或设置JSON，其路径中可以使用.或\[\]等访问成员、数值，例如：tables\[0\].table_name。                                                                                                                                     | 字符串变量str的内容如下： ``` { "cities": [{ "name": "city1", "areaCode": "1000" }, { "name": "city2", "areaCode": "2000" }, { "name": "city3", "areaCode": "3000" }] } ``` 获取city1的电话区号，EL表达式如下： ``` #{JSONUtil.path(str,"cities[0].areaCode")} ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| current                                     | For Each节点在处理数据集的时候，是一行一行进行处理的。Loop.current表示当前遍历到的For Each节点"数据集"中定义的二维数组的某一行，该数据行为一维数组。 一般定义格式为#{Loop.current\[0\]}、#{Loop.current\[1\]}或其他。其中\[0\]表示遍历到的当前行的第一个值，\[1\]表示遍历到的当前行的第二个值，以此类推。 | 作为For Each节点的"子作业参数"取值，表示For Each循环遍历中，取"数据集"中二维数组的当前遍历行的第二个值。 #{Loop.current\[1\]}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
