如果第一个作业中止,则中止第二个作业 activity

Abort second job activity if first one aborts

如果第一份工作 activity 由于环境原因中止,我想中止第二份工作 activity。问题或人工流产。

我查看了触发选项,但无法获取。 谁能帮帮我?

您需要向我们展示您所做的事情。我之前解释过的触发器的使用是正确的解决方案。如果你做对了,设计上的箭头 canvas 应该是红色的。

好的,没有 运行 就不能中止作业。因此,您需要能够在了解作业 1 状态的情况下调用作业 2(例如,来自 activity 变量 Job1.$JobStatus)。这可用于导致作业 2 中止。

最干净的解决方案是 before-job 子例程,如果作业 1 的状态为 DSJS.RUNOK 或 DSJS.RUNWARN(这些是 DataStage 常量),它会将其 return 代码设置为 0 ),或者如果作业 1 的状态为 DSJS.RUNFATAL 或任何其他值,则为 non-zero 值。这是最简洁的方法,因为 before-job 子例程可以向作业日志写入一条消息,准确指示作业被中止的原因。

一种不太干净的方法是在 Job 2 中使用一个类型的参数,例如 Integer(除字符串以外的任何类型),并使用诸如 If Job1.$JobStatus = DSJS.RUNFATAL Then "" Else 1 - 将 non-string 参数设置为 "" 将导致作业中止并出现 DSJE.PARAMBADVALUE 错误。

或者,您可以更改序列以完全绕过作业 2,而只是记录一条消息,说明由于作业 1 中止,作业 2 被绕过。