[ODI] Extending the Interface Accelerator

ODI11g SDKの機能を以前のエントリで説明しました(訳注:日本語はこちら)。このエントリではソーステーブルとターゲットテーブルを記載した簡単な制御ファイルを作成しました。ODIのUIが持つ自動マッピング機能はカラム名が同一のものをマッピングします。
では、ちょっと違う名前の列のマッピングを自動化するにはどうすればよいのでしょうか。例えば、標準的な接頭辞・接尾辞が列名に追加されている場合にはどうすればよいのでしょうか。以前のエントリの方法では、どの列もマッピングしないでしょう。これは自動マッピング機能を使用したからです。詳しくは前回のエントリで紹介したinterfaceAccelerator.javaファイルの以下の行を確認してください。
interactiveHelper.performAction(new InterfaceActionSetTargetDataStore(targetDatastore, new MappingMatchPolicyLazy(), new AutoMappingComputerLazy(), new AutoMappingComputerLazy(), new TargetKeyChooserPrimaryKey()));
ODIが提供する自動マッピングクラスに手を入れてこのロジックを改良します。それではMyRegexpAutoMappingComputer.javaで定義したクラスを作成しましょう。このクラスはターゲット列のマッピングを作成するperformAutoMappingメソッドを改良します。これはスーパークラスのメソッドを呼ぶこともできますし、必要であれば名前の正確な一致によるマッピングも利用できます。
interactiveHelper.performAction( new InterfaceActionSetTargetDataStore(targetDatastore, new MappingMatchPolicyLazy(), new MyRegexpAutoMappingComputer( MyRegexpAutoMappingComputer.MatchTypes.TGTENDSWITH), new MyRegexpAutoMappingComputer( MyRegexpAutoMappingComputer.MatchTypes.TGTENDSWITH), new TargetKeyChooserPrimaryKey()));
上の呼び出しをご覧下さい。新しい自動マッピングクラスを使っており、TGTENDSWITHというenumerationに渡して、マッチングするようにしています(それゆえEMPNOと命名されたソース側はターゲット側のSTF_EMPNOとマッチングします)。新しいファイルは以下のリンクから利用できます。

原文はこちら。
http://blogs.oracle.com/dataintegration/entry/extending_the_interface_accelerator

0 件のコメント:

コメントを投稿