메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


----------------CustomAgendaEventListener.java -------------------------------
package com.gooper.drool_test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.drools.core.event.ActivationCancelledEvent;
import org.drools.core.event.ActivationCreatedEvent;
import org.drools.core.event.AfterActivationFiredEvent;
import org.drools.core.event.BeforeActivationFiredEvent;
import org.kie.api.event.rule.AfterMatchFiredEvent;
import org.kie.api.event.rule.AgendaEventListener;
import org.kie.api.event.rule.AgendaGroupPoppedEvent;
import org.kie.api.event.rule.AgendaGroupPushedEvent;
import org.kie.api.event.rule.BeforeMatchFiredEvent;
import org.kie.api.event.rule.MatchCancelledEvent;
import org.kie.api.event.rule.MatchCreatedEvent;
import org.kie.api.event.rule.RuleFlowGroupActivatedEvent;
import org.kie.api.event.rule.RuleFlowGroupDeactivatedEvent;
import org.kie.api.runtime.rule.Match;
import org.kie.api.definition.rule.Rule;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/*
 * 룰에 매칭되면 발생되는 엑티베이션 객체에 대한 작업(이전값 혹은 현재값)
 */
public class CustomAgendaEventListener implements AgendaEventListener {
private static final Logger logger = LoggerFactory.getLogger(CustomAgendaEventListener.class);
private List<Match> matchList = new ArrayList<Match>();

// drools 5.x버젼에 존재하던 메서드
/*
public void activationCancelled(ActivationCancelledEvent event) {
logger.info("activation Cancelled : "+event.getActivation());
}
public void activationCreated(ActivationCreatedEvent event) {
logger.info("Activation Created: "+event.getActivation());
}
public void beforeActivationFired(BeforeActivationFiredEvent  event) {
logger.info("Before Activation fired: "+event.getActivation());
}

public void afterActivationFired(AfterActivationFiredEvent  event) {
logger.info("After Activation fired: "+event.getActivation());
}
*/
@Override
public void agendaGroupPopped(AgendaGroupPoppedEvent  event) {
logger.info("Agenda Group Popped: "+event.getAgendaGroup());
}

@Override
public void agendaGroupPushed(AgendaGroupPushedEvent  event) {
logger.info("Agenda Group Pushed: "+event.getAgendaGroup());
}

@Override
public void afterMatchFired(AfterMatchFiredEvent event) {
Rule rule = event.getMatch().getRule();

       String ruleName = rule.getName();
       Map<String, Object> ruleMetaDataMap = rule.getMetaData();

       matchList.add(event.getMatch());
       StringBuilder sb = new StringBuilder("Rule fired: " + ruleName);

       if (ruleMetaDataMap.size() > 0) {
           sb.append("n  With [" + ruleMetaDataMap.size() + "] meta-data:");
           for (String key : ruleMetaDataMap.keySet()) {
               sb.append("n    key=" + key + ", value="
                       + ruleMetaDataMap.get(key));
           }
       }

       logger.debug(sb.toString());
}

@Override
public void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {
logger.info("getRuleFlowGroup : "+event.getRuleFlowGroup());
}
public void reset() {
        matchList.clear();
    }

    public final List<Match> getMatchList() {
        return matchList;
    }

    public String matchsToString() {
        if (matchList.size() == 0) {
            return "No matchs occurred.";
        } else {
            StringBuilder sb = new StringBuilder("Matchs: ");
            for (Match match : matchList) {
                sb.append("n  rule: ").append(match.getRule().getName());
            }
            return sb.toString();
        }
    }


@Override
public void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {
logger.info("RuleFlowGroup Deactivated : "+event.getRuleFlowGroup());
}

@Override
public void beforeMatchFired(BeforeMatchFiredEvent event) {
logger.info("Before Match Fired : "+event.getMatch());
}

@Override
public void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {
logger.info("Before RuleFlowGroup Activated  : "+event.getRuleFlowGroup());
}

@Override
public void beforeRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {
logger.info("Before RuleFlowGroup Deactivated  : "+event.getRuleFlowGroup());
}

@Override
public void matchCancelled(MatchCancelledEvent event) {
logger.info("Match Cancelled  : "+event.getMatch());
}

@Override
public void matchCreated(MatchCreatedEvent event) {
logger.info("Match Created : "+event.getMatch());
}

}

번호 제목 날짜 조회 수
241 Cloudera가 사용하는 서비스별 포트 2018.03.29 427
240 Cloudera설치중에 "Error, CM server guid updated"오류 발생시 조치방법 2018.03.29 290
239 Cloudera설치중 실패로 여러번 설치하는 과정에 "Running in non-interactive mode, and data appears to exist in Storage Directory /dfs/nn. Not formatting." 오류가 발생시 조치하는 방법 2018.03.29 406
238 각 서버에 설치되는 cloudera서비스 프로그램 목록(CDH 5.14.0의 경우) 2018.03.29 314
237 Impala daemon기동시 "Could not create temporary timezone file"오류 발생시 조치사항 2018.03.29 575
236 [우분투] suppoie 채굴 프로세스 발생시 자동으로 삭제하는 shell프로그램 2018.04.01 568
235 Cloudera Manager web UI의 언어를 한글에서 영문으로 변경하기 2018.04.03 860
234 jupyter, zeppelin, rstudio를 이용하여 spark cluster에 job를 실행시키기 위한 정보 2018.04.13 2643
233 Cloudera Manager 5.x설치시 embedded postgresql를 사용하는 경우의 관리정보 2018.04.13 119
232 beeline으로 접근시 "User: gooper is not allowed to impersonate anonymous (state=08S01,code=0)"가 발생하면서 "No current connection"이 발생하는 경우 조치 2018.04.15 491
231 우분투 16.04LTS에 Jupyter설치 2018.04.17 514
230 Apache Toree설치(Jupyter에서 Scala, PySpark, SparkR, SQL을 사용할 수 있도록 하는 Kernel) 2018.04.17 467
229 CentOS 7.x에 Jupyter설치 2018.04.18 754
228 우분투 16.04LTS에 Zeppelin 0.7.3설치 2018.04.18 436
227 Toree 0.1.0-incubating이 Scala 2.10.4까지만 지원하게 되어서 발생하는 NoSuchMethod오류 문제 해결방법(scala 2.11.x을 지원하지만 오류가 발생할 수 있음) 2018.04.20 223
226 Cloudera의 API를 이용하여 impala의 실행되었던 쿼리 확인하는 예시 2018.05.03 568
225 Impala의 Queries탭에서 여러조건으로 쿼리 찾기 2018.05.09 1116
224 Hue Job Browser의 Queries탭에서 조건을 지정하는 방법 2018.05.10 329
223 crypto관련 기생충 박멸 스크립트 2018.05.11 1421
222 tar를 이용한 리눅스 백업 2018.05.13 343
위로