Drools规则引擎使用小结(一):传入多个List对象

本文总结了如何使用Drools规则引擎处理传入的多个List对象,例如航班schedule、空闲司机drivers和行李运输任务missionlist。在面临规则文件无法准确区分和遍历这些Fact对象的问题时,提出了将规则文件拆分为任务生成和任务分配两部分,并利用kSession.insert()和kSession.setGlobal()来区分处理对象的方法,以避免在LHS对多个List集合进行判断。
摘要由CSDN通过智能技术生成

考虑如下情形:实现根据航班信息schedule(主要是行李数量)自动生成行李运输任务mission(规则简化为每180件行李算作一个行李运输任务),并把生成的任务分配给空闲的司机driver运输(规则简化为比较空闲司机和任务数量进行分配)。

考虑实现:传入未分配行李运输任务的航班对象集合schedules,空闲司机对象集合drivers,空的行李运输任务对象集合missionlist(也就是三个Fact对象,均为List)返回生成的任务集合以及将未分配行李运输任务航班对象属性更改为为已分配,空闲司机对象属性更改为工作中。

在实现的时候就会发现在一个Drools规则文件中无法准确区分传入的三个Fact对象并进行遍历,这个时候该怎么做呢

我这里一个比较好的解决方案就是:将规则文件一分为二,一个用于任务生成,一个用于任务分配,且将在LHS需要进行判断的对象集合设置为插入kSession.insert(),在LHS中不需要判断的对象集合设置为全局变量kSession.setGlobal(),这样做的好处是又可以避免在LHS对多个List集合进行判断,代码如下:

 KieServices ks = KieServices.Factory.get();
 KieContainer kieContainer = ks.getKieClasspathContainer();
 // 获取kmodule.xml中
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值