2017-06-23 5 views
0

J'utilise kie-server 7.0 et kie-java-client 7.0. J'ai écrit une règle simple banc de travail: -Objet client Drools kie java modifié dans la règle ne pas obtenir dans le résultat

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

Ceci est mon code client: -

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 obtenir "succès" dans la réponse, mais pas l'objet mis à jour. (Comme j'appelle setMinPurchaseAmt() dans la partie 'alors' de la règle)

Veuillez dire si vous avez besoin de plus d'entrées.

Répondre

0

Vous devez utiliser la fonction de mise à jour pour demander au moteur de bave de mettre à jour la valeur de fait. Ajoutez la mise à jour (a) dans une partie de la règle. Essayez cette approche et partagez les résultats.

+0

J'ai trouvé le correctif correspondant. Le problème n'est pas dans la partie règle. C'est dans le modèle. Le modèle (objet date) que j'ai défini sur le serveur de règles et celui que j'envoie du client ne correspondent pas. C'est pourquoi la règle ne se fait pas virer. –