摘要:
一、背景 在我们编写drools规则的过程中,可能会发生死循环,那么该怎么解决呢?如果想某一个规则只执行一次,即别的规则导致该规则重新执行,也不需要执行,那么该怎么解决呢? 二、解决方案 针对以上问题,我们可以使用no-loop和lock-on-active来解决,那么他们又有什么不同呢?此处我说一 阅读全文
摘要:
一、介绍 规则属性是您可以添加到业务规则以修改规则行为的附加规范。 在 DRL 文件中,您通常在规则条件和操作的上方定义规则属性,多个属性位于单独的行中,格式如下: rule "rule_name" // Attribute // Attribute when // Conditions then 阅读全文
摘要:
一、背景 在我们编写drools的规则文件的时候,有些时候需要用到全局变量,那么这个该怎么实现呢?有哪些注意事项呢? 二、前置知识 1、语法结构 2、全局变量的特点 使用global来定义全局变量,它可以为规则提供数据和服务。 全局变量并不会被写入到工作内存中,因此我们不可放到规则的约束条件中,即w 阅读全文
摘要:
一、背景 在我们编写drl规则的时候,有些时候需要自己声明一些类,用于辅助之后的规则运行,如果需要用到的类还需要在java中预先声明出来,这样就不灵活了,那么是否可以在drl文件中声明一个类呢?可以使用drools的 Type declaration来实现。 二、前置知识 1、Type declar 阅读全文
摘要:
一、背景 我们知道在drools中是存在工作内存的,我们的Fact对象会加入到工作内存中,同时我们自己也可以在drl文件中使用insert/modify/update/delete等方法,修改工作内存中对象的,那么我们怎么查询修改之后的工作内存的值呢?而drools的query可以帮助我们实现这个功 阅读全文
摘要:
一、背景 当我们在drools中编写规则时,有些时候存在重复的代码,那么我们是否可以将这些重复代码抽取出来,封装成一个function来调用呢?那么在drools中如何自定义function? 二、需求 1、当我们的工作内存中存在Person对象时,则需要调用drl function来判断用户是否可 阅读全文
摘要:
一、equality modes介绍 在drools中存在如下2种equality modes。 1、identity模式 identity:这是默认的情况。drools引擎使用IdentityHashMap保存所有插入到工作内存中的Fact对象。对于每次插入一个新的对象,则会返回一个新的FactH 阅读全文
摘要:
一、理解 在drools中存在2种session,一种是有状态的Session (Stateful Session),另外一种一种是无状态的Session (Stateless Session)。 1、那么他们2者之间有什么不同呢? 2、何时该使用有状态的Session,何时该使用无状态的Sessi 阅读全文
摘要:
一、背景 最近在学习规则引擎drools,此处简单记录一下drools的入门案例。 二、为什么要学习drools 假设我们存在如下场景: 在我们到商店购买衣服的时候,经常会发生这样的事情,购买1件不打折,购买2件打0.98折,购买3件级以上打0.85折。 那么我们在代码中如果要实现上述功能,是不是就 阅读全文
摘要:
一、背景 在我们在编写程序的过程中,无法保证自己的代码不抛出异常。当我们抛出异常的时候,通常会将整个异常堆栈的信息使用日志记录下来。通常一整个异常堆栈的信息是比较多的,而且存在一些没用的信息。那么我们如何优化一些异常堆栈的信息打印,过滤掉不必要的信息呢? 二、需求 1、现有的异常堆栈信息 2、我们想 阅读全文