質問
私はPentaho Data Integration(別名Kettle)を使用していますが、いくつかの変換があります。A、B、C、D、E。Bと呼びましょう。 A、B、C、Dを並行して実行したい:
-> A -> B _
Start< \
-> C -> D----> E
ここで、aとcは並行して実行されます。 eを実行する方法はありますか と Dは成功しましたか?今、ジョブメトリックを見ると、どちらかのbがすぐに実行されます また 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ステップ:
J1= parent_job.getVariable("J1");
J2= parent_job.getVariable("J2");
J3= parent_job.getVariable("J3");
(J1*J2*J3)==1;
ログのステップへの書き込みはオプションであり、ログメッセージを使用して、ログに赤字のエラーを登録しませんでした。
「待機:$ {j1} - $ {j2} - $ {j3} - $ {j4} - $ {j5}」
だから、各ステップがログを通して何を終わらせるかを見ることができます。
私はこれができると信じていますが、私はこれを本当にうまくテストするのに十分な大きさの仕事を持っていません、そしてそれは厄介です。基本的に、A、B、C、D、およびEジョブに加えて、4つの別々のジョブが必要です。それらをコントロールジョブ、ジョブ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に進むことを許可する前に、両方の並列パスが完了したことを確認します。