Procédure
-
Double-cliquez sur le tRuleSurvivorship
pour ouvrir sa vue Component.
- Sélectionnez GRP_ID dans la liste Group Identifier et GRP_SIZE dans la liste Group size.
-
Dans le champ Rule package name,
remplacez le nom par défaut, org.talend.survivorship.sample par le nom de votre choix, si
nécessaire.
Le flux de validation de consolidation est généré et sauvegardé sous son nom, dans la vue Repository de la perspective Integration .
-
Dans la table Rule table, cliquez sur le
bouton [+] pour ajouter une ligne par
règle.
Dans cet exemple, définissez une règle et complétez-la comme suit :
Ordre
Nom de la règle
Colonne de référence
Fonction
Valeur
Colonne cible
Sequential
"Rule1"
File
Expression
.equals("1")
Acctname
Une règle, "Rule1", est générée et exécutée par le composant tRuleSurvivorship. Cette règle valide les enregistrements dans la colonne File qui correspondent à l'expression saisie dans la colonne Value de la table Rule table. Le composant sélectionne la valeur correspondante comme étant la meilleure de la colonne cible Acctname. -
A côté du champ Generate rules and survivorship
flow, cliquez sur l'icône
pour générer l'ensemble de règles selon les conditions définies.
L'ensemble de règles est généré et sauvé sous les nœuds Metadata > Rules Management > Survivorship Rules dans la vue Repository de la perspective Integration . -
Dans la vue Repository, parcourez votre
système jusqu'au dossier Survivorship Rules
et double-cliquez sur "Rule1" pour l'ouvrir.
Cette règle sélectionne les valeurs provenant du fichier 1. Cependant, vous pouvez également consolider des enregistrements selon des critères spécifiques, par exemple, si Acctname a une valeur dans le premier fichier, vous pouvez utiliser cette valeur ou utiliser celle du second fichier. Pour ce faire, vous devez modifier le code manuellement dans le fichier de règle.
-
Modifiez la règle avec le code Drools suivant :
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
Avertissement :Après avoir modifié le fichier de règle, vous ne devez pas cliquer sur l'icône
. Sinon, vos modifications seront remplacées par la nouvelle génération de l'ensemble de règles.