J'ai une configuration de projet dans KIE Workbench, version 6.5.0 et un serveur d'exécution KIE 6.5.0 en cours d'exécution, tous sur la même Wildfly locale 10 Cela fonctionne bien. J'ai une règle simple qui est exécutée dans une KieSession sans état, aucun processus ou quoi que ce soit. Je m'attends à ce que la règle valide les informations de base et à ajouter des informations sur les validations déclenchées à une variable globale. Dans l'exemple que je suis en train de tester, je viens de modifier une variable globale pour voir si cela fonctionne, mais pour une raison quelconque, je n'obtiens jamais un résultat du service, ce que je pense avoir au moins quelque chose.ServiceResponse Le résultat est toujours nul (JAXB, KIE Workbench & KIE Server 6.5.0)
C'est la demande JAXB j'envoyer:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<batch-execution lookup="kieSessionStateless">
<insert disconnected="false" entry-point="DEFAULT" return-object="false" out-identifier="myorganization.myproject.bom.MyObject">
<object xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="myObject">
<myDescription>description</myDescription>
<myID>0</myID>
</object>
</insert>
<set-global out-identifier="globalList" identifier="globalList">
<object xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaxbListWrapper">
<type>LIST</type>
</object>
</set-global>
<get-objects out-identifier="globalList"/>
<fire-all-rules max="-1"/>
</batch-execution>
La règle qui est exécutée est assez simple:
rule "MY FIRST RULE"
when
myorganization.myproject.bom.MyObject(myID == 0)
then
myorganization.myproject.bom.GlobalResponses globalResponses = new myorganization.myproject.bom.GlobalResponses();
globalResponses.setRuleName("MY FIRST RULE");
globalResponses.setRuleResponse("MY ID IS 0");
globalList.add(globalResponses);
System.out.println("MY ID IS 0");
end
Et dans la console wildfly je vois la ligne imprimée sans aucune information supplémentaire (comme une pile d'une erreur), donc je conclus que tout fonctionne bien:
13:04:36,315 INFO [stdout] (default task-39) MY ID IS 0
Mais j'ai toujours la même réponse: elle indique que le "processus" s'est terminé correctement (donc il semble à première vue) et donc je m'attends à ce que Result ait quelque chose (une réponse xml vide, une réponse xml avec des données, ...):
System.out.println("Message: "+response.getMsg());
System.out.println("Result: "+response.getResult());
System.out.println("Type: "+response.getType());
Message: Container KieContainer successfully called.
Result: null
Type: SUCCESS
Response: ServiceResponse[SUCCESS, msg='Container KieContainer successfully called.']
Le client est appelé avec KieServicesClient:
KieServicesConfiguration config = KieServicesFactory.
newRestConfiguration(urlKieServer,
name,
password);
config.setMarshallingFormat(MarshallingFormat.JAXB);
KieServicesClient client = KieServicesFactory.newKieServicesClient(config);
JAXBContext jaxbContext = DroolsJaxbHelperProviderImpl.createDroolsJaxbContext(classNames, null);
Marshaller marshaller = jaxbContext.createMarshaller();
StringWriter xml = new StringWriter();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(command, System.out);
marshaller.marshal(command, xml);
ServiceResponse<String> response = client.executeCommands("instances/"+containerName, xml.toString());
je manque quelque chose, mais je ne sais vraiment pas quoi.
Tous les projets connexes sont sur GitHub. Comme je ne peux pas poster plus de deux liens, j'ajouterai les liens directs dans un commentaire.
Cette question est aussi: Drools User group
Projet Workbench sur GitHub: https://github.com/eggsandbutter/kieworkbench // Projet de services sur GitHub: https://github.com/eggsandbutter/kieservices // Test de projet sur GitHub: https: // github. com/eggsandbutter/kietesting // Pour tester cette erreur, exécuter le test TestStateless.testJaxB – Ruurd
Le problème que je rencontre est l'utilisation du workbench et du serveur d'exécution kie. Si j'utilise une architecture Java simple et personnalisée, je suis capable de résoudre ce problème sans aucun problème. – Ruurd