总结
总的来说,面试是有套路的,一面基础,二面架构,三面个人。
最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友
注:如下使用的是ResourceFactory.newClassPathResource获取drl文件,其实里面封装了很多的获取资源的方式(如:newFileResource、newByteArrayResource、newInputStreamResource等)
//JAVA代码:
Resource resource = ResourceFactory.newClassPathResource(“rules/rule.drl”);
KieHelper helper = new KieHelper();
KieBase kieBase = helper.addResource(resource, ResourceType.DRL).build();
StatelessKieSession kieSession = kieBase.newStatelessKieSession();
kieSession.execute(msg);
- 直接通过drools spring配置文件实现规则添加及运行:
<beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:kie=“http://drools.org/schema/kie-spring”
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://drools.org/schema/kie-spring http://drools.org/schema/kie-spring.xsd">
<kie:kmodule id=“kmodule”>
<kie:kbase name=“kbase” packages=“zuowenjun.drools.rules”>
</kie:kbase>
</kie:kmodule>
JAVA代码:
//配置,此处只需通过@ImportResource导入配置文件,自动注册成BEAN即可,当然这里是一个单独配置文件,实际也可以直接放在spring boot 的applcation的启动类上即可。
@Configuration
@ImportResource(“classpath:spring-drools.xml”)
public class DroolsBeansConfig {
}
//BEAN类中直接使用即可
@Component
public class RuleDemo {
@Autowired
private KieBase kbase;//KieBase是单例
public Object checkRule(Message msg){
StatelessKieSession kieSession = kbase.newStatelessKieSession();//session这里尽可能每次都重新创建,成本也比较低,不要搞成单例的,这里是无状态的,用有状态的也行
kieSession.execute(msg);
return msg;
}
}
//如下是上面所有实例中用到的Message类(普通的javaBean)
public class Message {
private Long id;
private String title;
private String createBy;
private Date createDate;
private String content;
private Long enabledFlag;
private Boolean isReply;
private String replyBy;
private Date replyDate;
private String replyContent;
//省略getter、setter方法 …
}
- 还有一种是通过动态创建Kjar来实规则添加及运行,关键步骤如下:
创建 pom.xml-》创建 kmodule.xml-》添加规则内容-》后面是创建session-》执行即可;
代码就不再贴出了,可详见网上资源。
4. Drl规则内容几种写法测试代码
public Object checkRule(Object msg) {
List drlContentList=new ArrayList<>();
//当一个Fact对象为集合对象时的判断
//这个是当把某个集合(List)当成一个fact传入工作内存中后,规则有效
drlContentList.add(“package zuowenjun.drools.rule.demo\n” +
“import cn.zuowenjun.model.Message;\n” +
“import java.util.List;\n” +
“rule “test