メイン コンテンツをスキップする 補完的コンテンツへスキップ

サバイバー検証フローの定義

手順

  1. tRuleSurvivorshipをダブルクリックして、[Component] (コンポーネント)ビューを開きます。
  2. [Group Identifier] (グループID)リストから[GRP_ID]を選択し、[Group size] (グループサイズ)リストから[GRP_SIZE]を選択します。
  3. [Rule package name] (ルールパッケージ名)フィールドで、必要ならデフォルトの名前org.talend.survivorship.sampleを別の名前に置き換えます。
    サバイバーの検証フローが生成され、 Integration パースペクティブの[Repository] (リポジトリー)ツリービューにこの名前で保存されます。
  4. [Rule table] (ルールテーブル)で、[+]ボタンをクリックして、ルールごとに行を追加します。
    この例では、1つのルールを定義し、以下のように入力します:

    [Order] (順序)

    [Rule name] (ルール名)

    [Reference column] (参照カラム)

    ファンクション

    [Target column] (対象カラム)

    [Sequential] (連番)

    ["Rule1"] (ルール1)

    ファイル

    .equals("1")

    [acctName] (アカウント名)

    ルール"Rule1"は、tRuleSurvivorshipによって生成され実行されます。このルールにより、[Rule table] (ルールテーブル)[Value] (値)カラムに入力した式に合致する[File] (ファイル)カラムのレコードを検証します。次に、コンポーネントにより[Acctname] (アカウント名)ターゲットカラムから対応するベストオブブリードの値が選択されます。
  5. [Generate rules and survivorship flow] (ルールおよびサバイバーシップフローの生成)の横にあるアイコンをクリックして、定義した条件に基づいてルールパッケージを生成します。
    ルールパッケージが生成され、 Integration パースペクティブの[Repository] (リポジトリー)ツリービューの[Metadata] (メタデータ) > [Rules Management] (ルール管理) > [Survivorship Rules] (サバイバーシップルール)に保存されます。
  6. [Repository] (リポジトリー)ツリービューで、[Survivorship Rules] (サバイバーシップルール)フォルダーの下のルールファイルを参照し、[Rule1]をダブルクリックして開きます。
    しかし、このルールはファイル1からの値を選択します。ただし、特定の条件に基づいてレコードを存続させることもできます。たとえば、Acctnameに値が含まれている場合は、その値を使用するか、代わりにファイル2の値を使用できます。この場合は、ルールファイルでコードを手動で変更する必要があります。
  7. 以下の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
    情報メモ警告:

    ルールファイルを変更した後は、アイコンをクリックしないでください。クリックすると、変更が新しい世代のルールパッケージで置き換えられます。

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。