0

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

工作1-->工作2-->工作3。

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

Control-M 版本 V9。

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

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

我发现如果你不将 Job2 和 Job3 也定义为循环的,那么它们在第一次执行后就永远不会再次被踢出。你们知道为什么吗?我为解决这个问题所做的就是将 Job2 和 Job3 也设置为每 15 分钟循环一次,但这会使我的“工作流程”< Job1-->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-运行 Job2 所需的 OK 条件。Job1 在 18 分钟内完成并释放“Job1-OK”条件但 Job2 没有启动,因为下一个周期将在接下来的 12 分钟内发生,因为 Job1 需要 18 分钟才能运行。因此,Job2 执行在此循环中丢失。

我基本上希望 Job2 在 Job1 完成后立即运行,无论时间表、时间、周期或其他什么。有可能完成这样的任务吗?否则,我怎样才能在循环和前置条件检查之间不重叠的情况下满足这样的要求?

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

4

2 回答 2

1

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

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

于 2018-01-18T01:12:44.207 回答
0

经过长时间的研究,弄清楚了:

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

替代方案:没有周期性工作的一个很好的替代方法是在满足启动子工作的条件后立即“即时”订购子工作:这样就不需要创造大量的条件,只需订购应该由父母开始的工作!此外,为了支持具有多种场景的复杂工作流程,您可以创建一些虚拟作业来检查也将循环评估的先决条件,例如每 1 分钟一次。

于 2017-12-21T12:53:29.867 回答