変換のすべてのステップが並行して実行され、Pentaho でこの動作を変更する方法がないことは明らかです。
そのため、特定のフィールド (ファイル名から読み取る) をチェックし、そのファイルを処理するタスク (マッピング - サブ変換) を決定するスイッチ タスクのシナリオがあります。これは、各マッピング タスクの前後に、DB レコードの更新、電子メールの送信などのボイラープレート タスクを実行する一般的なロジックの一部です。
問題は、「ACCC014」ファイルがない場合、この変換を実行できないことです。すべてのタスクが並行して実行されるため、それが不可能であることは理解しています。そのため、2 つ目の問題が発生します。いくつかのマッピング内で、XML ファイルが作成されます。また、Pentaho が空のデータでこのタスクを実行している場合でも、XML 出力ファイルの作成を回避する方法が見つかりません。
理論的にはシリアルなので、この切り替えロジックをジョブに移動することを考えましたが、この種の区別を行う条件付きステップは見つかりませんでした。
また、メタ データ インジェクション タスクも検討しましたが、それが進むべき道だとは考えていません。各サブトランスフォーメーションは、実際には異なる仕事をします。いくつかのテーブルを更新するものもあれば、ファイルを書き込むものもあれば、異なるデータベース間でデータを移動するものもあります。それらはすべて入力として何らかのファイルを受け取り、send_email フラグとメッセージ文字列を返します。他には何もありません。
私たちが望んでいることを行う方法はありますか?または、デフォルトの入力/出力に基づいてロジックの一部を再利用する方法はありませんか?
編集:ACCC014変換を追加。はい、「開始時にファイルを作成しない」オプションがチェックされています。