当您在数据开发模块进行作业开发编排时,想要实现通过设置条件,选择不同的执行路径,可使用IF条件判断。
本教程包含以下三个常见场景举例。
- 根据前一个节点的执行状态进行IF条件判断
- 根据前一个节点的输出结果进行IF条件判断
- 多IF条件下当前节点的执行策略
IF条件的数据来源于EL表达式,通过EL表达式,根据具体的场景选择不同的EL表达式来达到目的。您可以参考本教程,根据您的实际业务需要,开发您自己的作业。
EL表达式用法可参考表达式概述。
根据前一个节点的执行状态进行IF条件判断
场景说明
根据前一个CDM节点是否执行成功,决定执行哪一个IF条件分支。基于下图的样例,说明如何设置IF条件。
作业样例
配置方法
- 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。
- 选择“空间管理”页签,在工作空间列表中,找到所需要的工作空间,单击工作空间的“数据开发”,系统跳转至数据开发页面。
- 在“作业开发”页面,新建数据开发作业,然后分别选择CDM节点和两个Dummy节点,选中连线图标并拖动,编排图上图所示的作业。其中CDM节点的失败策略需要设置为“继续执行下一节点”。
- 右键单击连线,选择“设置条件”,在弹出的“编辑EL表达式”文本框中输入IF条件。
每一个条件分支都需要填写IF条件,IF条件为通过EL表达式语法填写三元表达式。当三元表达式结果为true的时候,才会执行连线后面的节点,否则后续节点将被跳过。
此Demo中使用的EL表达式为:
#{Job.getNodeStatus("node_name")}
这个表达式的作用为获取指定节点的执行状态,成功状态返回success,失败状态返回fail。本例使用中,IF条件表达式分别为:
- 上面的A分支IF条件表达式为:
#{(Job.getNodeStatus("CDM")) == "success" ? "true" : "false"}
- 下面的B分支IF条件表达式为:
#{(Job.getNodeStatus("CDM")) == "fail" ? "true" : "false"}
输入IF条件表达式后,配置IF条件匹配失败策略,可选择仅跳过相邻的下一个节点,或者跳过该IF分支后续所有节点。配置完成后点击确定,保存作业。
配置失败策略
- 测试运行作业,并前往实例监控中查看执行结果。
- 待作业运行完成后,从实例监控中查看作业实例的运行结果,如下图所示。可以看到运行结果是符合预期的,当前CDM执行的结果为fail的时候,跳过A分支,执行B分支。
作业运行结果