<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      drools_08_event_listener

      KieSession 除了提供豐富的API外, 還提供三個(gè)event listener, 方便對(duì)于規(guī)則執(zhí)行狀況的監(jiān)控.

      AgendaEventListener

      該接口可以監(jiān)控 rule 被fire, 所以這個(gè)listener最常用, 對(duì)于規(guī)則的計(jì)算, 我們很可能需要做logging, 常見的做法是在drl的RHS主動(dòng)做logging, 但這并不是很好的方式, 一來RHS代碼會(huì)變得冗長(zhǎng), 二來也可能會(huì)漏寫logging.
      使用方法:
      Drools 提供了一個(gè)缺省的 DefaultAgendaEventListener 類, 我們可以實(shí)例化一個(gè)這個(gè)類, 并重載一些我們關(guān)注的方法, beforeMatchFired() 方法是在規(guī)則執(zhí)行之前被調(diào)用;afterMatchFired() 方法是在規(guī)則執(zhí)行之后被調(diào)用; matchCreated() 方法是規(guī)則被放到agenda時(shí)被調(diào)用;

      RuleRuntimeEventListener

      可以監(jiān)聽哪些fact 被加到working memory中了, 不管這些fact是通過rule還是java端做的insert()/update()/delete() 都能觸發(fā) RuleRuntimeEventListener.
      使用方法:
      Drools 提供了一個(gè)缺省的 DefaultRuleRuntimeEventListener 類, 我們可以實(shí)例化一個(gè)這個(gè)類.

      ProcessEventListener

      這個(gè)監(jiān)聽的事件僅和jBPM相關(guān), 所以不需要關(guān)心.

      示例代碼

      • drl 規(guī)則文件:
      package com.sample.rules
       
      import com.sample.Order;
      
       
      rule "not_worry_loop"
         when
             $order:Order(originalPrice>0)
         then
            $order.setAmount(100);
            update($order) ; //trigger DefaultRuleRuntimeEventListener  
      end   
      
      • java 測(cè)試文件:
      package com.sample;
      
      import java.util.List;
      
      import org.drools.core.event.DefaultAgendaEventListener;
      import org.junit.Test;
      import org.kie.api.KieServices;
      import org.kie.api.event.rule.AfterMatchFiredEvent;
      import org.kie.api.event.rule.DefaultRuleRuntimeEventListener;
      import org.kie.api.event.rule.ObjectDeletedEvent;
      import org.kie.api.event.rule.ObjectUpdatedEvent;
      import org.kie.api.runtime.KieContainer;
      import org.kie.api.runtime.KieSession;
      
      public class UnitTest {
      
      	@Test
      	public void test() {
      
      		// load up the knowledge base
      		KieServices ks = KieServices.Factory.get();
      		KieContainer kContainer = ks.getKieClasspathContainer();
      		KieSession kSession = kContainer.newKieSession("ksession-rules");
      
      		kSession.addEventListener(new DefaultAgendaEventListener() {
      			@Override
      			public void afterMatchFired(AfterMatchFiredEvent event) {
      				// TODO Auto-generated method stub
      				super.afterMatchFired(event);
      				System.out.println("=============");
      				List<Object> orders = event.getMatch().getObjects();
      				for (Object order : orders) {
      					System.out.println(order);
      				}
      			}
                  @Override
                  public void matchCreated(MatchCreatedEvent event) {
      				super.matchCreated(event);
                      System.out.println("The rule " + event.getMatch().getRule().getName() + " can be fired in agenda");
                  } 
      
                  @Override
                  public void matchCancelled(MatchCancelledEvent event) {
      				super.matchCancelled(event);
                      System.out.println("The rule " + event.getMatch().getRule().getName()+ " cannot b in agenda");
                 }			
      		});
      
      		kSession.addEventListener(new DefaultRuleRuntimeEventListener() {
      			@Override
      			public void objectDeleted(ObjectDeletedEvent event) {
      				// TODO Auto-generated method stub
      				super.objectDeleted(event);
      				System.out.println("deleted:" + event.getOldObject());
      			}
      
      			@Override
      			public void objectInserted(ObjectInsertedEvent event) {
      				// TODO Auto-generated method stub
      				super.objectInserted(event);
      				System.out.println("inserted:" + event.getObject());
      			}			
      
      			@Override
      			public void objectUpdated(ObjectUpdatedEvent event) {
      				// TODO Auto-generated method stub
      				super.objectUpdated(event);
      				System.out.println("update:" + event.getObject());
      			}
      		});
      
      		Order order = null;
      		order = new Order();
      		order.setAmount(2);
      		order.setOriginalPrice(0.2D);
      		kSession.insert(order);
      
      		order = new Order();
      		order.setAmount(20);
      		order.setOriginalPrice(2.0D);
      		kSession.insert(order);
      		kSession.fireAllRules();
      
      		kSession.dispose();
      
      	}
      }
      
      
      posted @ 2022-10-23 13:45  harrychinese  閱讀(120)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 精品无码久久久久久尤物| 国产精品亚洲аv无码播放| 精品免费看国产一区二区| 日本一区二区中文字幕久久| 亚洲真人无码永久在线| 成a人片亚洲日本久久| 四虎国产精品永久在线看| 麻豆国产高清精品国在线| 久久这里都是精品一区| jk白丝喷浆| 一区二区三区综合在线视频| 高清免费毛片| 四虎成人在线观看免费| av综合亚洲一区二区| 精品国产乱子伦一区二区三区| 少妇办公室好紧好爽再浪一点| 18禁无遮挡啪啪无码网站| 亚洲午夜精品久久久久久抢| 2019国产精品青青草原| 廉江市| 国产成人精品亚洲一区二区| 国产午夜亚洲精品国产成人| 宁夏| 久久AV中文综合一区二区| 国产成人AV大片大片在线播放| 讷河市| 97se亚洲综合自在线| 免费看欧美日韩一区二区三区| 国产盗摄xxxx视频xxxx| 亚洲韩国精品无码一区二区三区| 东北女人毛多水多牲交视频| 欧美成人午夜在线观看视频| 欧美18videosex性欧美tube1080 | 色欲天天婬色婬香综合网| 六十路老熟妇乱子伦视频| 内地偷拍一区二区三区| 日韩人妻少妇一区二区三区| 欧美成人精品一区二区三区免费| 亚洲av无码成人精品区一区| 国产精品无码a∨麻豆| 日韩亚洲欧美中文高清|