Control-M:循环子作业
Control-M: cyclic children jobs
我有一个包含 3 个作业的 Ctrl-M 工作流,应该 运行 每 15 分钟如下:
Job1-->Job2-->Job3.
时间是早上9点到11点,每15分钟循环一次。
Control-M版本V9.
业务规则:Job1 开始。一旦 Job1 成功完成,Job2 就必须开始。一旦 Job2 成功完成,Job3 就必须开始。
因此我所做的是定义每 15 分钟循环一次的 Job1 并创建一个输出条件 "job1-OK" 这是 Job2 的前提条件,从 Job2 到 Job3 也是如此。
我发现如果你不将 Job2 和 Job3 也定义为循环的,它们在第一次执行后就再也不会被踢掉了。小伙伴们知道为什么吗?我为解决这个问题所做的就是将 Job2 和 Job3 也设置为每 15 分钟循环一次,但这使我的 "Workflow" < Job1-->Job2-->Job3 > 变得混乱,因为 Job2 的 15 分钟条件在我的父 Job1 完成之前进行评估,因此如果 Job1 "cycle" 与 Job2 周期不同步,Job2 永远不会 运行s。你懂我的意思吗?
例:Job1 运行s 1 分钟后,Job1-OK out 条件解除,Job2 启动,Job2 到Job3 相同。 Job1 现在正在等待下一个 15 分钟的周期,周期被命中,它 运行s 并且需要 20 分钟 运行:并行地,Job2 正在等待 15 分钟的周期 + 来自 Job1 的输出条件:一旦达到 job2 的 15 分钟周期,就会评估来自 Job1 的前提条件,returns false(因为 Job1 仍然是 运行ning)并且 Job2 进入下一个 15 的等待条件分钟周期 + 运行 Job2 所需的 Job1-OK 输出条件。 Job1 在 18 分钟内完成并释放 "Job1-OK" 条件,但 Job2 没有启动,因为下一个周期将在接下来的 12 分钟内发生,因为 Job1 花了 18 分钟到达 运行。因此,Job2 执行在这个循环中丢失。
我基本上希望 Job2 在 Job1 完成后立即 运行,无论日程、时间、周期或其他什么。有可能完成这样的任务吗?否则,我如何在不重叠循环和先决条件检查的情况下满足这样的要求?
非常感谢,希望我解释得当!
研究了很久,弄明白了:
- Ctrl-M 如果你想让它们 运行 多次,则需要所有作业都是循环的:你不能仅在 pre-condition 上中继到 运行 多次同一天
- 控制作业何时必须再次 kicked-off 的唯一方法是为作业工作流程设置特定的 in-out 条件,以及定量和控制资源(不超过X 个工作 运行 同时进行,等等。)
备选方案: 没有循环作业的一个很好的替代方法是 订购 children 作业 "on the fly"一旦 kick-off 的条件满足 child 工作:这样就不需要创造大量的条件,只需在应该 kicked-off 的时候订购工作parent!!此外,为了支持具有多个场景的复杂工作流,您可以创建一些虚拟作业来检查 pre-condition 也会循环评估,例如每 1 分钟一次。
要定义循环流,所有作业都必须是循环的。
对于您的场景,我建议将 Job1 设置为 15 分钟循环,Job 2 和 Job 3 都可以设置为 1 分钟循环。只要您在成功完成作业后删除条件,那么此流程将完美运行。
您的替代解决方案确实有效,但在许可方面成本非常高。 Control-M 根据作业中订购的数量获得许可。因此,如果您定义了一个无限订购额外工作的流程,请为大笔账单做好准备!
我有一个包含 3 个作业的 Ctrl-M 工作流,应该 运行 每 15 分钟如下:
Job1-->Job2-->Job3.
时间是早上9点到11点,每15分钟循环一次。
Control-M版本V9.
业务规则:Job1 开始。一旦 Job1 成功完成,Job2 就必须开始。一旦 Job2 成功完成,Job3 就必须开始。
因此我所做的是定义每 15 分钟循环一次的 Job1 并创建一个输出条件 "job1-OK" 这是 Job2 的前提条件,从 Job2 到 Job3 也是如此。
我发现如果你不将 Job2 和 Job3 也定义为循环的,它们在第一次执行后就再也不会被踢掉了。小伙伴们知道为什么吗?我为解决这个问题所做的就是将 Job2 和 Job3 也设置为每 15 分钟循环一次,但这使我的 "Workflow" < Job1-->Job2-->Job3 > 变得混乱,因为 Job2 的 15 分钟条件在我的父 Job1 完成之前进行评估,因此如果 Job1 "cycle" 与 Job2 周期不同步,Job2 永远不会 运行s。你懂我的意思吗?
例:Job1 运行s 1 分钟后,Job1-OK out 条件解除,Job2 启动,Job2 到Job3 相同。 Job1 现在正在等待下一个 15 分钟的周期,周期被命中,它 运行s 并且需要 20 分钟 运行:并行地,Job2 正在等待 15 分钟的周期 + 来自 Job1 的输出条件:一旦达到 job2 的 15 分钟周期,就会评估来自 Job1 的前提条件,returns false(因为 Job1 仍然是 运行ning)并且 Job2 进入下一个 15 的等待条件分钟周期 + 运行 Job2 所需的 Job1-OK 输出条件。 Job1 在 18 分钟内完成并释放 "Job1-OK" 条件,但 Job2 没有启动,因为下一个周期将在接下来的 12 分钟内发生,因为 Job1 花了 18 分钟到达 运行。因此,Job2 执行在这个循环中丢失。
我基本上希望 Job2 在 Job1 完成后立即 运行,无论日程、时间、周期或其他什么。有可能完成这样的任务吗?否则,我如何在不重叠循环和先决条件检查的情况下满足这样的要求?
非常感谢,希望我解释得当!
研究了很久,弄明白了:
- Ctrl-M 如果你想让它们 运行 多次,则需要所有作业都是循环的:你不能仅在 pre-condition 上中继到 运行 多次同一天
- 控制作业何时必须再次 kicked-off 的唯一方法是为作业工作流程设置特定的 in-out 条件,以及定量和控制资源(不超过X 个工作 运行 同时进行,等等。)
备选方案: 没有循环作业的一个很好的替代方法是 订购 children 作业 "on the fly"一旦 kick-off 的条件满足 child 工作:这样就不需要创造大量的条件,只需在应该 kicked-off 的时候订购工作parent!!此外,为了支持具有多个场景的复杂工作流,您可以创建一些虚拟作业来检查 pre-condition 也会循环评估,例如每 1 分钟一次。
要定义循环流,所有作业都必须是循环的。 对于您的场景,我建议将 Job1 设置为 15 分钟循环,Job 2 和 Job 3 都可以设置为 1 分钟循环。只要您在成功完成作业后删除条件,那么此流程将完美运行。
您的替代解决方案确实有效,但在许可方面成本非常高。 Control-M 根据作业中订购的数量获得许可。因此,如果您定义了一个无限订购额外工作的流程,请为大笔账单做好准备!