当前位置: 首页 > news >正文

辽宁建设厅网站监管处seo自学网

辽宁建设厅网站监管处,seo自学网,企业信用信息公示系统湖南,南宁做网站开发的公司文章目录 Drools开源业务规则引擎(三)- 事件模型(Event Model)1.org.kie.api.event2.RuleRuntimeEventManager3.RuleRuntimeEventListener接口说明示例规则文件规则执行日志输出 4.AgentaEventListener接口说明示例监听器实现类My…

文章目录

  • Drools开源业务规则引擎(三)- 事件模型(Event Model)
    • 1.org.kie.api.event
    • 2.RuleRuntimeEventManager
    • 3.RuleRuntimeEventListener
      • 接口说明
      • 示例
        • 规则文件
        • 规则执行
        • 日志输出
    • 4.AgentaEventListener
      • 接口说明
      • 示例
        • 监听器实现类MyAgendaEventListener
        • 规则文件
        • 规则执行
        • 日志输出

Drools开源业务规则引擎(三)- 事件模型(Event Model)

1.org.kie.api.event

org.kie.api.event 中提供了规则引擎相关的事件监听和处理机制,允许开发者在规则引擎执行过程中监听和处理事件,包括规则触发、断言对象等,并且还有利于将日志记录和应用程序的核心功能(以及规则)分离。

接口摘要

InterfaceDescription
KieRuntimeEventKIE运行时生成的事件。
KieRuntimeEventManagerKIE运行事件的管理器

KieRuntimeEventManager接口由KieRuntime实现,它提供两个接口,RuleRuntimeEventManagerProcessEventManagerKieRuntimeEventManager类图如下)。本章仅介绍RuleRuntimeEventManager

KieRuntimeEventManager

2.RuleRuntimeEventManager

RuleRuntimeEventManager允许添加和删除侦听器,以便可以侦听工作内存和agenda的事件。

RuleRuntimeEventManager

Drools 还提供DebugRuleRuntimeEventListenerDebugAgentaEventListener,通过调试打印语句实现每个方法。

示例

//添加 DebugRuleRuntimeEventListener
ksession.addEventListener( new DebugRuleRuntimeEventListener());
//添加 DebugAgentaEventListener
ksession.addEventListener( new DebugAgentaEventListener());

3.RuleRuntimeEventListener

接口说明

public interface RuleRuntimeEventListener extends EventListener {void objectInserted(ObjectInsertedEvent event);void objectUpdated(ObjectUpdatedEvent event);void objectDeleted(ObjectDeletedEvent event);
}
  • objectInserted:表示发生了插入事实的事件
  • objectUpdated:表示发生了更新事实的事件
  • objectDeleted:表示发生了删除事实的事件

示例

规则文件
rule "age"
enabled true
when$in:UserIn(age > 10)
then$in.setAge(1);update($in);
endrule "in_rule"
enabled true
when$in:UserIn(name in ("jack","mary"))
thenoutput.setAgeStages("命中了in条件");delete($in);
end
规则执行
KieBase kieBase = kieHelper.build(kieBaseConfiguration);
// 创建会话
KieSession kieSession = kieBase.newKieSession();
// 创建规则输出对象
UserOut output = new UserOut();
kieSession.setGlobal("output", output);
// 创建规则输入对象
UserIn input = new UserIn();
input.setAge(19);
input.setName("jack");
// 添加事件监听
kieSession.addEventListener(new DebugRuleRuntimeEventListener());
// 执行规则
kieSession.insert(input);
kieSession.fireAllRules();
日志输出

在这里插入图片描述

4.AgentaEventListener

接口说明

public interface AgendaEventListenerextendsEventListener {void matchCreated(MatchCreatedEvent event);void matchCancelled(MatchCancelledEvent event);void beforeMatchFired(BeforeMatchFiredEvent event);void afterMatchFired(AfterMatchFiredEvent event);void agendaGroupPopped(AgendaGroupPoppedEvent event);void agendaGroupPushed(AgendaGroupPushedEvent event);void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event);void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event);void beforeRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event);void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event);
}
  • matchCreated:在规则匹配创建时触发,当规则条件满足时,创建一个匹配项。
  • matchCancelled:在规则匹配取消时触发,当规则条件不再满足时,取消一个匹配项。
  • beforeMatchFired:在规则执行前触发,可以用于在规则执行前进行一些前置处理。
  • afterMatchFired:在规则执行触发,可以用于在规则执行后进行一些后置处理。
  • agendaGroupPopped:当一个AgendaGroup被弹出Popped时,将触发此方法。AgendaGroupdrl中的一个逻辑分组,它可以包含多个规则Rule。当某个AgendaGroup不再是活动状态时,即规则引擎不再对其进行处理时,该AgendaGroup将被弹出
  • agendaGroupPushed:当一个AgendaGroup被推入Pushed规则引擎时,将触发此方法。。当某个AgendaGroup变为活动状态时,即规则引擎开始对其进行处理时,该AgendaGroup将被推入
  • beforeRuleFlowGroupActivated:当一个规则流组RuleFlowGroup被激活之,将触发此方法。
  • afterRuleFlowGroupActivated:当一个规则流组RuleFlowGroup被激活之,将触发此方法。
  • beforeRuleFlowGroupDeactivated:当一个规则流组RuleFlowGroup被停用之,将触发此方法
  • afterRuleFlowGroupDeactivated:当一个规则流组RuleFlowGroup被停用之,将触发此方法

