Drools:创建一个条件规则,将输入作为每个条件的列表与排列和组合相匹配

时间:2017-08-03 00:49:19

标签: drools bpm drools-kie-server

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

1)输入是一个列表。

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

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

如果我的决定表格式低于

------------------------------------------------
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个值。 我的决策表可以有一百万条记录。

如何使用drools。

1 个答案:

答案 0 :(得分:0)

您应该将每一行作为事实文章,其中包含字段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