메뉴 건너뛰기

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());
}

}

번호 제목 날짜 조회 수
501 Cloudera가 사용하는 서비스별 포트 2018.03.29 427
500 Cloudera가 사용하는 서비스별 디렉토리 2018.03.29 360
499 cloudera-scm-agent 설정파일 위치및 재시작 명령문 2018.03.29 407
498 [CentOS] 네트워크 설정 2018.03.26 387
497 Components of the Impala Server 2018.03.21 378
496 HDFS Balancer설정및 수행 2018.03.21 277
495 hadoop 클러스터 실행 스크립트 정리 2018.03.20 699
494 HA(Namenode, ResourceManager, Kerberos) 및 보안(Zookeeper, Hadoop) 2018.03.16 188
493 자주쓰는 유용한 프로그램 2018.03.16 1385
492 에러 추적(Error Tracking) 및 로그 취합(logging aggregation) 시스템인 Sentry 설치 2018.03.14 245
491 update 샘플 2018.03.12 1030
490 이미지 관리 오픈소스 목록 2018.03.11 382
489 Scala에서 countByWindow를 이용하기(예제) 2018.03.08 631
488 Scala를 이용한 Streaming예제 2018.03.08 511
487 scala application 샘플소스(SparkSession이용) 2018.03.07 304
486 fuseki의 endpoint를 이용한 insert, delete하는 sparql예시 2018.02.14 209
485 프로세스를 확인해서 프로세스를 삭제하는 shell script예제(cryptonight) 2018.02.02 422
484 spark-submit 실행시 "java.lang.OutOfMemoryError: Java heap space"발생시 조치사항 2018.02.01 641
483 Could not compute split, block input-0-1517397051800 not found형태의 오류가 발생시 조치방법 2018.02.01 334
482 Hadoop의 Datanode를 Decommission하고 나서 HBase의 regionservers파일에 해당 노드명을 지웠는데 여전히 "Dead regionser"로 표시되는 경우 처리 2018.01.25 494
위로