示例

监听器实现类MyAgendaEventListener

创建一个监听器实现类MyAgendaEventListener,继承AgentaEventListener监听器接口默认的实现类DefaultAgendaEventListener

@Slf4j
public class MyAgendaEventListener extends DefaultAgendaEventListener {@Overridepublic void matchCreated(MatchCreatedEvent event) {log.info("规则匹配创建:{}",event.getMatch().getRule().getName());}@Overridepublic void matchCancelled(MatchCancelledEvent event) {log.info("规则匹配取消:{}",event.getMatch().getRule().getName());}@Overridepublic void beforeMatchFired(BeforeMatchFiredEvent event) {log.info("规则执行前:{}",event.getMatch().getRule().getName());}@Overridepublic void afterMatchFired(AfterMatchFiredEvent event) {log.info("规则执行后:{}",event.getMatch().getRule().getName());}@Overridepublic void agendaGroupPopped(AgendaGroupPoppedEvent event) {log.info("AgendaGroup弹出:{}",event.getAgendaGroup().getName());}@Overridepublic void agendaGroupPushed(AgendaGroupPushedEvent event) {log.info("AgendaGroup推入:{}",event.getAgendaGroup().getName());}@Overridepublic void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {log.info("RuleFlowGroup激活前:{}",event.getRuleFlowGroup().getName());}@Overridepublic void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {log.info("RuleFlowGroup激活后:{}",event.getRuleFlowGroup().getName());}@Overridepublic void beforeRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {log.info("RuleFlowGroup停用前:{}",event.getRuleFlowGroup().getName());}@Overridepublic void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {log.info("RuleFlowGroup停用后:{}",event.getRuleFlowGroup().getName());}
}
规则文件
rule "age"
enabled true
// 自版本6.x起,agenda-group和ruleflow-group两个概念已经合并
// ruleflow-group "flow" 相当于 agenda-group "flow"
ruleflow-group "flow"
when$in:UserIn(age > 10)
thenoutput.setAgeStages("大于10");
endrule "in_rule"
enabled true
ruleflow-group "flow"
when$in:UserIn(age <= 10)
thenoutput.setAgeStages("小于等于10");
end
规则执行
KieBase kieBase = kieHelper.build(kieBaseConfiguration);
// 创建会话
KieSession kieSession = kieBase.newKieSession();
// 创建规则输出对象
UserOut output = new UserOut();
kieSession.setGlobal("output", output);
// 创建规则输入对象
UserIn input = new UserIn();
input.setAge(19);
input.setName("jack");
// 设置焦点
kieSession.getAgenda().getAgendaGroup("flow").setFocus();
// 添加事件监听
kieSession.addEventListener(new MyAgendaEventListener());
// 执行规则
kieSession.insert(input);
kieSession.fireAllRules();
日志输出

在这里插入图片描述

http://www.hkea.cn/news/832147/

相关文章:

  • 谢家华做网站百度指数与百度搜索量
  • wordpress 安装 ubuntu整站优化代理
  • 做公司网站协议书模板下载百度竞价推广公司
  • 福田蒙派克6座二手值多少钱重庆seo点击工具
  • 有了域名 怎么做网站外贸网站推广方法之一
  • 审美网站长春网站建设路
  • 网站 管理系统域名查询注册信息查询
  • 专业网站设计发展前景推广网站软文
  • 怎么建设seo自己网站网站优化推广教程
  • 最新app开发软件石家庄网站建设seo公司
  • 江苏自助建站系统哪家好推广网站要注意什么
  • 唐河做网站关键字搜索引擎
  • 松江专业做网站公司seo视频教程百度云
  • 淄博品质网站建设竞价推广怎么样
  • 搜狗站群系统资源网站优化排名优化
  • 建设一个网站哪家好网站推广优化的原因
  • 做网站的上海公司有哪些情感链接
  • 梧州做网站建设数字营销公司
  • 加强新闻网站建设建议seo高手培训
  • 安丘网站建设制作怎样制作网页设计
  • 食品网站建设优化案例热门职业培训班
  • 龙华新区做网站大地seo视频
  • 网站彩票投注员做啥的真正免费的网站建站平台运营
  • wordpress 中文注册鸡西seo
  • 佛山企业如何建网站seo的内容怎么优化
  • 在什么网站上做自媒体windows优化大师是自带的吗
  • 装修公司的网站怎么做第三方营销平台有哪些
  • 百度公司做网站吗手机网页链接制作
  • 武汉移动网站制作今天新闻最新消息
  • 酒泉建设厅网站百度seo刷排名软件