봉 블로그

Drools 6.3 - (1) Eclipse 개발환경 구성하기 본문

개발환경/Drools

Drools 6.3 - (1) Eclipse 개발환경 구성하기

idkbj 2015. 4. 11. 20:33


우선 아래 이미지는 6.* 버전의 새로운 Drools project layout 이다. 눈에 띄는 특징은 src/main/resources/META-INF/kmodule.xml 파일을 통해 룰 파일들을 관리하고 각종 runtime properties 를 설정한다는것이다.





Install Eclipse Plugin (Drools and jBPM plugin)
아래 update site 를 이용해 을 설치한다. (Eclipse Kepler JEE SR2 기준)
update site : http://download.jboss.org/drools/release/6.3.0.Final/org.drools.updatesite/


Create Eclipse Project
플러그인에서 제공하는 Drools Project 를 생성해도 되지만, 아래와 같 dependencies로 Maven Project 를 생성해도 된다.

			org.drools
			drools-compiler
			6.3.0.Final
		
		
			org.jbpm
			jbpm-bpmn2
			6.3.0.Final
		
		
			org.drools
			drools-decisiontables
			6.3.0.Final
		

sample code 는 아래와 같다.

src/main/resources/META-INF/kmodule.xml



    
        
    



src/main/resources/rules/Sample.drl

package com.sample
 
import com.bong.DroolsTest.Message;
 
rule "Hello World"
    when
        m : Message( status == Message.HELLO, myMessage : message )
    then
        System.out.println( myMessage );
        m.setMessage( "Goodbye cruel world" );
        m.setStatus( Message.GOODBYE );
        update( m );
end

rule "GoodBye"
    when
        Message( status == Message.GOODBYE, myMessage : message )
    then
        System.out.println( myMessage );
end

src/main/java/com/sample/DroolsTest.java

import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

/**
 * This is a sample class to launch a rule.
 */
public class DroolsTest {

    public static final void main(String[] args) {
        try {
            // load up the knowledge base
	        KieServices ks = KieServices.Factory.get();
    	    KieContainer kContainer = ks.getKieClasspathContainer();
        	KieSession kSession = kContainer.newKieSession("ksession-rules");

            // go !
            Message message = new Message();
            message.setMessage("Hello World");
            message.setStatus(Message.HELLO);
            kSession.insert(message);
            kSession.fireAllRules();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    public static class Message {

        public static final int HELLO = 0;
        public static final int GOODBYE = 1;

        private String message;

        private int status;

        public String getMessage() {
            return this.message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public int getStatus() {
            return this.status;
        }

        public void setStatus(int status) {
            this.status = status;
        }

    }

}

DroolsTest.java 를 실행하면 Drools engine 이 kmodule.xml 파일을 통해 Sample.drl 파일을 자동 컴파일하여 실행한다.