메뉴 건너뛰기

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

}

번호 제목 날짜 조회 수
741 [Ranger]RangerAdminRESTClient Error gertting pplicies; Received NULL response!!, secureMode=true, user=rangerkms/node01.gooper.com@ GOOPER.COM (auth:KERBEROS), serviceName=cm_kms 2023.06.27 73
740 [vue storefrontui]외부 API통합하기 참고 문서 2022.02.09 80
739 [Encryption Zone]Encryption Zone에 생성된 table을 select할때 HDFS /tmp/zone1에 대한 권한이 없는 경우 2023.06.29 83
738 ./gradlew :composeDown 및 ./gradlew :composeUp 를 성공했을때의 메세지 2023.02.20 84
737 [EncryptionZone]User:testuser not allowed to do "DECRYPT_EEK" on 'testkey' 2023.06.29 89
736 [vi] test.nq파일에서 특정문자열(예, <>)을 찾아서 포함되는 라인을 삭제한 동일한 이름의 파일을 만드는 방법 2017.01.25 98
735 [Impala] alter table구문수행시 "WARNINGS: Impala does not have READ_WRITE access to path 'hdfs://nameservice1/DATA/Temp/DB/source/table01_ccd'" 발생시 조치 2024.04.26 98
734 CM의 Impala->Query tab에서 FINISHED query가 보이지 않는 현상 2021.08.31 99
733 restaurant-controller,에서 등록 예시 2022.04.30 99
732 주문히스토리 조회 2022.04.30 99
731 [Hue metadata]Oracle에 있는 Hue 메타정보 테이블을 이용하여 coordinator와 workflow관계 목록을 추출하는 방법 2023.08.22 99
730 [Cloudera Agent] Metadata-Plugin throttling_logger INFO (713 skipped) Unable to send data to nav server. Will try again. 2022.05.16 103
729 oozie의 sqoop action수행시 ooize:launcher의 applicationId를 이용하여 oozie:action의 applicationId및 관련 로그를 찾는 방법 2023.07.26 104
728 [CDP7.1.6,HDFS]HDFS파일을 삭제하고 Trash비움이 완료된후에도 HDFS 공간을 차지하고 있는 경우 확인/조치 방법 2023.07.17 108
727 [CDP7.1.7, Replication]Encryption Zone내 HDFS파일을 비Encryption Zone으로 HDFS Replication시 User hdfs가 아닌 hadoop으로 수행하는 방법 2024.01.15 110
726 주문 생성 데이터 예시 2022.04.30 112
725 호출 url현황 2023.02.21 112
724 [CDP7.1.7, Hive Replication]Hive Replication진행중 "The following columns have types incompatible with the existing columns in their respective positions " 오류 2023.12.27 116
723 eclipse 3.1 단축키 정리파일 2017.01.02 118
722 [CDP7.1.7]Oozie job에서 ERROR: Kudu error(s) reported, first error: Timed out: Failed to write batch of 774 ops to tablet 8003f9a064bf4be5890a178439b2ba91가 발생하면서 쿼리가 실패하는 경우 2024.01.05 118
위로