我有一个运输限制表,其中包含以下规则:
ProductClass:'Suites' 不能运送到 'Georgia',
ProductClass:'Body Spray' 和 Hazmat:True 不能运送到 Postal Code:322001
ProductClass:'Baby Toys' 可以不能运送到“美国”,
我们有一条规则,例如,我不能将任何物品运送到“亚利桑那”州。
ProductClass、Hazmat 和 ShippingMethod 是一组(零个或多个属性可以有值)。
同样,邮政编码、州、国家是另一组(每条规则只有一个填充值)。
这是配置/静态数据,它会很大(超过 10k 条规则)
规则 ID | 产品类别 | 危险品 | 邮寄方式 | 邮政编码 | 状态 | 国家 |
---|---|---|---|---|---|---|
1 | 西装 | 乔治亚州 | ||||
2 | 身体喷雾 | 真的 | 322001 | |||
3 | 身体喷雾 | 322009 | ||||
4 | 婴儿玩具 | 我们 | ||||
5 | 枪械 | 佛罗里达 | ||||
6 | 枪械 | 空气 | 夏威夷 | |||
7 | 亚利桑那 |
现在我收到了 3 件商品的订单,例如:
Item1:ProductClass 'A',Hazmat:false,ShippingMethod:'ByAir',postalCode:322002,state:'Texas'
Item2:ProductClass 'E',Hazmat:false,ShippingMethod:'ByAir ', postalCode:322009, state:'Texas'
Item3: ProductClass 'D', Hazmat: false, ShippingMethod:'ByAir', postalCode:322011, state:'Florida'
当我收到订单时(在我的示例中,我收到了 3 件商品的订单),我需要通过上面配置的所有这些限制规则运行,如果一个项目有一个/多个限制规则匹配,则需要记录它们。
在 Java 中实现这一目标的最佳算法是什么。