Svp comment afficher les donnes MySQL dans un formulaire en bonita version 7 . Je suis bloqué
Bonjour,
Sur quelle etape est-ce que vous êtes bloqué exactement? Est-ce qu'un lien entre le tomcat et le Studio a bien ete configuré? Est-ce que le bdm est bien créé? Est-ce que les contracts pour les taches sont bien créés? Est-ce que c'est l'affichage dans le formulaire en lui même?
Merci,
Bonjour,
Je suppose que votre base de donnees MySQL est une qui est externe et n'est pas la base de donnees BDM et que vous utilisez une requete SQL dans le connecteur pour recuperer les donnees.
Dans ce cas, pour afficher les donner il y a deux options.
La premiere est de creer un objet bdm qui va avoir les memes attributs que les objets dans votre base de donnees. Par exemple, si vous avez un objet Voiture dans votre base de donnees, avec deux attributs prix et couleur, il faut qu'un objet BDM soit cree qui aura deux attributs prix et couleur.
L'etape d'apres c'est de configurer votre connecteur MySQL pour utiliser le mode "script". Ceci va permettre de parser le resultat de la requete SQL et de creer un objet bdm qui aura les valeurs du resultat. Pour faire ceci, dans les variables de sortie (etape apres le choix du mode "script"), appuyez sur le petit crayon a cote de resultset. Choisissez le mode script et parsez le resultat en faisant quelque chose du type (pour le meme exemple de Voiture avec les attributs prix et couleur) :
import com.company.model.BusinessObject
def result = []
while(resultset.next()){
BusinessObject bo = new BusinessObject()
double prix = resultset.getDouble(0)
String couleur = resultset.getString(1)
bo.setPrix(prix);
bo.setCouleur(couleur);
result.add(bo)
}
result
Apres la creation du script, il faut que vous rajoutez une variable metier qui prendra la valeur du resultat du script (la premiere dropdown). Il faut que vous creez une nouvelle variable metier qui sera du type d'objet metier BusinessObject et est multiple. Donc, au final vous allez avoir une liste de BDM comme donnee de variable metier. Ce qui reste a faire est de creer un contrat a partir des donnees. Le seul choix a faire c'est si vous voulez pouvoir modifier les donnes ou juste les afficher dans la page. Apres avoir rajoute le contrat, vous pouvez generer le formulaire, qui va creer un formulaire avec les donnees qui seront affiches.
La deuxieme option est d'utiliser une variable au lieu d'une donnee metier dans la derniere etape du connecteur MySQL et d'utiliser un appel api dans votre form pour recuperer la process variable dans le formulaire, mais je n'ai jamais fait ceci, donc je ne peux pas trop vous aider. Vous pouvez retrouver plus d'information sur cette page: https://documentation.bonitasoft.com/bonita/7.11/bpm-api#toc29
Bonjour,
Pour compléter l'excellent réponse de Dumitri:
* si vous dupliquer l'information dans un BDM, et bien attention vous dupliquer l'information.
* si vous voulez acceder à ces informations depuis un formulaire, ca rejoint la question
https://community.bonitasoft.com/questions-and-answers/d%C3%A9finir-les-valeurs-de-champ-%C3%A0-partir-dune-base-de-donn%C3%A9es-bonita
En fait, vous avec plusieurs options (je vous recopie ma réponse):
1/ vous chargez avant, dans une variable locale, la liste de toutes les valeurs. Dans votre formulaire, vous recuperer cette variable locale (via la REST API CONTEXT par exemple)
https://community.bonitasoft.com/project/restapicontext
C'est une solution interressante, mais lourde en mémoire : les valeurs seront stockées dans tous les cases, et chaque ouverture de task chargera toutes les valeurs. Mais si vous avez peu de valeur (< 100), ca peut etre interressant
2/ vous chargez les données en fonction d'un filtre. Par exemple, avec un autocomplete, on peut commencer à taper le début d'un matricule, le widget fait une requête coté serveur pour récupérer la liste des données commencant par cette valeur.
Ou une fois le matricule donnée, vous faites une autre requête pour avoir la liste des attestations relatif à ce matricule.
Pour cela, vous allez devoir faire une REST API coté du formulaire (variable "External API"). Ensuite, comment faire cette REST API?
A/ certaines bases offrent ce mécanisme. Donc, vous utilisez directement la REST API de la base. Attention aux droits de connection
B/ vous pouvez utiliser le mechanisme de REST API Extension de Bonita. Il faut développer la REST API en Groovy. Un exemple est présent dans la communauté: https://community.bonitasoft.com/project/datasource
C/ Personnellement, j'utilise Gasoline. Cette page permet par configuration de créer la requete. Vous allez donc, via Gasoline (connecter avec un administrateur) donner la requete SQL. Vous donnez un code à cette requete (par exemple "MATRICULE" et une autre requête "ATTESTATION"). La requête peut nécessiter des paramètres (tel le numero de matricule pour l'attestation). Gasoline offre alors une REST API par requête. https://community.bonitasoft.com/project/pagegasoline
merci dumitru.corini je suis bloqué dans l'étape d'afficher les donés de base des données.
je creer un connecteur mysql sa fonctionne bien le requette mais dans le formulaire u deseigner bonita ou je veux deplacer les donnees de base il existe des etapes je ne connais pas bien les etapes. comment creer un api externe ... est ce que tu as un ideé svp et merci d'avance