Ich aktualisiere Sabber aus einer alten Version, was bedeutet, dass ich im Grunde von vorne anfange. Ich habe eine vorhandene Tabelle, die so aussieht:
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());
}
Die letzte AssertRue fehlschlägt in meinem Test. Hier ist der Code von sroolsutil.getKiecontainer () :
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.
Ich aktualisiere Sabber aus einer alten Version, was bedeutet, dass ich im Grunde von vorne anfange. Ich habe eine vorhandene Tabelle, die so aussieht:
Hier ist der Einheitstest, den ich renne:
[code]@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());
}
[/code]
Die letzte AssertRue fehlschlägt in meinem Test. Hier ist der Code von sroolsutil.getKiecontainer () :
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 [url=viewtopic.php?t=20324]Problem[/url] muss also im Code ausführen.