Ожидание преобразований в работе
Вопрос
Я работаю с интеграцией данных 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.