2017-06-23 1 views
0

Ich benutze kie-Server 7.0 und kie-Java-Client 7.0. Ich habe eine einfache Regel in Werkbank geschrieben: -Drools kie java client-Objekt geändert in der Regel nicht bekommen in Ergebnis

rule "Hello World" 
when 
    a:CartDetails(minPurchaseAmt==10000) 
then 
    a.setMinPurchaseAmt(20.0f); 
    System.out.println("Test rule executed success"); 
end 

Das ist mein Client-Code: -

Command<?> insert = commandsFactory.newInsert(fact,  "CartDetails",true,"DEFAULT"); 
Command<?> fireAllRules = commandsFactory.newFireAllRules(); 
Command<?> factObjects = commandsFactory.newGetObjects(); 
Command<?> batchCommand = commandsFactory.newBatchExecution(Arrays.asList(insert,fireAllRules,factObjects)); 
ServiceResponse<ExecutionResults> executeResponse = rulesClient.executeCommandsWithResults("couponengine_1.0", batchCommand); 

Im "SUCCESS" als Antwort bekommen, aber nicht das aktualisierte Objekt. (Ich rufe setMinPurchaseAmt() in 'then' Teil der Regel)

Bitte sagen Sie, wenn Sie mehr Eingaben benötigen.

Antwort

0

Sie müssen die Aktualisierungsfunktion verwenden, um die Drools-Engine anzuweisen, den tatsächlichen Wert zu aktualisieren. Fügen Sie in diesem Teil der Regel update (a) hinzu. Versuchen Sie mit diesem Ansatz und teilen Sie die Ergebnisse

+0

Die Lösung dafür gefunden. Das Problem ist nicht in der Regel Teil. Es ist im Modell. Das Modell (Datumsobjekt), das ich auf dem Regelserver definiert habe, und das, das ich vom Client sende, stimmen nicht überein. Deshalb wird Regel nicht gefeuert. –

Verwandte Themen