메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다. 문의사항은 gooper@gooper.com로 메일을 보내주세요.


-------결과 --------

[2016-07-21 18:03:40] [CustomWorkingMemoryEventListener] [23] [INFO] Object Inserted : [fact 0:1:1309129055:1309129055:1:DEFAULT:Server( name=server001, processors=4, memory=8192, diskSpace=2048, virtualizations=null, cpuUsage=3 )] Knowledge Runtime: org.drools.core.impl.StatefulKnowledgeSessionImpl@563e4951 

[2016-07-21 18:03:40] [CustomWorkingMemoryEventListener] [23] [INFO] Object Inserted : [fact 0:2:1826334428:1826334428:2:DEFAULT:BusinessTrip [name=사용자1, hour=3.5, getName()=사용자1, getHour()=3.5, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=1826334428, toString()=com.gooper.drool_test.BusinessTrip@6cdba6dc]] Knowledge Runtime: org.drools.core.impl.StatefulKnowledgeSessionImpl@563e4951 

[2016-07-21 18:03:40] [CustomWorkingMemoryEventListener] [23] [INFO] Object Inserted : [fact 0:3:1558103808:1558103808:3:DEFAULT:BusinessTrip [name=사용자2, hour=5.0, getName()=사용자2, getHour()=5.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=1558103808, toString()=com.gooper.drool_test.BusinessTrip@5cdec700]] Knowledge Runtime: org.drools.core.impl.StatefulKnowledgeSessionImpl@563e4951 

[2016-07-21 18:03:40] [CustomWorkingMemoryEventListener] [23] [INFO] Object Inserted : [fact 0:4:2024415090:2024415090:4:DEFAULT:BusinessTrip [name=사용자3, hour=8.0, getName()=사용자3, getHour()=8.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=2024415090, toString()=com.gooper.drool_test.BusinessTrip@78aa1f72]] Knowledge Runtime: org.drools.core.impl.StatefulKnowledgeSessionImpl@563e4951 

[2016-07-21 18:03:40] [CustomWorkingMemoryEventListener] [23] [INFO] Object Inserted : [fact 0:5:527804008:527804008:5:DEFAULT:BusinessTrip [name=사용자4, hour=10.0, getName()=사용자4, getHour()=10.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=527804008, toString()=com.gooper.drool_test.BusinessTrip@1f75a668]] Knowledge Runtime: org.drools.core.impl.StatefulKnowledgeSessionImpl@563e4951 

[2016-07-21 18:03:40] [CustomWorkingMemoryEventListener] [23] [INFO] Object Inserted : [fact 0:6:1266534280:1266534280:6:DEFAULT:BusinessTrip [name=사용자5, hour=13.0, getName()=사용자5, getHour()=13.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=1266534280, toString()=com.gooper.drool_test.BusinessTrip@4b7dc788]] Knowledge Runtime: org.drools.core.impl.StatefulKnowledgeSessionImpl@563e4951 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [137] [INFO] Match Created : [fact 0:5:527804008:527804008:5:DEFAULT:BusinessTrip [name=사용자4, hour=10.0, getName()=사용자4, getHour()=10.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=527804008, toString()=com.gooper.drool_test.BusinessTrip@1f75a668]] 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [137] [INFO] Match Created : [fact 0:4:2024415090:2024415090:4:DEFAULT:BusinessTrip [name=사용자3, hour=8.0, getName()=사용자3, getHour()=8.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=2024415090, toString()=com.gooper.drool_test.BusinessTrip@78aa1f72]] 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [117] [INFO] Before Match Fired : [fact 0:5:527804008:527804008:5:DEFAULT:BusinessTrip [name=사용자4, hour=10.0, getName()=사용자4, getHour()=10.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=527804008, toString()=com.gooper.drool_test.BusinessTrip@1f75a668]] 

[2016-07-21 18:03:40] [출장일비(B타입)] [20] [INFO] 사용자4 님의 출장 시간은 10.0 시간 이므로, 출장일비는 12만원 입니다. ( 규정 : 출장일비(B타입) )  

[2016-07-21 18:03:40] [CustomAgendaEventListener] [80] [DEBUG] Rule fired: 출장일비(B타입) 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [117] [INFO] Before Match Fired : [fact 0:4:2024415090:2024415090:4:DEFAULT:BusinessTrip [name=사용자3, hour=8.0, getName()=사용자3, getHour()=8.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=2024415090, toString()=com.gooper.drool_test.BusinessTrip@78aa1f72]] 

[2016-07-21 18:03:40] [출장일비(B타입)] [20] [INFO] 사용자3 님의 출장 시간은 8.0 시간 이므로, 출장일비는 12만원 입니다. ( 규정 : 출장일비(B타입) )  

