Bonjour à tous,
je cherche de la doc pour développer un connecteur Drools pour Bonita 6 (exigence du client).
J’ai essayé de reprendre les exemples suivants :
http://documentation.bonitasoft.com/5x/bos-56/connectivity/connectors-bonita-open-solution/drools
http://community.bonitasoft.com/groups/usage-operation-6x/drools-connector-newer-releases-bos-6x
http://svn.bonitasoft.org/bonita-connectors/branches/bonita-connectors-5.2.4/drools/src/test/java/org/bonitasoft/connectors/drools/examples/agerules/
Mais sans succès.
Après la commande :
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
J’ai l’erreur :
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Unable to instantiate service for Class ‘org.drools.builder.KnowledgeBuilderFactoryService’
J’ai bien inclu les jar suivants :
kie-api-6.0.1.Final
drools-decisiontables-6.0.1.Final
drools-api-5.1.1
drools-compiler-6.0.1.Final
drools-core-6.0.1.Final
jbpm-bpmn2-5.5.0
Que manque-t-il à mon connecteur pour fonctionner normalement ?
Merci
1 Like
Salut,
Je sais que nous sommes en train de travailler sur un connecteur Drools. Ce que nous avons du code source est disponible ici:
https://github.com/bonitasoft/bonita-connector-drools
Peut-être devrais tu jeter un coup d’oeil. Si tu as envie par la suite de faire un Pull Request, je sais qu’il sera très apprécié 
Salut,
Je vois que tu utilise des classes 5.1 (drools api) et 6.0 ensemble, ça pourrait etre le problème .
J’ai crée un connecteur custom avec les libraries 5.3 et a bien marché.
Le code est le suivant:
public class StatelessKnowledgeSessionImpl extends AbstractStatelessKnowledgeSessionImpl {
Logger LOGGER=Logger.getLogger(this.getClass().getName());
@Override
protected void executeBusinessLogic() throws ConnectorException{
List listOfFacts = this.getListOfFacts();
String drlFilePath = this.getDrlFilePath();
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
// this will parse and compile in one step
kbuilder.add(ResourceFactory.newFileResource(drlFilePath), ResourceType.DRL);
// Check the builder for errors
if (kbuilder.hasErrors()) {
LOGGER.severe(kbuilder.getErrors().toString());
throw new RuntimeException("Unable to compile \"" + drlFilePath + "\".");
}
// get the compiled packages (which are serializable)
final Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
// add the packages to a knowledgebase (deploy the knowledge packages).
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);
KnowledgeRuntimeLogger logger = null;
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
ksession.addEventListener(new DebugAgendaEventListener());
ksession.addEventListener(new DebugWorkingMemoryEventListener());
// setup the audit logging
logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "drools");
//ksession.execute( listOfFacts );
ksession.execute( CommandFactory.newInsertElements( listOfFacts ) );
setRevisedListOfFacts(listOfFacts);
logger.close();
}
Ok merci je vais essayer de regarder ça.
L’import sur Bonita est censé être possible ?
Menu Développement > Connecteurs > Import puis on sélectionne le zip du connecteur ?
Ok merci je vais essayer de regarder ça. L’import sur Bonita est censé être possible ? Menu Développement > Connecteurs > Import puis on sélectionne le zip du connecteur ? - See more at: http://community.bonitasoft.com//answers/implementer-un-connecteur-drools-pour-bonita-6#sthash.p87p0yfH.dpuf
pas sûr, c’est encore en phase de dev. C’est plus à utiliser comme ressource pour ce que tu développes
Merci ttoine & enrico,
j’ai une question concernant les fichiers maintenant (.drl ou .xsl peu importe); y a -t-il un dossier spécifique où les mettre pour pouvoir utiliser ?
(Je n’ai pas de src/java/resources dans mon connecteur)
Je pense que tu peux mettre le fichier où tu veux. Je suis presque sure de ça 