Script Groovy Connecteur

Bonjour ,

J’ai créé une classe java “Personne” sous netbeans, voici ma classe:

package test;

import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Personne {

protected int id ;
protected String nom;
protected String prenom;

public Personne() {

}

public void listPersone() {
Connection conn = null;
try {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(“jdbc:mysql://localhost/mydb1”, “root”, “12345678”);
Statement st = conn.createStatement();

String query = "INSERT INTO personne VALUES(1, \"Katrina\", \"Kati\")";
st.executeUpdate(query);

query = "SELECT * FROM personne";
ResultSet rs = st.executeQuery(query);

while (rs.next()) {
    System.out.println("Nom : "+rs.getString(2)+" prenom : "+rs.getString(3));
}
st.close();
conn.close();

}
catch (Exception e){System.out.println(e);}

}
public static void main (String arg)
{
Personne p= new Personne();
p.listPersone();
}
}

J’ai défini mon connecteur dans Bonita après je l’ai implémenté et importé mes jars (Mysql connector et ma classe) et pour faire appel à ma méthode “listPersonne” j’ai mis ce script groovy:

import test.Personne;
Personne personne= new Personne();
personne.listPersone();

Quand je lance mon processus , ça bloque dans la tache d’après celle ou j’ai mis mon connecteur.
Quelqu’un peut m’aider ? Je pense que mon script n’est pas complet ?
Merci.

Bonjour,
“ça bloque dans la tache d’après celle ou j’ai mis mon connecteur” : que fait cette tache d’après ?

Sinon, est ce que ce ne serait pas la base qui bloque la prochaine requête ?
En effet :

  • cette méthode ouvre une connexion a chaque fois, ce qui n’est pas très bon en terme de performance (il est préférable d’utiliser un datasource)
  • il n’y a pas dans le catch une fermeture de la connexion (bon, normalement, la destruction de l’objet doit fermer la connexion, mais il est préférable de le faire
  • il n’y a pas de begin Transaction et de commit (alors qu’on fait un insert)
  • pourquoi appeler ce code depuis du groovy ? Il est préférable de définir un connecteur Java.

Malgré ces différents points d’amélioration, cela devrait fonctionner. Je pense que c’est soit la base qui se bloque (pas de transaction, ou connexion toujours ouverte) soit c’est ce qu’il y a dans l’activité suivante qui fait planter le process.

Ah, on dirait qu’il y a deux problèmes la :

  • la sortie du connecteur : le connecteur groovy devrait avoir en final un “return myObject” qui peut alors etre mappé dans une variable
  • pour le fait que rien n’est dans la base de donnée, c’est certainement qu’il n’y a pas de transaction dans le code.
    If faut au moins faire un conn.commit(). Si c’est une base SQL Serveur, il faut de plus ajouter un begin transaction.

Svp j’ai besoin d’aide :frowning:
Merci d’avance.

A quoi ressemble ton connecteur ?
Dans Bonita BPM 6.3 il existe un connecteur déjà tout fait pour MySQL.
Il suffit de lui indiquer l’adresse de la base de donnée, le mot de passe et login puis d’ajouter ton script SQL et ça fonctionne.
Ne serait il pas plus simple d’utiliser ce connecteur déjà existant ?

Merci Yannick pour votre aide mais je veux pas procéder de cette manière.Je travaille avec une application-web externe et je veux faire appel à ma persistance au sein de bonita.
Si j’utilise ce connecteur déjà prêt je suis obligée à chaque fois d’ajouter des scripts SQL et j’essaye d’éviter ça.

Ok. Je n’ai jamais essayé cette façon de faire donc je ne pourrais pas aider plus.

Bonjour,
J’ai réglé le problème ça bloque plus :slight_smile:
J’ai changé ma classe, elle est ici " http://community.bonitasoft.com/answers/objet-java-pour-la-persistance#node-14880 "
et j’ai défini un connecteur mais j’ai un souci si vous avez des propositions
En fait je voulais exécuter ma méthode “listePersonne” et j’ai suivi cet exemple " http://blog.telsen.fr/ "
J’ai mis mon script groovy dans mon connecteur :

import Personne;
Personne personne= new Personne();
personne.listPersonne();

Quand je teste le connecteur j’ai ce message : " l’exécution du connecteur a réussie mais n’a aucune sortie "
même la personne que j’ajoute ne s’affiche pas dans ma base Mysql.