【发布时间】:2017-12-04 14:29:13
【问题描述】:
我有 3 个作业的 Ctrl-M 工作流程,应该每 15 分钟运行一次,如下所示:
Job1-->Job2-->Job3.
时间表是从上午 9 点到上午 11 点,每 15 分钟循环一次。
Control-M 版本 V9。
业务规则:Job1 启动。一旦 Job1 成功完成,Job2 就必须启动。一旦 Job2 成功完成,Job3 就必须启动。
因此,我所做的是定义 Job1 每 15 分钟循环一次,并创建一个输出条件“job1-OK”,这是 Job2 的先决条件,从 Job2 到 Job3 也是如此。
我发现,如果您不将 Job2 和 Job3 也定义为循环的,那么它们在第一次执行后就永远不会再次被踢出。你们知道为什么吗?我为解决这个问题所做的就是将 Job2 和 Job3 也设置为每 15 分钟循环一次,但这会使我的“工作流程”Job2-->Job3 > 变得混乱,因为评估了 Job2 的 15 分钟条件在我的父 Job1 完成之前,因此如果 Job1“周期”与 Job2 周期不同步,则 Job2 永远不会运行。你懂我的意思吗?
示例:Job1 在 1 分钟内运行,Job1-OK 退出条件被释放,Job2 被启动,从 Job2 到 Job3 也是如此。 Job1 现在正在等待下一个 15 分钟循环,循环被命中,它运行并需要 20 分钟运行:并行,Job2 正在等待 15 分钟循环 + 来自 Job1 的输出条件:只要 15 分钟循环Job2 被命中,Job1 的先决条件被评估,返回 false(因为 Job1 仍在运行)并且 Job2 进入等待条件,等待下一个 15 分钟周期 + Job1-OK 运行 Job2 所需的条件。 Job1 在 18 分钟内完成并释放“Job1-OK”条件但 Job2 没有启动,因为下一个周期将在接下来的 12 分钟内发生,因为 Job1 需要 18 分钟才能运行。因此,Job2 执行在此循环中丢失。
我基本上希望 Job2 在 Job1 完成后立即运行,无论时间表、时间、周期或其他什么。有可能完成这样的任务吗?否则,如何在循环和前置条件检查之间不重叠的情况下满足此类要求?
非常感谢,希望我能正确解释自己!
【问题讨论】: