トランスフォーメーション > Javaトランスフォーメーション > Javaトランスフォーメーションプロパティの設定
  

Javaトランスフォーメーションプロパティの設定

Javaトランスフォーメーションには、トランスフォーメーションコードおよびトランスフォーメーションのプロパティが両方とも含まれています。[詳細]タブで、Javaトランスフォーメーションプロパティを設定します。
使用可能なプロパティは、マッピングモードに応じて異なります。
以下の表では、Javaトランスフォーメーションのプロパティについて説明します。
プロパティ
説明
動作
トランスフォーメーション動作。アクティブまたはパッシブ。アクティブの場合、トランスフォーメーションは、それぞれの入力行に対して複数の出力行を生成できます。パッシブの場合、トランスフォーメーションは、それぞれの入力行に対して1つの出力行を生成できます。
デフォルトはアクティブです。
トレースレベル
データ統合がセッションログに書き込むエラーおよびステータスメッセージの詳細レベル。[簡易]、[通常]、[詳細 - 初期化]、[詳細 - データ]から選択できます。デフォルトは[通常]です。
トランスフォーメーション範囲
Secure Agentが受信データに対してトランスフォーメーションロジックを適用する方法です。次のオプションを使用します。
  • - 行。トランスフォーメーションロジックを、データの1つの行ごとに適用します。トランスフォーメーションの結果がデータの単一の行に依存する場合は、[行]を選択してください。
  • - Transaction。トランスフォーメーションロジックをトランザクションのすべての行に適用します。トランスフォーメーションの結果が同一トランザクションのすべての行に依存し、他のトランザクションの行には依存していない場合には、[Transaction]を選択します。たとえば、Javaコードが単一のトランザクションのデータに対して集計計算を実行する場合に、[Transaction]を選択します。
  • - すべての入力。トランスフォーメーションロジックをすべての入力データに適用します。[すべての入力]を選択すると、Secure Agentはトランザクション境界を削除します。[すべての入力]は、トランスフォーメーションの結果がソース内のデータのすべての行に依存する場合に選択します。たとえば、トランスフォーメーションのJavaコードがすべての入力データをソートする場合、[すべての入力]を選択します。
アクティブトランスフォーメーションの場合、デフォルトは[すべての入力]です。パッシブトランスフォーメーションの場合、このプロパティは常に[行]に設定されます。
アップデートストラテジの定義
トランスフォーメーションが出力行に対するアップデートストラテジを定義するか指定します。有効になっている場合、Javaコードが出力行のアップデートストラテジを決定します。無効になっている場合、アップデートストラテジはターゲットトランスフォーメーションで設定された操作によって決定されます。
このプロパティは、アクティブなJavaトランスフォーメーションに対して設定できます。
デフォルトでは無効になっています。
高精度10進演算を有効にする
JavaクラスがBigDecimalの10進数フィールドを高精度で処理できるようにします。10進数データ型を16以上28未満の精度で処理するにはこのオプションを有効にします。
デフォルトでは無効になっています。
詳細モードでは、Javaトランスフォーメーションは常に高精度を使用します。
日付/時刻にナノ秒を使用する
生成されたJavaコードがトランスフォーメーションのdate/timeデータ型を、ナノ秒の精度を持つJava BigDecimalデータ型に変換するかどうかを指定します。
有効にすると、生成されたJavaコードはトランスフォーメーションのdate/timeデータ型をJava BigDecimalデータ型に変換します。無効にすると、コードはdate/timeデータ型をミリ秒の精度を持つJava longデータ型に変換します。
デフォルトでは無効になっています。
オプション
トランスフォーメーションがオプションかどうかを決定します。トランスフォーメーションがオプションで、受信フィールドがない場合、マッピングタスクの実行は可能で、データはデータフローの別のブランチへと進みます。トランスフォーメーションが必須で、受信フィールドがない場合、タスクは失敗します。
例えば、ソース接続のパラメータを設定します。データフローのあるブランチで、日付/時刻データのみがトランスフォーメーションに入力されるようにフィールドルールを使用してトランスフォーメーションを追加し、トランスフォーメーションがオプションになるように指定します。マッピングタスクを設定するときに、日付/時刻データのないソースを選択します。マッピングタスクはオプションのトランスフォーメーションのあるブランチを無視し、データフローはマッピングの別のブランチを経由して続行されます。
デフォルトでは有効になっています。
設計時クラスパス
トランスフォーメーションを設計および検証するとき、およびMapping Designerからマッピングを実行するときに、Secure Agentがカスタムまたはサードパーティのパッケージ用に使用するクラスパスです。
このクラスパスは、マッピングタスクによるマッピングを実行するときには使用されません。
トランスフォーメーションをテストするときに、Secure AgentのJVMClassPathプロパティ、Secure AgentマシンのCLASSPATH環境変数のどちらにも必要なパッケージが含まれない場合は、設計時クラスパスを設定します。JVMClassPathプロパティまたはCLASSPATH環境変数に必要なパッケージが含まれるように設定した場合は、このプロパティを設定する必要はありません。

