Control-M:循环儿童工作

时间:2017-12-04 14:29:14

标签: jobs cycle control-m

我有一个3个作业的Ctrl-M工作流程,应该每15分钟运行一次,如下所示:

作业1 - >作业2 - > JOB3

时间表是上午9点到11点,每15分钟一次。

Control-M版本V9。

业务规则:Job1启动。 Job1成功完成后,Job2必须启动。一旦Job2成功完成,Job3就必须启动。

因此,我所做的是每15分钟定义一次Job1循环,并创建一个输出条件“job1-OK”,这是Job2的前提条件,从Job2到Job3也是如此。

我发现如果你没有将Job2和Job3定义为循环,那么它们在第一次执行后永远不会被踢掉。你认识这些家伙为什么?我为解决这个问题所做的是每15分钟设置一次Job2和Job3循环,但是这使我的“工作流程”< Job1 - > Job2 - > Job3>因为在我的父Job1完成之前评估了Job2的15分钟条件,所以如果Job1“cycle”与Job2循环不同步,则Job2永远不会运行。你懂我的意思吗?

示例:Job1在1分钟内运行,Job1-OK out条件被释放,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执行在此循环中丢失。

我基本上希望Job1在Job1完成后立即运行,无论是时间表,时间,周期还是其他任何事情。有可能完成这样的任务吗?否则,如何在周期和前置条件检查之间不重叠的情况下满足此要求?

非常感谢,我希望我能正确解释自己!

2 个答案:

答案 0 :(得分:1)

要定义循环流,所有作业确实必须是循环的。 对于您的场景,我建议将Job1设置为15分钟循环,Job 2和Job 3都可以设置为1分钟循环。只要您在成功完成工作后删除条件,那么此流程将完美运行。

您的替代解决方案确实有效,但在许可方面成本非常高。 Control-M根据订购的作业数量获得许可。因此,如果您定义一个流程,那么在为大额账单准备额外工作时无限订购!

答案 1 :(得分:0)

经过长时间的研究,发现了它:

  • 如果您想让它们多次运行,Ctrl-M需要所有作业都是循环的:您不能仅仅在前提条件下进行中继,只能在同一天运行多次
  • 控制何时再次启动作业的唯一方法是使用作业工作流程的特定进出条件,以及定量和控制资源(不超过X作业同时运行时间等。)

替代方案:没有循环工作的一个很好的选择是在启动子工作的条件后立即“动态”订购子工作“实现:这种方式没有必要创造大量的条件,只需要在父母被踢开的时候订购工作!!此外,为了支持具有多个场景的复杂工作流,您可以创建一些虚拟作业来检查将被循环评估的前置条件,例如每1分钟。