サバイバー検証フローの定義
手順
-
tRuleSurvivorshipをダブルクリックして、[Component] (コンポーネント)ビューを開きます。
- [Group Identifier] (グループID)リストから[GRP_ID]を選択し、[Group size] (グループサイズ)リストから[GRP_SIZE]を選択します。
-
[Rule package name] (ルールパッケージ名)フィールドで、必要ならデフォルトの名前org.talend.survivorship.sampleを別の名前に置き換えます。
サバイバーの検証フローが生成され、 Integration パースペクティブの[Repository] (リポジトリー)ツリービューにこの名前で保存されます。
-
[Rule table] (ルールテーブル)で、[+]ボタンをクリックして、ルールごとに行を追加します。
この例では、1つのルールを定義し、以下のように入力します:
[Order] (順序)
[Rule name] (ルール名)
[Reference column] (参照カラム)
ファンクション
値
[Target column] (対象カラム)
[Sequential] (連番)
["Rule1"] (ルール1)
ファイル
式
.equals("1")
[acctName] (アカウント名)
ルール"Rule1"は、tRuleSurvivorshipによって生成され実行されます。このルールにより、[Rule table] (ルールテーブル)の[Value] (値)カラムに入力した式に合致する[File] (ファイル)カラムのレコードを検証します。次に、コンポーネントにより[Acctname] (アカウント名)ターゲットカラムから対応するベストオブブリードの値が選択されます。 -
[Generate rules and survivorship flow] (ルールおよびサバイバーシップフローの生成)の横にあるアイコンをクリックして、定義した条件に基づいてルールパッケージを生成します。
ルールパッケージが生成され、 Integration パースペクティブの[Repository] (リポジトリー)ツリービューの[Metadata] (メタデータ) > [Rules Management] (ルール管理) > [Survivorship Rules] (サバイバーシップルール)に保存されます。
-
[Repository] (リポジトリー)ツリービューで、[Survivorship Rules] (サバイバーシップルール)フォルダーの下のルールファイルを参照し、[Rule1]をダブルクリックして開きます。
しかし、このルールはファイル1からの値を選択します。ただし、特定の条件に基づいてレコードを存続させることもできます。たとえば、Acctnameに値が含まれている場合は、その値を使用するか、代わりにファイル2の値を使用できます。この場合は、ルールファイルでコードを手動で変更する必要があります。
-
以下のDroolsコードを使用してルールを変更します:
package org.talend.survivorship.sample rule "ExistInFile1" no-loop true dialect "mvel" ruleflow-group "Rule1Group" when $input : RecordIn( file.equals("1"), acctname!= null, !acctname.trim().equals("") ) then System.out.println("ExistInFile1 fired\t" + $input.record_id); dataset.survive( $input.TALEND_INTERNAL_ID, "Acctname" ); dataset.survive( $input.TALEND_INTERNAL_ID, "File" ); end rule "NotExistFile1" no-loop true dialect "mvel" ruleflow-group "Rule1Group" when $input : RecordIn( file.equals("2"), acctname!= null && !acctname.trim().equals("") ) (not (exists (RecordIn( file.equals("1") ))) or exists( RecordIn( file.equals("1"), acctname== null || acctname.trim().equals("") ) )) then System.out.println("NotExistFile1 fired\t" + $input.record_id); dataset.survive( $input.TALEND_INTERNAL_ID, "Acctname" ); dataset.survive( $input.TALEND_INTERNAL_ID, "File" ); end
情報メモ警告:ルールファイルを変更した後は、アイコンをクリックしないでください。クリックすると、変更が新しい世代のルールパッケージで置き換えられます。