Jython スクリプトで ODI 変数を設定する際に問題が発生しています。以下の問題に関するヘルプは素晴らしいです。
問題文: 現在のオペレーティング システムから OS 名を取得する必要があり、オペレーティング システムに基づいて、ODIOSCommand (Linux または Windows) を実行する必要があります。
ただし、OS 名を変数に設定することはできません (つまり、Jython 変数または ODI 変数を使用します)。最初の値(デフォルト値)のみを取得し、値を動的に設定していないようです。
問題:- Jython スクリプトを使用して ODI 変数を設定し、動的な値を取得することができません。
Jython スクリプトを使用して ODI 変数を設定しようとしています。この変数値を使用して ODIOS コマンドを実行し、それぞれのオペレーティング システムでテキスト ファイルを作成します。
詳細は以下をご覧ください。•jython スクリプトを実行するプロシージャを作成します。•コマンド「os.get_os_type()」を実行し、OS タイプを取得します。•OS タイプが Windows または NT の場合、ODI 変数 (#IsWindows) を「はい」に設定します。•OS タイプが Linux の場合、ODI 変数 (#IsWindows) を「NO」に設定します。• ODI 変数 (#IsWindows) を評価し、値が YES の場合は Windows コマンドを実行してテキスト ファイルを作成します。それ以外の場合は、Linux コマンドを実行して Linux マシンにテキスト ファイルを作成します。
11g バージョンの既存のコード:-
OSのインポート
os.get_os_type() == 'nt' の場合:
cmd = 'dir "#ProcessingFolder*.xml" /s /b /a:-d > "#CurrFileName"'
os.system(コマンド)
そうしないと:
os.system("ls -d #ProcessingFolder*.[x,X][m,M][l,L] > #CurrFileName")
上記のコードはODI 12.2.1では機能しないため、jythonコードの下では、ODI 12.2.1でODI変数を設定しようとしています:-
OSのインポート
os.get_os_type() == 'nt' の場合:
POG_IMPORT_3.IsWindows = 'はい'
そうしないと:
#POG_IMPORT_3.IsWindows= 'いいえ'
上記の手順が実行されると、「Refresh」変数を使用して、変数の最新の値を取得します。つまり、SELECT '#IsWindows' FROM DUAL.
そして、変数を評価して、「YES」か「NO」かを確認します。
しかし、「#IsWindows」変数は、実行時に設定された値を設定/保持していません。
注: これは 11.1.1.7 から 12.2.1 に移行されたプロジェクトであり、12.2.1 で初めて変数を作成しています。
12.2.1 変数の作成/使用は 12.2.1 バージョンで異なりますか?
ランタイム値をODI変数に格納する方法に関するヒントは非常に役立ちますか?