アクティブJavaトランスフォーメーションとパッシブJavaトランスフォーメーション

Javaトランスフォーメーションを作成するときは、動作をアクティブまたはパッシブとして定義します。[詳細]タブの動作を定義します。
Javaトランスフォーメーションは、入力データの各行に対して1回ずつ、Javaエディタの[入力行に達したとき]セクションで定義したJavaコードを実行します。
Javaトランスフォーメーションは、以下のように、動作に基づいて出力行を処理します。
トランスフォーメーションの動作は変更することができます。ただし、動作を変更した場合はJavaコードを再コンパイルする必要があります。

アップデートストラテジの定義

アクティブJavaトランスフォーメーションのアップデートストラテジを定義できます。アップデートストラテジを定義するには、[詳細]タブの[アップデートストラテジの定義]オプションを使用します。
アップデートストラテジは、以下のレベルで定義できます。
Javaコード内
出力行のアップデートストラテジを設定するJavaコードを記述できます。Javaコードは、挿入、更新、削除、または拒否のフラグを行に設定できます。Javaコード内でアップデートストラテジを定義するには、[アップデートストラテジの定義]オプションを有効にして、Javaエディタの[入力行に達したとき]セクションでsetOutRowTypeメソッドを使用して行にフラグを設定します。アップデートストラテジの設定の詳細については、setOutRowTypeを参照してください。
ターゲットトランスフォーメーション内
ターゲットトランスフォーメーションを設定して、アップデートストラテジを設定できます。ターゲットトランスフォーメーションを設定して、アップデートストラテジを設定するには、[アップデートストラテジの定義]オプションを無効にして、ターゲットプロパティでターゲット操作を設定します。
このオプションは、パッシブトランスフォーメーションには適用されません。

高精度10進演算の使用

Javaトランスフォーメーションで、Decimalデータ型の高精度10進演算を処理する方法を設定できます。高精度10進演算を有効にするには、[詳細]タブで[高精度10進演算を有効にする]オプションを使用します。
デフォルトでは、JavaトランスフォーメーションはDecimalタイプのフィールドをDoubleデータ型(精度15)に変換します。精度が15を超えるDecimalデータ型を処理する場合は、高精度10進演算を有効化し、DecimalフィールドをJavaのBigDecimalクラスを使用して処理します。
高精度10進演算を有効化すると、DecimalフィールドをBigDecimalとして28までの精度で処理できます。Javaトランスフォーメーションは、精度が28より大きいDecimalデータをDoubleデータ型に変換します。
例えば、Decimalタイプの入力フィールドを持つJavaトランスフォーメーションがあるとします。このトランスフォーメーションは、40012030304957666903の値を受け取ります。高精度10進演算を有効化している場合、このフィールドの値は表示されたとおりに扱われます。高精度10進演算が有効化されていない場合、このフィールドの値は4.00120303049577 x 10^19になります。

詳細モードでの高精度

詳細モードのマッピングに基づくマッピングタスクを正常に実行するには、Javaトランスフォーメーションとマッピングで同じ精度モードを使用する必要があります。Javaトランスフォーメーションでは常に高精度が使用されますが、マッピングではマッピング内の階層フィールドのタイプに基づいて高精度または低精度が使用されます。
マッピング内の階層フィールドに10進数データ型の子フィールドが含まれている場合、マッピングは低精度を使用して実行されます。同じマッピングに10進数フィールドを持つJavaトランスフォーメーションが含まれている場合、マッピングタスクは失敗します。

サブ秒の処理

date/timeデータ型のサブ秒をJavaトランスフォーメーションで処理する方法を設定できます。[詳細]タブで、サブ秒の処理を定義します。
デフォルトでは、生成されたJavaコードによって、トランスフォーメーションのdate/timeデータ型が、ミリ秒単位の精度を持つJava longデータ型に変換されます。
Javaコードでは、1秒以下のデータをナノ秒単位まで処理できます。ナノ秒単位を処理するには、[日付/時刻にナノ秒を使用する]オプションを有効にします。このオプションを有効にすると、生成されたJavaコードによって、トランスフォーメーションのdate/timeデータ型が、ナノ秒単位の精度を持つJava BigDecimalデータ型に変換されます。
詳細モードでは、マイクロ秒までの精度がサポートされます。日時の値にナノ秒が含まれている場合、後続の桁は切り詰められます。