2011-08-31 6 views
0

이 예제와 같이 내 drl에 새 유형을 선언해야합니다.새로운 유형의 Jboss Drools 선언

package com.sample 


import com.sample.DroolsTest.Message; 

declare Variavel 
    valor : Integer 
end 



rule "Hello World" 
    when 

     m : Message(status == Message.HELLO, myMessage : message) 

-----> V : Variavel() 문제가 여기에, 변수는

인스턴스화되지
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 

내 문제 : 나는이 코드

FactType personType = kbase.getFactType("com.sample","Variavel"); 
Object test = personType.newInstance(); 
       ksession.insert(test); 
넣어없이 변수를 사용합니다

정적 필드와 같은 규칙을 실행할 때이 코드를 삽입하지 않고 선언 된 필드를 사용할 수 있습니까?

답변

2

Drools의 유형 선언은 Java에서 클래스를 선언하는 것과 같습니다. 거기에는 유형이 있지만 인스턴스는 없습니다. 할 수있는 일은 우선 순위가 높은 규칙을 인스턴스화하고 응용 프로그램을 수행하는 대신 사실로 삽입하는 것입니다. 예 :


declare Variavel 
    valor : Integer 
end 

rule "create variable" 
    salience 100 
when 
then 
    insert(new Variavel()); 
end 

rule "Hello World" 
when 
    m : Message(status == Message.HELLO, myMessage : message) 
    v : Variavel() 
then 
    // do something 
end 

관련 문제