[2016-07-21 18:03:40] [CustomAgendaEventListener] [80] [DEBUG] Rule fired: 출장일비(B타입) 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [137] [INFO] Match Created : [fact 0:3:1558103808:1558103808:3:DEFAULT:BusinessTrip [name=사용자2, hour=5.0, getName()=사용자2, getHour()=5.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=1558103808, toString()=com.gooper.drool_test.BusinessTrip@5cdec700]] 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [117] [INFO] Before Match Fired : [fact 0:3:1558103808:1558103808:3:DEFAULT:BusinessTrip [name=사용자2, hour=5.0, getName()=사용자2, getHour()=5.0, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=1558103808, toString()=com.gooper.drool_test.BusinessTrip@5cdec700]] 

[2016-07-21 18:03:40] [출장일비(C타입)] [20] [INFO] 사용자2 님의 출장 시간은 5.0 시간 이므로, 출장일비는 8만원 입니다. ( 규정 : 출장일비(C타입) )  

[2016-07-21 18:03:40] [CustomAgendaEventListener] [80] [DEBUG] Rule fired: 출장일비(C타입) 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [137] [INFO] Match Created : [fact 0:2:1826334428:1826334428:2:DEFAULT:BusinessTrip [name=사용자1, hour=3.5, getName()=사용자1, getHour()=3.5, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=1826334428, toString()=com.gooper.drool_test.BusinessTrip@6cdba6dc]] 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [117] [INFO] Before Match Fired : [fact 0:2:1826334428:1826334428:2:DEFAULT:BusinessTrip [name=사용자1, hour=3.5, getName()=사용자1, getHour()=3.5, getClass()=class com.gooper.drool_test.BusinessTrip, hashCode()=1826334428, toString()=com.gooper.drool_test.BusinessTrip@6cdba6dc]] 

[2016-07-21 18:03:40] [출장일비(없음)] [20] [INFO] 사용자1 님의 출장 시간은 3.5 시간 이므로 출장일비가 없습니다. ( 규정 : 출장일비(없음) ) 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [80] [DEBUG] Rule fired: 출장일비(없음) 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [137] [INFO] Match Created : [fact 0:1:1309129055:1309129055:1:DEFAULT:Server( name=server001, processors=4, memory=8192, diskSpace=2048, virtualizations=null, cpuUsage=3 )] 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [117] [INFO] Before Match Fired : [fact 0:1:1309129055:1309129055:1:DEFAULT:Server( name=server001, processors=4, memory=8192, diskSpace=2048, virtualizations=null, cpuUsage=3 )] 

[2016-07-21 18:03:40] [check minimum server configuration] [20] [INFO] Server "server001" was rejected... 

[2016-07-21 18:03:40] [CustomWorkingMemoryEventListener] [18] [INFO] Object Deleted : [fact 0:1:1309129055:1309129055:1:DEFAULT:Server( name=server001, processors=4, memory=8192, diskSpace=2048, virtualizations=null, cpuUsage=3 )] Knowledge Runtime: org.drools.core.impl.StatefulKnowledgeSessionImpl@563e4951 

[2016-07-21 18:03:40] [CustomAgendaEventListener] [80] [DEBUG] Rule fired: check minimum server configuration 

 session.getFactCount() = 5

 matched count of Fact = 5



------DroolsTest.java--------

package com.gooper.drool_test;


import org.kie.api.KieBase;

import org.kie.api.definition.type.FactType;

import org.kie.api.io.ResourceType;

import org.kie.api.runtime.KieSession;

import org.kie.internal.builder.KnowledgeBuilder;

import org.kie.internal.builder.KnowledgeBuilderFactory;

import org.kie.internal.io.ResourceFactory;

import org.kie.internal.builder.KnowledgeBuilderError;


import com.gooper.drool_test.CustomWorkingMemoryEventListener;

import com.gooper.drool_test.CustomAgendaEventListener;


public class DroolsTest {


