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