Вопрос

Я работаю с интеграцией данных Pentaho (aka keptle), и у меня есть несколько преобразований, давайте назовем их a, b, c, d, e. b зависит от A, d зависит от C и E зависит от B и D. В задании Я хотел бы запустить, B и C, D параллельно:

           -> A -> B _
    Start<            \
           -> C -> D----> E

где a и c бегают параллельно. Есть ли способ выполнить E только IFF B А ТАКЖЕ D были успешными? Прямо сейчас, глядя на метрики работы, e выполняется как можно скорее ИЛИ D закончены.

Это было полезно?

Решение

Я только что нашел http://forums.pentaho.org/showthread.php?t=75425. И кажется, что это нелегко можно добиться того, что я хочу.

Другие советы

Вы можете сделать что-то вроде этого:

        /--=--[job]----[set var J1=1]---\ 
[start]----=--[Job]----[set var J2=1]----+--[jscriptstep]--(ok)-->[next steps]
        \--=--[Job]----[set var J3=1]---/        \
                                                 (x)
                                                   \
                                                  [Write to log]

JS Step с:

J1= parent_job.getVariable("J1");
J2= parent_job.getVariable("J2");
J3= parent_job.getVariable("J3");
(J1*J2*J3)==1;

Например, запись записи в журнал не является обязательным, и я использовал не регистрироваться в журнале Red-Book Error, с помощью сообщения журнала:

«Ожидание: $ {j1} - $ {j2} - $ {j3} - $ {j4} - $ {j5}"

Поэтому я могу посмотреть, что и когда каждый шаг заканчивается через журнал.

Я верю, что это можно сделать, но у меня нет рабочих мест, достаточно больших, чтобы действительно тестировать это хорошо, и это неловко. По сути, вам понадобится 4 отдельных задания в дополнение к вашим заданиям A, B, C, D и E. Давайте назовем их в управление работой, задание A_B, задание C_D и параллельных рабочих мест.

Вы устанавливаете их так:

Control Job: start -> Parallel Jobs -> E
Parallel Jobs:       -> Job A_B
               start<           (Set Start step to run next jobs in parallel)
                     -> Job C_D
Job A_B: start -> A -> B
Job C_D: start -> C -> D

Ключ заключается в том, что A -> B и C -> D должны быть на своем собственном шаге работы, чтобы сохранить зависимость. Затем параллельные задания гарантируют, что оба параллельных пути выполнены, прежде чем разрешить управление, чтобы перейти к E.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top