この章では、Groovy言語の概要を示し、Oracle Data IntegratorでGroovyスクリプトを使用する方法について説明します。
この付録の内容は次のとおりです。
Groovyは、Javaプラットフォーム用のスクリプト言語で、Javaと同様の構文を持ちます。Groovyスクリプト言語では、ドット区切り表記法の採用により、コードの作成が簡素化されていますが、コレクション、文字列およびJavaBeansを操作する構文は引き続きサポートされています。
Groovy言語の詳細は、次のWebサイトを参照してください:
Groovyエディタは、ODI Studioのコンテキスト内でGroovyスクリプトを作成、編集および実行するための単一の環境を提供します。図15-1に、Groovyエディタの概要を示します。
Groovyエディタには、構文の強調表示やデバッグを除く共通のコード・エディタ・コマンドなど、コード・エディタのすべての標準的な機能が用意されています。次のコマンドがサポートされており、コンテキスト・メニューまたは「ソース」メイン・メニューからアクセスできます。
空白の表示
テキスト編集
行の結合
現在の行を削除
後続空白のトリミング
先頭のタブをスペースに変換
先頭のスペースをタブに変換
ブロックのインデント
ブロックのインデント解除
上へ移動
下へ移動
Groovyエディタでは、次のアクションを実行できます:
ODI StudioでGroovyスクリプトを作成するには:
「ツール」メイン・メニューから、「Groovy」→「新規スクリプト」を選択します。
Groovyエディタが開きます。
Groovyコードを入力します。
これで、スクリプトを保存または実行できます。
以前に作成されたGroovyスクリプトを編集するには:
「ツール」メイン・メニューから、「Groovy」→「スクリプトを開く」または「最近のスクリプト」を選択します。
Groovyファイルを選択して、「開く」をクリックします。
選択したファイルがGroovyエディタで開きます。
Groovyスクリプトを編集します。
これで、スクリプトを保存または実行できます。
Groovyエディタで現在開いているGroovyスクリプトを保存するには:
「ツール」メイン・メニューから、「Groovy」→「スクリプトの保存」または「スクリプトの別名保存」を選択します。
注意: メイン・ツールバーの「保存」オプションは、Groovyエディタに関連付けられていません。 |
1つ以上のGroovyスクリプトを同時に実行することも、1つのスクリプトを並列で複数回実行することもできます。
実行できるのは、Groovyエディタで開かれているスクリプトのみです。ODI Studioでは、スクリプトの一部ではなく、Groovyスクリプト全体が実行されます。
ODI StudioでGroovyスクリプトを実行するには:
Groovyエディタで実行するスクリプトを選択します。
ツールバーの「実行」をクリックします。
スクリプトが実行されます。
これで、「ログ」ウィンドウで実行を確認できます。
注意:
|
停止できるのは実行中のスクリプトのみです。実行中のスクリプトがない場合は、「停止」ボタンが非アクティブ化されます。
Groovyスクリプトの実行は、2つの方法で停止できます:
「ログ」タブで「停止」をクリックします。これにより、特定のスクリプトの実行が停止します。
ツールバーで「停止」をクリックします。複数のスクリプトが実行中の場合は、実行を停止するスクリプトをドロップ・ダウン・リストから選択します。
この項では、Groovyエディタで実行できる拡張アクションを説明します。
カスタム・ライブラリの使用
たとえば外部ドライバが必要な場合、Groovyエディタは外部ライブラリにアクセスできます。
外部ライブラリを使用するには、次のいずれかを行います:
カスタム・ライブラリをuserlibフォルダにコピーします。このフォルダは次の場所にあります:
Windowsオペレーティング・システム:
%APPDATA%/odi/oracledi/userlib
UNIXオペレーティング・システム:
~/.odi/oracledi/userlib
カスタム・ライブラリをadditional_path.txtファイルに追加します。このファイルはuserlibフォルダにあり、内容は次のとおりです:
; Additional paths file ; You can add here paths to additional libraries ; Examples: ; C:\ java\libs\myjar.jar ; C:\ java\libs\myzip.zip ; C:\java\libs\*.jar will add all jars contained in the C:\java\libs\ directory ; C:\java\libs\**\*.jar will add all jars contained in the C:\java\libs\ directory and subdirectories
追加のGroovy実行クラスパスの定義
ODI Studioで使用可能なすべてのクラスパスのエントリに加えて、Groovy実行クラスパスを定義できます。
追加のGroovy実行クラスパスを定義するには:
Groovyスクリプトを実行する前に、「ツール」メイン・メニューから「プリファレンス...」を選択します。
「プリファレンス」ダイアログで、Groovyプリファレンス・ページに移動します。
クラスパスを入力し、「OK」をクリックします。
注意: クラスパスを追加または変更した後、ODI Studioを再起動する必要はありません。 |
odiInputStream変数による入力の読込み
Oracle Data Integratorには、入力ストリームを読み込むためのodiInputStream変数が用意されています。この変数は次のように使用されます:
odiInputStream.withReader { println (it.readLine())}
この機能が使用されると、「ログ」タブの下部に「入力」テキスト・フィールドが表示されます。文字列テキストを入力し、[Enter]を押して、この値をスクリプトに渡します。値がスクリプトに渡されると、スクリプトは終了します。
例15-1は、入力ストリームの使用方法についての別の例を示しています。この例では、<script_name>の停止をクリックするまで入力を続けられます。
例15-1 InputStream
odiInputStream.withReader { reader -> while (true) { println reader.readLine(); } }
複数のスクリプトの使用
複数のスクリプトを同時に使用する場合は、次の点に注意してください:
実行ごとにログ・タブが開きます。
スクリプトが別のスクリプトを参照している場合は、2番目のスクリプトの出力はログ・タブにリダイレクトされません。これはGroovyの既知の制限で、回避策はありません。
ODIインスタンスの使用
Oracle Data Integratorには、変数odiInstanceが用意されています。この変数は、ODI Studioで実行されるすべてのGroovyスクリプトに使用できます。これは、スクリプトを実行するODIインスタンス(より正確には、リポジトリへの接続)を表します。ODI Studioがリポジトリに接続されていない場合、このインスタンスはNullになることに注意してください。
odiInstance変数は、コードを実行する前にODI Studioコードによって初期化されます。この目的にはGroovy SDKのバインドAPIを使用できます。例15-2「プロジェクトの作成」は、odiInstance変数の使用方法を示しています。
Oracle Data Integratorでは、開発タスクを自動化するためにGroovyの使用がサポートされています。タスクの例は次のとおりです:
例15-2では、Groovyスクリプトを使用してODIプロジェクトを作成する方法を示します。
例15-2 プロジェクトの作成
import oracle.odi.core.persistence.transaction.ITransactionDefinition; import oracle.odi.core.persistence.transaction.support.DefaultTransactionDefinition; import oracle.odi.core.persistence.transaction.ITransactionManager; import oracle.odi.core.persistence.transaction.ITransactionStatus; import oracle.odi.domain.project.OdiProject; import oracle.odi.domain.project.OdiFolder; ITransactionDefinition txnDef = new DefaultTransactionDefinition(); ITransactionManager tm = odiInstance.getTransactionManager() ITransactionStatus txnStatus = tm.getTransaction(txnDef) OdiProject myProject = new OdiProject("New Project 1","NEW_PROJECT_1") OdiFolder myFolder = new OdiFolder(myProject,"Test Folder 001") odiInstance.getTransactionalEntityManager().persist(myProject) tm.commit(txnStatus)
例15-3では、外部Groovyスクリプトをインポートする方法を示します。
例15-3 外部Groovyファイル
//Created by ODI Studio import gd.Test1; println "Hello World" Test1 t1 = new Test1() println t1.getName()
例15-4では、別のGroovyスクリプトからクラスをコールする方法を示します。
例15-4 外部ファイルからのクラス
import gd.GroovyTestClass GroovyTestClass tc = new GroovyTestClass() println tc.getClassLoaderName()
例15-5では、Studio UIの自動化を実装する方法を示します。