        public static final void main(String[] args) {

               try {


              // 지식 빌더 생성

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                  . newKnowledgeBuilder();

                    

                    // 지식 빌더에 룰정의파일 설정

                    kbuilder.add(ResourceFactory. newClassPathResource("test_rule.drl"),

                                  ResourceType. DRL );


if (kbuilder.hasErrors()) {

if(kbuilder.getErrors().size() > 0) {

for(KnowledgeBuilderError kerror : kbuilder.getErrors()) {

System.out.println("error :" + kerror);

}

}

}

// 새로운 지식 베이스 생성

                    KieBase kiebase = kbuilder.newKnowledgeBase();

                    

                    // 새로운 지식 베이스 세션 생성

                    KieSession session = kiebase.newKieSession();

                    

                    // logger등록(팩트에 의해 생성된 엑티베이션(Activation)관련 이벤트만 로깅

                    session.addEventListener(new CustomAgendaEventListener());

                    

                    // logger등록(팩트의 추가/수정/제거 이벤트에 대한 정보)

                    session.addEventListener(new CustomWorkingMemoryEventListener());

                    

                    // 지식 베이스의 getFactType 메서드를 이용하여 동적으로 팩트를 인스턴스화 시킨다.

                    // (팩트가 선언되어 있는 룰의 패키지 이름과 팩트의 이름을 인자로 받는다.) 

                    FactType serverType = kiebase.getFactType("com.gooper.drool_test", "Server");

                    

                    Object debianServer = null; 

                    

                    //KnowledgeRuntimeLoggerFactory.newConsoleLogger((KnowledgeRuntimeEventManager) session);

                    

                    try { 

                    // 동적으로 팩트를 인스턴스화 시킨다.

                    debianServer = serverType.newInstance();

                    } catch (InstantiationException e) {

                    System.out.println("the class Server on ... hasss");

                    } catch(IllegalAccessException e) {

                    System.out.println("sdsdfsdf");

                    }

                    

                    // 세션에 추가할 팩트를 준비한다.

                    serverType.set(debianServer, "name", "server001");

                    serverType.set(debianServer, "processors", 4);

                    serverType.set(debianServer, "memory", 8192);

                    serverType.set(debianServer, "diskSpace", 2048);

                    serverType.set(debianServer, "cpuUsage", 3);

                    

                    // 동적으로 팩트를 세션에 추가한다

                    session.insert(debianServer);


                    // BusinessTrip클래스를 이용한 팩트 추가

                    session.insert( new BusinessTrip("사용자1" ,3.5));

                    session.insert( new BusinessTrip("사용자2" ,5.0));

                    session.insert( new BusinessTrip("사용자3" ,8.0));

                    session.insert( new BusinessTrip("사용자4" ,10.0));

                    session.insert( new BusinessTrip("사용자5" ,13.0));

                     

                    int matchedCnt = session.fireAllRules();

                    // 전체 Fact의 개수

                    System.out.println(" session.getFactCount() = " + session.getFactCount());

                    // 룰에 matching된 건수

                    System.out.println(" matched count of Fact = " + matchedCnt);

                    

                    session.dispose();


              } catch (Throwable t) {

                     t.printStackTrace();

              }

       }

}

번호 제목 글쓴이 날짜 조회 수
261 CDP에서 AD와 Kerberos를 활용하여 인증 환경을 구축하는 3가지 방법 gooper 2022.06.10 424
260 Error: Could not find or load main class nodemnager 가 발생할때 해결하는 방법 총관리자 2015.06.05 426
259 Hadoop - 클러스터 세팅및 기동 총관리자 2015.04.28 427
258 ontology, jena, sparql등 전반에 대한 설명및 예제를 제공하는 사이트 총관리자 2015.12.08 427
257 elasticsearch 기동시 permission denied on key 'vm.max_map_count' 오류발생시 조치사항 총관리자 2017.06.23 431
256 db를 통째로 새로운 이름의 db로 복사하는 방법/절차 총관리자 2017.11.14 433
255 Could not configure server becase SASL configuration did not allow the Zookeeper server to authenticate itself properly: javax.security.auth.login.LoginException: Checksum failed 총관리자 2019.05.18 434
254 Java 8에서 pom.xml에 JavaDoc 관련 태그가 설정되어 있으나 오류등으로 실패하면 나머지 Maven작업이 종료되는 문제 해결 방법 총관리자 2017.01.24 437
253 Drools 6.0 - 비즈니스 룰 기반으로 간단한 룰 애플리케이션 만들기 file 총관리자 2016.07.18 440
252 [번역] solr 검색 엔진 튜토리얼 총관리자 2014.10.07 441
251 [백업] 리눅스 시스템 백업하기 (Linux System Backup) - TAR 사용 시스템 전체 백업 총관리자 2022.01.19 443
250 Elastic Search For Hadoop 2.2.0설치하기(5대 클러스터링) 총관리자 2016.04.04 448
249 java.lang.IllegalArgumentException: Does not contain a valid host:port authority: master 오류해결방법 총관리자 2015.05.06 451
248 CDH 5.14.2 설치중 agent설치에서 실패하는 경우 확인/조치 총관리자 2018.05.22 451
247 Spark 1.6.1 설치후 HA구성 총관리자 2016.05.24 455
246 servlet-api를 jar형태로 build할때 포함하지 말고 java 설치 위치의 jre/lib/ext에 복사하여 사용하는것이 좋다. 총관리자 2016.08.10 455
245 spark-sql실행시 The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH오류 발생시 조치사항 총관리자 2016.06.09 456
244 java.lang.OutOfMemoryError: unable to create new native thread오류 발생지 조치사항 총관리자 2016.10.17 469
243 Ubuntu 16.04 LTS에 Hive 2.1.1설치하면서 "Version information not found in metastore"발생하는 오류원인및 조치사항 총관리자 2017.05.03 471
242 java.util.NoSuchElementException발생시 조치 총관리자 2014.08.27 476

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로