2017-08-03 5 views
1

En Drools Comment créer une règle conditionnelle pour correspondre siDrools: créer une règle conditionnelle pour correspondre à une entrée liste pour chaque condition avec les permutations et les combinaisons

entrée

1) est une liste.

2) chaque volonté de colonne de condition a sa propre liste

3) Etat doit correspondre à des permutations et combinaisons de toutes les listes de l'état

Si ma table de décision est en dessous le format

------------------------------------------------ 
COND. | CONDITION | CONDITION| ACTION 
------------------------------------------------ 
Store | ProjectCode | Country | ArticleNumber 
------------------------------------------------ 
10 | 1001  | USA | AD112 
20 | 1002  | UK  | AD113 
30 | 1003  | USA | AD114 
40 | 1004  | SWE | AD112 
50 | 1005  | GER | AD114 

Je vais avoir des conditions sous forme de liste comme ci-dessous

ArticleRule{ 
List<String> stores = Arrays.asList("10","30","40","50"); 
List<String> projectCodes = Arrays.asList("1001","1002","1004","1005"); 
List<String> countries = Arrays.asList("USA","GER","UK"); 
} 

Mon résultat en créant une permutation et une combinaison de toute la liste serait. Sortie: (AD112, AD114)

Dans mon cas d'utilisation réelle, chaque liste peut contenir 1000 valeurs. Et ma table de décision peut avoir un million d'enregistrements.

Comment puis-je obtenir des baves.

Répondre

0

Vous devriez avoir chaque ligne comme un fait l'article avec des champs store, projectCode, country, articleNumber. Votre règle serait

rule select 
when 
    $article: Article(
     store in ("10","30","40","50"), 
     projectCode in ("1001","1002","1004","1005"), 
     country in ("USA","GER","UK")) 
then 
    System.out.println($article.getArticleNumber); 
end