2014-07-01 5 views
0

별도의 엔티티에 대해 별도의 drl 파일을 유지해야하는 유스 케이스가 있습니다.
entity 1drl1
entity 2에 의해 facts 세트 구동해야했다
예를 들어 , 나는이를 구현하는 방법을 drl2슬럼프에서 별도의 규칙 파일을 유지하십시오.

에 의해 facts 세트 구동해야시킨?

  1. 로드 DRL의 별도의 기술 자료에서 해당 사실과
  2. 로드 모든 DRL 년대와 하나의 세션에서 사실 세션.

난 당신이 KieFileSystem 또 다른 FileInputStream에 추가 반복 할 수 있습니다, 당신이 아래의 라인을 따라 귀하의 기술 자료를 구축 할 경우 2

+0

엔티티는 무엇을 의미합니까? 일부 서비스 API? 무국적 세션이나 상태 세션을 사용할 계획입니까? – kaskelotti

+0

drl1과 drl2의 모든 규칙을 한꺼번에 평가할 수 있습니까? 그런 다음 단일 지식 기반과 단일 세션입니다. 그렇지 않으면 당신의 # 1에 따라갑니다. - "엔티티"는 당신이 사용한 가장 성운 용어입니다 ... – laune

+0

엔티티 대신에'도메인'이라는 단어를 사용해야합니다. – cppcoder

답변

0

을 달성하는 방법을 모르겠어요.

KieServices kieServices = KieServices.Factory.get(); 
KieFileSystem kfs = kieServices.newKieFileSystem(); 
// repeat 
FileInputStream fis = new FileInputStream("simple/simple.drl"); 
kfs.write("src/main/resources/simple.drl", 
       kieServices.getResources().newInputStreamResource(fis)); 
// end 
KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll(); 

Results results = kieBuilder.getResults(); 
if(results.hasMessages(Message.Level.ERROR)){ 
    System.out.println(results.getMessages()); 
    throw new IllegalStateException("### errors ###"); 
} 
KieContainer kieContainer = 
     kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId()); 
KieBase kieBase = kieContainer.getKieBase(); 
kieSession = kieContainer.newKieSession(); 
관련 문제