需求
通过前端UI界面可以灵活配置规则
项目中使用到drools规则引擎来对大数据平台的实时数据流进行分析.
实现技术栈:
规则引擎相关代码示例如下:
public KieSession newKieSession(RuleModel rule) {
StringBuffer rulebuffer = new StringBuffer();
rulebuffer.append(rule.getDrl());
if (!checkRule(rulebuffer.toString())) {
return null;
KieHelper helper = new KieHelper();
helper.addContent(rulebuffer.toString(), type);
KnowledgeBaseImpl kieBase = (KnowledgeBaseImpl) helper.build();
StatelessKieSession kieSession = kieBase.newStatelessKieSession();
return ((StatelessKnowledgeSessionImpl) kieSession).newWorkingMemory();
private boolean checkRule(String rule) {
try {
KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder();
kb.add(ResourceFactory.newByteArrayResource(rule.getBytes("utf-8")), ResourceType.DRL);
if (kb.hasErrors()) {
log.warn(kb.getErrors().toString());
return false;
return true;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return false;