网站首页 > 技术文章 正文
接下来继续来看insert内置方法。接下来要讲的是insert方法,这个方法的作用是什么?是删除工作内存中的数据,并且让相关的规则重新匹配。
继续还是在规则文件student.dr规则文件里面来测试,同样再往前再来写一个,规则要测试的是insert的方法。这个方法是这样的,在这来编写一下,入了,要求也是等于十岁。但是要注意当前这两个规则的名称是不是相同了,规则的名称应该是唯一的不能相同。
在这是用于删除,主要就是改一下,别让名字相同,摁的。注意看规则条件也是等于十岁。有的同学肯定说这两个条件是不是完全一样,这样这两个规则是不是都执行了?在这只希望让上面规则执行,下边规则不执行。
怎么做到?是这样的,上面规则执行了,执行完之后把死丢的删掉,删掉之后是不是相当于工作内存里面就没有fact对象了?所以第二个规则就不会匹配到了。所以在这可以通过调用retract的方法,把工作内存里面fact对象删除掉。
这个是方法,retract方法的作用是什么?是删除工作内存中的fact对象,会导致相关规则重新匹配。所以重新匹配还能匹配到吗?就匹配不到了,因为已经把对象删除掉了。
在这输出一下规则,把规则的名称拷过来,触发了。但是可能有的同学会有疑问,就说这两个规则的匹配条件都一样,在这个地方删除了它了,删除死对头了,怎么保证是先执行规则再执行下边规则?如果是先执行下边规则,因为已经执行完了,再删除是不是就同时因为已经执行过了?
所以如何保证先执行上面这个,然后再执行下边规则,如何保证执行的顺序?用到一个属性,后边也会讲到,就是在规则属性这有一个叫做insert,这个叫做什么?其实就是执行的优先级,执行的优先级,所以可以在这来指定一下。
其实如果不指定,默认情况下优先级都是一样的,这个时候就会按照规则文件编写的先后顺序,谁在前面谁先执行。如果通过优先级也可以,也可以,就是这个叫做cellus,这个优先级就是指定数值,默认应该是零,在这给个十,给个十就意味着一定是先执行,再执行下边这个。
其实对于当前文件其实不写也是可以的,因为什么?因为优先级相同的情况下是由上到下这种顺序来执行的,如果用它就更明确了执行的顺序,所以这个属性后边还会讲,所以在这简单解释一下就可以了。
接下来来看一下,现在a值是不是等于十,正好设置的是十,所以来执行一下,看一下效果,是不是只有第一个规则触发了,而后边第二个规则并没有触发,就是因为在这个地方是不是把它给删除掉了,导致第二个规则是不是没有匹配成功。
如果把这一个给注视起来,也就不再删除student的对象了,这样也就匹配到了,匹配到之后是不是也会执行,同时因为执行了,是不是又insert了一个新的对象进来,所以会导致执行,所以这就是一连串的连锁反应,最终所有的规则就都执行了。
来看一下效果,现在把删除方法是不是给注视起来了,所以所有的规则就都触发了。
这个就是关于retract的方法,内置方法的作用就是删除工作内存里边的fact对象,并且会让相关的规则重新来匹配。
猜你喜欢
- 2024-11-16 drools的类型声明(Type declarations)
- 2024-11-16 规则引擎drools-实战个人所得税计算器
- 2024-11-16 基于 Flink 和 Drools 的实时日志处理
- 2024-11-16 开源、强大的工作流引擎:camunda入门介绍
- 2024-11-16 53-SpringBoot整合Drools_2(springboot整合zuul)
- 2024-11-16 开启灵活开发编码模式:规则引擎drools——LHS部分
- 2024-11-16 AI应用企业落地方法论:践行财务共享AI审单项目
- 2024-11-16 开启灵活开发编码模式:规则引擎drools——RHS部分
- 2024-11-16 开启灵活开发编码模式:规则引擎drools——高级语法global
- 2024-11-16 43-drools基础语法(比较操作符_memberof)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)