Implémenter un connecteur Drools pour Bonita 6

1
+2
-1

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

2 answers

1
0
-1

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();
       
         }

Comments

Submitted by nicolas.mercier on Thu, 07/24/2014 - 15:48

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)

Submitted by enrico.curiotto on Thu, 07/24/2014 - 16:03

Je pense que tu peux mettre le fichier où tu veux. Je suis presque sure de ça :-)

1
0
-1

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é ;-)

Comments

Submitted by nicolas.mercier on Wed, 07/23/2014 - 11:55

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 ?

Submitted by nicolas.mercier on Wed, 07/23/2014 - 11:56

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-drool...

Submitted by ttoine on Wed, 07/23/2014 - 11:57

pas sûr, c'est encore en phase de dev. C'est plus à utiliser comme ressource pour ce que tu développes

Notifications