【问题标题】:Tivoli Workload Scheduler [TWS] Conditional Dependency - How to implement?Tivoli Workload Scheduler [TWS] 条件依赖 - 如何实现?
【发布时间】:2015-01-16 05:22:31
【问题描述】:

在尝试找出以下方案的解决方案后,我正在就该主题与 SME 联系。 我有一个非常具体的要求:

1) 假设我有一个名为 SCH1 的时间表,有 3 个作业 JOB1、JOB2 和 JOB3,例如:

Schedule S1
JOB1

JOB2
FOLLOWS JOB1

JOB3
FOLLOWS JOB2

END

2) JOB1 正在调用一个shell 脚本。 3) 现在,如果 JOB1 shell 脚本返回代码 0——它成功并执行 JOB2 和 JOB3。 4) 如果 shell 脚本返回的代码不是 0,JOB1 仍然不应该异常终止;但应跳过所有其他作业 JOB2 和 JOB3(或在未运行的情况下完成);并且计划应标记为成功。

我在网上获得了以下链接,这表明这应该是可能的。但是当我提到 Job/Schedule 定义的语法时;我不知道应该怎么写。

在作业语法中,看起来下面的方法可以解决问题,但不太确定。

 [rccondsucc "Success Condition"] 
   [recovery 
        {stop | continue | rerun}
        [after [workstation#]jobname] 
        [abendprompt “text”] ]

条件依赖:

http://www-01.ibm.com/support/knowledgecenter/SSGSPN_9.1.0/com.ibm.tivoli.itws.doc_9.1/zos/src_man/eqqr1conddepevalex.htm?lang=en

作业语法:

http://www-01.ibm.com/support/knowledgecenter/SSGSPN_9.1.0/com.ibm.tivoli.itws.doc_9.1/distr/src_ref/awsrgjobdefn.htm?lang=en

调度语法:

http://www-01.ibm.com/support/knowledgecenter/SSGSPN_9.1.0/com.ibm.tivoli.itws.doc_9.1/distr/src_ref/awsrgjsdefn.htm?lang=en

【问题讨论】:

    标签: tivoli workload-scheduler tivoli-work-scheduler


    【解决方案1】:

    我会说这是不可能的。

    使用 RCCONDSUCC,您可以根据返回码微调作业的状态(SUCC 或 ABEND)。这只是意味着您不限于 RC = 0 = SUCC 或 RC > 0 = ABEND。

    使用 RECOVERY,您可以指定仅当 JOB 处于 ABEND 时才应采取的操作。

    在这里你想强制一个 JOB 到 SUCC 并指定一个 RECOVERY....

    【讨论】:

      【解决方案2】:

      要借助条件依赖跳过 Job2 和 Job3,Job1 必须处于状态“E”。但是您可以将 Job4 添加到仅在 Job1 中止时运行的应用程序(也使用 CondDep 定义)。此作业完成 Job1(或整个应用程序)。 它有效——我在客户会议上演示了这个例子:-)

      如果 Job1 的 CondDep 到 Job1,则 Job1 完成并且 Job2 和 Job3 被跳过:Job1 必须处于状态“C”并且 Job1 必须以 RC0 结尾。

      【讨论】:

      • 欢迎。这个答案不是很清楚,也许你可以提供一些代码来说明你的意思?
      • 感谢迈克尔的回复。我已经在原始帖子中给出了计划/作业的示例。请举个例子,并用正确的语法发布答案。
      【解决方案3】:

      从 9.3 FP1 开始,这可以通过内置的 conditional dependencies 实现

      假设您希望 JOB3 在 JOB2 异常结束时等待,使用条件依赖可以像这样实现您的场景

       SCHEDULE SCH1 
       :
       JOB1
        DOCOMMAND "myscript"
        STREAMLOGON twsuser
        SUCCOUTPUTCOND GO "RC=0"
        SUCCOUTPUTCOND NOGO "RC!=0"
      
       JOB2
        FOLLOWS JOB1 IF GO
      
       JOB3
        FOLLOWS JOB2
        FOLLOWS JOB1 IF GO
       END
      

      JOB1 定义了 2 个SUCCOUTPUTCOND:如果 RC=0 则为 GO,如果 RC!=0 则为 NOGO。 两者都是SUCCOUTPUTCOND,这意味着JOB1在这两种情况下都会进入SUCC。

      • 如果 JOB1 以 RC=0 结束,则 GO 条件为真,并且满足 FOLLOWS JOB1 IF GO 依赖关系,因此可以运行 JOB2 和 JOB3(JOB3 将等待 JOB2,因为它还有一个 FOLLOWS JOB2
      • 如果 JOB1 以不为 0 的 RC 结束,则 GO 为假,NOGO 为真。由于至少在 SUCCOUTPUTCOND 为真时,JOB1 在 SUCC 中完成,但 FOLLOWS JOB1 IF GO 不满足,JOB2 和 JOB3 将设置为 SUPPR 状态并且不会运行。

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 2011-10-10
        • 2017-07-01
        • 2017-04-15
        • 2017-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-04
        相关资源
        最近更新 更多