如何在 Talend 作业中执行条件测试?
How to perform a conditional test within a Talend job?
我希望触发一系列流程,我想在开始后续流程之前判断每个流程是成功还是失败。
我正在使用 tSSH(在 Talend 6.4.1 上)触发进程,我只希望作业在成功时继续。如果 tSSH "component" 收到非零 return 代码,它似乎不会失败,所以我尝试使用断言。但是,即使断言失败,它似乎也不会阻止组件和子作业 "OK" 这有点奇怪,所以我不能使用 on-(component|subjob)-ok 到 link 到下一个作业。
我似乎找不到任何允许我根据评估结果停止作业或子作业继续的条件评估组件。
我能找到的唯一方法就是
tSSH1 --IF globalMap.get("tSSH_1_EXIT_CODE").equals(0)--> tSSH2...
--IF !globalMap.get("tSSH_1_EXIT_CODE").equals(0)--> (failure logging subjob)
这意味着用否定对测试进行两次编码。
我是不是遗漏了什么,或者没有这样的条件组件?
您可以使用 tSSH 组件的全局变量在 tSSH 组件上放置一个成功/失败的 if 条件,即
((字符串)globalMap.get("tSSH_1_STDERR")) 和 ((字符串)globalMap.get("tSSH_1_STDOUT"))。
如果您可以检查的条件是:
if(((String)globalMap.get("tSSH_1_STDERR")) != null) 比调用错误日志
否则调用 tSSH2.
希望这对您有所帮助...
我希望触发一系列流程,我想在开始后续流程之前判断每个流程是成功还是失败。
我正在使用 tSSH(在 Talend 6.4.1 上)触发进程,我只希望作业在成功时继续。如果 tSSH "component" 收到非零 return 代码,它似乎不会失败,所以我尝试使用断言。但是,即使断言失败,它似乎也不会阻止组件和子作业 "OK" 这有点奇怪,所以我不能使用 on-(component|subjob)-ok 到 link 到下一个作业。
我似乎找不到任何允许我根据评估结果停止作业或子作业继续的条件评估组件。
我能找到的唯一方法就是
tSSH1 --IF globalMap.get("tSSH_1_EXIT_CODE").equals(0)--> tSSH2...
--IF !globalMap.get("tSSH_1_EXIT_CODE").equals(0)--> (failure logging subjob)
这意味着用否定对测试进行两次编码。
我是不是遗漏了什么,或者没有这样的条件组件?
您可以使用 tSSH 组件的全局变量在 tSSH 组件上放置一个成功/失败的 if 条件,即
((字符串)globalMap.get("tSSH_1_STDERR")) 和 ((字符串)globalMap.get("tSSH_1_STDOUT"))。
如果您可以检查的条件是:
if(((String)globalMap.get("tSSH_1_STDERR")) != null) 比调用错误日志 否则调用 tSSH2.
希望这对您有所帮助...