2017-08-02 3 views
0

Ich möchte auf einen bestimmten Index einer Liste von Drools-Datei zugreifen.Abrufen eines bestimmten Elements aus einer Liste (Drools)

zB: My POJO (Tatsache) ist:

package com.test.demo; 
import java.util.List; 

public class Test { 

    private List<String> addresses; 
    private long id; 

    //Getters and Setters here 
} 

Meine DRL Regel ist:

rule "ValidateTestBooleanCheck" 
    /* Iterating over a list */ 
    when Test($addresses : addresses) 
     String() from $addresses 
    then 
     System.out.println("Tested"); 
end 

ich, dass in dieser meiner Regel Tests für alle gültige Zeichenfolge Adressen ist. Meine Anforderung ist jedoch, dass ich direkt zum zweiten und vierten Element der Adressenliste gehen und eine Regel auf diesen bestimmten Eintrag in der Liste anwenden möchte.

+0

gut, es ist Liste, so verwenden Sie einfach addresses.get (1); für zweites Element –

+1

Sie können für diesen Fall ein benutzerdefiniertes Feld verwenden. –

+0

@ SławomirCzaja, wie wäre es mit dem vierten Element auch? –

Antwort

0

Sie können etwas tun (obwohl ich würde Ihnen empfehlen, Ihr Modell zu ändern, wenn Sie besser die Unterschiede zwischen den Adressen widerspiegeln können):

rule "Sample" 
when 
    Test($addresses : addresses) 
    $a1: String() from $addresses.get(1) 
    $a2: String() from $addresses.get(3) 
then 
    System.out.println("Second Address: "+$a1); 
    System.out.println("Fourth Address: "+$a2); 
end 

Diese alle Test Objekte zumindest 4 unter der Annahme, Adressen.

Hoffe, es hilft,

Verwandte Themen