2014-11-18 5 views
1

Я добираюсь до МСП на эту тему, пытаясь понять решение ниже сценария. У меня есть очень конкретное требование:Tivoli Workload Scheduler [TWS] Условная зависимость - как реализовать?

1) Говорят, у меня есть график, называемый SCH1, имеющий 3 рабочих мест JOB1, JOB2 и JOB3 как:

Schedule S1 
JOB1 

JOB2 
FOLLOWS JOB1 

JOB3 
FOLLOWS JOB2 

END 

2) JOB1 звонит сценарий оболочки. 3) Теперь, если сценарий оболочки JOB1 возвращает код 0 - он успешно выполнен и выполняет JOB2 и JOB3. 4) Если сценарий оболочки возвращает код, это ничего, кроме 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

ответ

1

Я бы сказал, что это невозможно.

С помощью RCCONDSUCC вы можете точно настроить статус задания (SUCC или ABEND) в зависимости от кода возврата. Это означает, что вы не ограничены RC = 0 = SUCC или RC> 0 = ABEND.

С ВОССТАНОВЛЕНИЕМ вы можете указать, какое действие следует предпринять, только если задание находится в ABEND.

Здесь вы хотите, чтобы задание SUCC и указать ВОССТАНОВЛЕНИЕ ....

0

Чтобы пропустить Job2 и Job3 с помощью условных зависимостей Job1 должен быть в состоянии «E». Но вы можете добавить Job4 в приложение, которое работает, только если Job1 прервано (также определено с помощью CondDep). Эта работа завершает Job1 (или целое приложение). Это работает - я продемонстрировал именно этот пример на собрании клиента :-)

Возможно также, что Job1 завершается, а задания Job2 и Job3 пропускаются, если эти задания имеют CondDep для Job1: Job1 должен быть в состоянии «C» AND Job1 должен заканчиваться RC <> 0.

+0

Добро пожаловать. Этот ответ не очень ясен, возможно, вы могли бы предоставить некоторый код, чтобы проиллюстрировать, что вы имеете в виду? –

+0

Спасибо, Майкл за ответ. Я привел пример расписания/задания в исходном сообщении. любезно возьмите этот пример и отправьте ответ с правильным синтаксисом. – gyan

0

С 9.3 FP1 это может быть реализовано с помощью встроенного conditional dependencies

Предполагая, что вы хотите JOB3 ждать, если JOB2 завершается аварийно, с помощью условных зависимостей ваш сценарий может быть реализован как этот
enter image description here

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 определен : GO, если RC = 0 и NOGO, если RC! = 0. Оба являются SUCCOUTPUTCOND, что означает, что JOB1 будет проходить в SUCC в обоих случаях.

  • Если JOB1 заканчивается RC = 0, то условие GO верно и FOLLOWS JOB1 IF GO зависимости удовлетворены, так JOB2 и JOB3 могут быть запущены (JOB3 будет ждать JOB2, поскольку она имеет также FOLLOWS JOB2)
  • Если JOB1 заканчивается RC, который не равен 0, GO - false, а NOGO - true. Поскольку по крайней мере на SUCCOUTPUTCOND истинно, JOB1 завершается в SUCC, но FOLLOWS JOB1 IF GO не выполняются, и JOB2 и JOB3 будут установлены в SUPPR и не будут работать.