2

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

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

我怎样才能实现使用流口水。

4

1 回答 1

0

您应该将每一行作为带有字段store, projectCode, country,的事实文章articleNumber。你的规则是

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
于 2017-08-03T05:45:11.887 回答