J’ai récupéré les sources depuis github. Mon serveur tomcat tourne sur mon pc (j’ai bien accès au portal web).
Lorsque que j’essaie de lancer le main de la classe App.java, j’ai le droit à une erreur :
Deploying process ‘My first process’…
Exception in thread “main” java.lang.RuntimeException: java.lang.RuntimeException: Failed : HTTP error code : 500 : Erreur Interne de Servlet
at org.bonitasoft.example.App.deployProcess(App.java:365)
at org.bonitasoft.example.App.start(App.java:142)
at org.bonitasoft.example.App.main(App.java:114)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.lang.RuntimeException: Failed : HTTP error code : 500 : Erreur Interne de Servlet
at org.bonitasoft.example.App.ensureStatusOk(App.java:245)
at org.bonitasoft.example.App.extractProcessId(App.java:473)
at org.bonitasoft.example.App.installProcessFromUploadedBar(App.java:468)
at org.bonitasoft.example.App.deployProcess(App.java:357)
… 7 more
L’unique chose que j’ai modifié dans les sources c’est l’URI de Bonita (qui tourne sur le port 8081 de mon pc).
L’appel à l’api de login fonctionne bien. Par contre c’est au moment de déployer le process que sa plante.
Avez vous une idée de ce qui peut provoquer ce problème ?
L’erreur venait du fait que l’api pour déployer un processus n’existait pas dans la version de Bonita que j’avais (Community 6.3.7).
Comme indiqué dans la documentation, ce n’est pas accessible pour la version Community. Il faut posséder une licence. http://documentation.bonitasoft.com/rest-api-overview
Bonjour,
L’API pour déployer un processus est bien disponible en version communautaire.
Vous pouvez essayer de déployer votre processus via l’interface du portail pour vérifier que le problème ne vient du fichier .bar que vous essayez de déployer.
Vous pouvez aussi consulter les log dans le répertoire log/ du bundle tomcat (fichiers bonita*.log)
Bonjour,
D’après ce que je comprend, il y a deux problèmes:
le fichier n’est pas présent dans le répertoire temporaire quand on appelle l’API process. Peut-être l’API est appelée deux fois avec le même nom de fichier ? Dans ce cas, le fichier ne serait plus là car il a déjà été consommé une fois.
la version de bonita avec laquelle le .bar a été créé ne correspond pas à la version de bonita sur laquelle l’appel à l’API est fait. Il faut le re-générer avec le studio. Je suggère de d’abord régler ce problème avant d’aller plus loin.
Dans mon cas, l’erreur venait du fait que l’api pour déployer un processus n’existait pas dans la version de Bonita que j’avais (Community 6.3.7).
Comme indiqué dans la documentation, ce n’est pas accessible pour la version Community. Il faut posséder une licence. http://documentation.bonitasoft.com/rest-api-overview
@Yannick
Ce que vous dites est intéressant et d’ailleurs je vois que les versions qui peuvent y prétendre sont différentes pour les versions 6.5 6.4 et 6.3
Pour la 6.5 et la 6.4 seuls Teamwork, Efficiency et Performance peuvent en bénéficier.
Pour la 6.3 ce sont d’après la doc toutes les versions… même community et donc vous n’auriez pas du avoir ce problème. lien vers la 6.3
Pour la version 6.3, il existe bien des api REST, mais pas toutes.
Il est vrai que d’après le lien qu’à posté Sean, ça devrait fonctionner. J’ai réussi à faire fonctionner plusieurs api REST sur la version 6.3. Le login fonctionne, le listing des processus, des utilisateurs et d’autres api fonctionnent. Par contre celle qui permet d’installer un processus ou de lancer un processus ne fonctionnent pas. Ou en tout cas, elles ne fonctionnent pas comme les autres puisque je n’ai jamais réussi à les utiliser.
Bonjour.
Je viens de retester et j’ai plusieurs erreurs.
Lors du déploiement du processus, j’ai les logs suivant (avec plein de caractères bizarres) :
2015-05-20 09:14:38 org.bonitasoft.web.toolkit.server.servlet.ToolkitHttpServlet
GRAVE: java.io.FileNotFoundException: the file does not exists: D:\BonitaBPMCommunity-6.3.7\workspace omcatonita\client enants\1 mp mp_1874263626879510207.bar
org.bonitasoft.web.toolkit.client.common.exception.api.APIException: java.io.FileNotFoundException: the file does not exists: D:\BonitaBPMCommunity-6.3.7\workspace omcatonita\client enants\1 mp mp_1874263626879510207.bar
at org.bonitasoft.web.rest.server.datastore.bpm.process.ProcessDatastore.readBusinessArchive(ProcessDatastore.java:102)
at org.bonitasoft.web.rest.server.datastore.bpm.process.ProcessDatastore.add(ProcessDatastore.java:75)
at org.bonitasoft.web.rest.server.api.bpm.process.APIProcess.add(APIProcess.java:80)
at org.bonitasoft.web.rest.server.api.bpm.process.APIProcess.add(APIProcess.java:46)
at org.bonitasoft.web.rest.server.framework.API.runAdd(API.java:157)
at org.bonitasoft.web.rest.server.framework.APIServletCall.doPost(APIServletCall.java:188)
at org.bonitasoft.web.toolkit.server.servlet.ToolkitHttpServlet.doPost(ToolkitHttpServlet.java:188)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at org.bonitasoft.web.toolkit.server.servlet.ToolkitHttpServlet.service(ToolkitHttpServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.bonitasoft.web.toolkit.server.servlet.ToolkitHttpServlet.service(ToolkitHttpServlet.java:226)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.bonitasoft.console.common.server.login.filter.AbstractAuthorizationFilter.doFilter(AbstractAuthorizationFilter.java:60)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.bonitasoft.console.common.server.login.filter.AbstractAuthorizationFilter.doFilter(AbstractAuthorizationFilter.java:60)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.bonitasoft.console.security.SessionFixationValve.invoke(SessionFixationValve.java:77)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: the file does not exists: D:\BonitaBPMCommunity-6.3.7\workspace omcatonita\client enants\1 mp mp_1874263626879510207.bar
at org.bonitasoft.engine.bpm.bar.BusinessArchiveFactory.readBusinessArchive(BusinessArchiveFactory.java:90)
at org.bonitasoft.web.rest.server.datastore.bpm.process.ProcessDatastore.readBusinessArchive(ProcessDatastore.java:100)
… 29 more
Le lien vers le fichier semble avoir un soucis. Pourtant j’ai vérifié la requete Post qui est envoyé et le lien y est correct.
J’ai ensuite essayé de voir si le fichier existe bien, ce qui est le cas. Et j’ai tenté de l’installer directement dans le portail.
Là j’ai cette erreur :
org.bonitasoft.engine.bpm.bar.InvalidBusinessArchiveFormatException: Wrong version of your process definition, 6.http://www.bonitasoft.org/ns/process/client/6.0 namespace is not compatible with your current version. Use the studio to update it.
Je viens de tester aujourd’hui avec le fichier xml de l’organisation généré par le studio et même le fichier du mapping des acteurs et toujours la même exception :
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeExceptio
n: Failed : HTTP error code : 500 : Erreur Interne de Servlet
at org.bonitasoft.example.App.importOrganizationFromFile(App.java:275)
at org.bonitasoft.example.App.importOrganization(App.java:251)
at org.bonitasoft.example.App.start(App.java:134)
at org.bonitasoft.example.App.main(App.java:114)
Caused by: java.lang.RuntimeException: Failed : HTTP error code : 500 : Erreur I
nterne de Servlet
at org.bonitasoft.example.App.ensureStatusOk(App.java:244)
at org.bonitasoft.example.App.consumeResponse(App.java:215)
at org.bonitasoft.example.App.importOrganizationFromFile(App.java:269)
... 3 more
c’est la méthode executePostRequest(String apiURI, UrlEncodedFormEntity entity) à la ligne 269 qui lève cette exception. Ici par contre le second paramètre qui est transmis est un String :
Alors je viens de tester avec la version de Bonita 6.4.2 et ça plutôt l’air de marcher correctement avec des requêtes très basiques qui retournent du JSON genre combien de processus activés, les utilisateurs etc…
Mais maintenant j’aimerais instancier un nouveau cas de processus et je vois que l’API REST propose la méthode suivante :
public int startACase(long processDefinitionId)
Et ce long justement est généré avec une autre méthode (il faut créer un fichier bar) sauf que moi je n’ai pas besoin de ce fichier car l’application est déjà déployé dans le bundle Tomcat. Par contre je ne sais pas comment générer ce long pour ensuite le transmettre à la méthode startACase(long id…).
Et donc naturellement ma question est : comment généré ce long ? ou accessoirement comment instancier un nouveau cas de processus si on peut faire autrement ?
Je pense que cette question mérite la création d’un nouveau sujet étant donné qu’elle s’éloigne pas mal de la question d’origine.
Je ne peux par contre pas y apporter de réponse.
Le fichier est bien présent dans le répertoire temporaire. J’ai vérifier ce répertoire. L’api n’est appelé qu’une seule fois. Le programme plante dès le premier appel.
Le fichier bar est généré par le programme. Il utilise les classes BusinessArchiveBuilder et ProcessDefinitionBuilder. Je n’ai trouvé aucune information quant à la version de Bonita qui est utilisé pour créer le fichier.
J’ai aussi vérifié dans le fichier POM, la version du jar de Bonita correspond bien à celle de mon studio.
Je ne sais pas si c’est le forum, mais les \t dans le path ont l’air d’être remplacés par des tab. ça vaut peut être le coup de mettre un fichier dans le repertoire tmp à la main et de passer sont URL en dur dans le code pour voir si ça n’est pas un problème de format d’URL ou d’encoding.
Pour le problème de version, je suggère de comparer le process-design.xml du .bar avec celui d’un .bar généré par le studio pour voir quelle est la différence.
Ca ne vient pas du forum, c’est déjà comme ça dans les logs.
Je viens d’essayer en mettant un bar généré depuis le studio. J’ai exactement le même problème dans les logs. Les \t sont remplacés.
C’est surement un bug qu’il y avait dans cette version de l’api. Il a peut être été corrigé dans les nouvelles api.
EDIT : J’ai aussi comparé le bar généré depuis le studio et celui généré depuis le programme. L’unique différence est dans le Process Definition qui est à 6.3 dans le bar du studio et 6.0 dans le bar du programme.
Je n’ai pas la moindre idée de ce qu’il faut modifier dans le programme pour lui indiquer dans quelle version il doit générer le fichier bar.
A part si il y a un bonita-client-6.0.x.jar ou bonita-common-6.0.x.jar qui traîne dans le classpath en plus des 6.3.7, je ne vois pas…
Pour le problème de File not found, il faudrait comparer (avec firebug ou autre) avec la requête faite par le portail quand on deploie un processus pour voir ce qui diffère.
Bien vu.
Bien que j’avais modifié le fichier pom, les dépendences n’avaient pas été mise à jour et ça pointait encore vers la version 6.0.
C’est corrigé et maintenant le bar généré par le programme est à la bonne version.
Bonitasoft empowers development teams with Bonita, the open-source and extensible platform to solve the most demanding process automation use cases. The Bonita platform accelerates delivery of complex applications with clear separation between capabilities for visual programming and for coding. Bonita integrates with existing solutions, orchestrates heterogeneous systems, and provides deep visibility into processes across the organization.