Hier ist der Einheitstest, den ich renne:
Code: Select all
@Test
public void getKieContainer() {
PoolInfo poolInfo = PoolInfoTest.getPool();
poolInfo.setCourtLocation("001");
PostponementRequest postponementRequest = new PostponementRequest();
GregorianCalendar requestDate = new GregorianCalendar(2025, GregorianCalendar.MAY, 5);
postponementRequest.setRequestDate(requestDate);
assertEquals("001", poolInfo.getCourtLocation());
assertEquals(2, postponementRequest.getRequestedDayOfWeek());
KieContainer kieContainer = droolsUtil.getKieContainer(POSTPONE_RULES);
StatelessKieSession kieSession = kieContainer.newStatelessKieSession();
List parms = Arrays.asList(poolInfo, postponementRequest);
kieSession.execute(parms);
assertTrue(postponementRequest.isAllowed());
}
public KieContainer getKieContainer(final String decisionTableFilename){
KieServices kieServices = KieServices.Factory.get();
Resource resource = ResourceFactory.newClassPathResource(decisionTableFilename, getClass());
KieFileSystem kieFileSystem = kieServices.newKieFileSystem().write(resource);
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
kieBuilder.buildAll();
KieRepository kieRepository = kieServices.getRepository();
ReleaseId krDefaultReleaseId = kieRepository.getDefaultReleaseId();
KieContainer kieContainer = kieServices.newKieContainer(krDefaultReleaseId);
return kieContainer;
}
< /code>
Dies alles sieht für mich richtig aus, aber es gibt eindeutig ein Problem. StatelessKieSession kieSession = kieContainer.newStatelessKieSession();
kieSession.addEventListener( new DebugAgendaEventListener() );
kieSession.addEventListener( new DebugProcessEventListener() );
kieSession.addEventListener( new DebugRuleRuntimeEventListener() );
List parms = Arrays.asList(poolInfo, postponementRequest);
< /code>
und dann Reran. Dies erzeugte die folgende Ausgabe: < /p>
[main] INFO org.drools.core.event.DebugRuleRuntimeEventListener - ==>[ObjectInsertedEventImpl: getFactHandle()=[fact 0:1:488898339:1539934131:1:DEFAULT:NON_TRAIT:com.gs.jxx.bo.PoolInfo:Participant#:666666666|Pool#:444444444|Seq#:2165
Court Loc:001|Status:1|FTA:0|Deferral Count:0|SummonsDate:2025-06-07;07:21:01.660|Days B4 Summons:30|Division:1|Active:Y|PostponeDate:|PostponeDateRequest:], getObject()=Participant#:666666666|Pool#:444444444|Seq#:2165
Court Loc:001|Status:1|FTA:0|Deferral Count:0|SummonsDate:2025-06-07;07:21:01.660|Days B4 Summons:30|Division:1|Active:Y|PostponeDate:|PostponeDateRequest:, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::DEFAULT, factHandle=[fact 0:1:488898339:1539934131:1:DEFAULT:NON_TRAIT:com.gs.jxx.bo.PoolInfo:Participant#:666666666|Pool#:444444444|Seq#:2165
Court Loc:001|Status:1|FTA:0|Deferral Count:0|SummonsDate:2025-06-07;07:21:01.660|Days B4 Summons:30|Division:1|Active:Y|PostponeDate:|PostponeDateRequest:], propagationNumber=2, rule=null, type=INSERTION]]
[main] INFO org.drools.core.event.DebugRuleRuntimeEventListener - ==>[ObjectInsertedEventImpl: getFactHandle()=[fact 0:2:550424075:550424075:2:DEFAULT:NON_TRAIT:com.gs.jxx.request.PostponementRequest:
Pool:666666666:Ford Prefect|PendingIndicator:null|reason:null
RequestDate:5/5/2025|RequestTime:721|RequestDaysAfterSummons:-1|RequestedDayOfWeek:2|RequestedDayOfMonth:5], getObject()=
Pool:666666666:Ford Prefect|PendingIndicator:null|reason:null
RequestDate:5/5/2025|RequestTime:721|RequestDaysAfterSummons:-1|RequestedDayOfWeek:2|RequestedDayOfMonth:5, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::DEFAULT, factHandle=[fact 0:2:550424075:550424075:2:DEFAULT:NON_TRAIT:com.gs.jxx.request.PostponementRequest:
Pool:666666666:Ford Prefect|PendingIndicator:null|reason:null
RequestDate:5/5/2025|RequestTime:721|RequestDaysAfterSummons:-1|RequestedDayOfWeek:2|RequestedDayOfMonth:5], propagationNumber=3, rule=null, type=INSERTION]]
< /code>
Ich bin mir nicht sicher, wie dies hilft. InputStream is = getClass().getClassLoader().getResourceAsStream(POSTPONE_RULES);
SpreadsheetCompiler compiler = new SpreadsheetCompiler();
String str = compiler.compile(is, InputType.XLS);
System.err.println(str);
< /code>
Und als ich es ausgeführt habe, wurde er produziert: < /p>
package postponementRules;
//generated from Decision Table
import com.gs.juror.bo.PoolInfo;
import com.gs.juror.request.PostponementRequest;
// rule values at B10, header at B5
rule "postponePart_10"
when
PoolInfo(courtLocation == "001")
postponementRequest: PostponementRequest(requestedDayOfWeek >= 2, requestedDayOfWeek
Was, denke ich, sieht aus wie das, was ich erwartet habe. Das Problem muss also im Code ausführen.