Drools:创建条件规则以将输入作为具有排列和组合的每个条件的列表匹配

Drools: create a conditional rule to match an input as list for each condition with permutations and combinations

在 Drools 中如何创建条件规则以匹配 if

1) 输入是一个列表。

2) 每个条件列都有自己的列表

3) 条件应匹配所有条件列表的排列组合

如果我的决定 table 格式如下

------------------------------------------------
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

我将有如下列表形式的条件

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");
}

我的结果是通过创建所有列表的排列组合。 输出:(AD112,AD114)

在我的实际用例中,每个列表可能包含 1000 个值。 而我的决定table可以有一百万条记录

如何使用 drools 实现。

您应该将每一行作为事实文章,其中包含字段 storeprojectCodecountryarticleNumber。你的规则是

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