2017-12-01 12 views
0

Drool 규칙 파일 내에서 선언 된 사실과 연결된 메타 데이터에 어떻게 액세스합니까? 나는 Drools가 매우 새로운했습니다 나는이에 대한 간단한 답변을 찾을 수Drools - 규칙 내에서 사실 메타 데이터에 액세스

declare MyFact 
    @myMetaData("foo") 
end 

rule "MyRule" 
when 
    exists(OtherFact()) 
then 
    MyFact f = new MyFact(); 
    global.post(f.metaData["myMetaData"]); 
end 

정말 놀라지,하지만 난 단순한 뭔가를 누락 될 수 있습니다 :

는 대략 나는 다음과 같은 작업을 수행하려는 말하기 .

저는 KieBase에서 FactType을 프로그래밍 방식으로 검색 한 다음 FactType :: getMetaData()를 통해 속성을 가져올 수있는 Java 클래스에서 MyFact를 확장하여이 문제를 해결했지만 더 간단한 방법은 없다는 사실에 놀랐습니다.

답변

0

아래 표시된 체인 통화의 상당 부분을 함수에서 숨길 수 있습니다. KieContext kcontext를 전달해야합니다. 또는 KieBase를 정적으로 설정할 수있는 정적 메서드를 사용합니다.

package simple; 
declare SomeFact 
    @Meta1("meta 1") 
end 

rule showMeta 
when 
then 
    System.out.println(kcontext 
         .getKieRuntime() 
         .getKieBase() 
         .getFactType("simple", "SomeFact") 
         .getMetaData() 
         .get("Meta1")); 
end