Résoudre un problème dans Bonita 7.8.3

1
0
-1

Bonjour communauté,
J'essaie de créer une application de gestion de rendez-vous et au moment de la création d'un deuxième acteur: validateur de demande, j'ai une erreur qui s'affiche et je ne sais pas comment la résoudre:

Erreur : { "exception": "class org.bonitasoft.engine.exception.BonitaRuntimeException", "message": "USERNAME=walter.bates | org.bonitasoft.engine.commons.exceptions.SRetryableException: javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value : com.company.model.EnvoiDemandes.idDemandeur" }

J'ai utilisé un tutoriel basic de création de demande congé comme exemple.

Merci de votre aide très précieux.

Ludmila

Comments

Submitted by ludmilabanaru on Tue, 06/04/2019 - 10:57

Bonjour,
Je viens de rajouter

BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId).id

dans le script Groovy de mavaleur par defaut initEnvoi() de ma variable metier : envoi, de l'objet metier* EnvoiDemandes* :
voici comment je le fais:

def envoiDemandesVar = new com.company.model.Envoidemandes()
BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId).id
envoidemandesVar.dateRdv1=envoiInput.dateRdv1
envoidemandesVar.dateRdv2=envoiInput.dateRdv2
envoidemandesVar.dateRdv3=envoiInput.dateRdv3
return envoiDemandesVar

J'obtiens toujours l'exception suivante:
Erreur : { "exception": "class org.bonitasoft.engine.exception.BonitaRuntimeException", "message": "USERNAME=walter.bates | org.bonitasoft.engine.commons.exceptions.SRetryableException: javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value : com.company.model.EnvoiDemandes.idDemandeur" }

Merci de votre aide.
Ludmila

1 answer

1
0
-1
This one is the BEST answer!

Il semble que votre Business Object nommé "EnvoiDemandes" est un attribut "idDemandeur" déclaré comme ne pouvant pas être vide (i.e. not null, obligatoire...) et selon le message d'erreur que vous tentiez de sauvegarder une business variable qui contient une valeur vide pour cet attribut.

En général les valeurs des attributs d'une business variable sont définies dans la valeur par défaut de celle-ci qui utilise un script Groovy et les données reçues dans le contrat défini au niveau du processus.

Je suppose que l'attribut "idDemandeur" n'est pas une donnée reçue via le contrat mais une information qui doit être obtenue depuis le moteur Bonita. Pour cela il est possible d'éditer le script Groovy utilisé pour définir la valeur par défaut et d'ajouter l'initialisation de l'attribut en utilisant par exemple le code suivant pour obtenir l'identifiant de l'utilisateur ayant démarrer le processus :
BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId).id

Comments

Submitted by ludmilabanaru on Tue, 06/04/2019 - 09:50

Merci infiniment .
je vais essayer avec la solution que vous proposez.

Submitted by ludmilabanaru on Tue, 06/04/2019 - 10:05

Bonjour communauté,
J'ai une exception que j'essaye de résoudre:

Erreur : { "exception": "class org.bonitasoft.engine.bpm.contract.ContractViolationException", "message": "Error while validating constraints", "explanations": [ null ] }

J'ai créée 3 contraintes pour mon exemple:
dateRdv1DansFutur
return envoiInput.dateRdv1.isAfter(java.time.LocalDate.now())
dateRdv2DansFutur
return envoiInput.dateRdv2.isAfter(java.time.LocalDate.now())
dateRdv3DansFutur
return envoiInput.dateRdv3.isAfter(java.time.LocalDate.now())

Ou est mon erreur s'il vous plait?

Merci infiniment Ludmila

Submitted by antoine.mottier on Tue, 06/04/2019 - 10:19

Tout d'abord merci d'ajouter un commentaire plutôt qu'une réponse. Une réponse doit apporter une solution à une question. Les commentaires sont utilisés pour apporter des précisions sur une question ou sur une réponse.

Est ce que pour chacune de vos règles de validation vous avez bien défini un message d'erreur associé ?

Submitted by ludmilabanaru on Tue, 06/04/2019 - 10:38

Non je n'ai pas défini des messages d'erreurs, ma faute.
Je vais suivre votre conseil et recréé chaque fois une nouvelle question, mais vu que je suis novice dans Bonita j'ai peur de poser des questions .

Submitted by antoine.mottier on Tue, 06/04/2019 - 10:40

Il ne faut pas hésiter à poser des questions c'est le but de cette section Q&A du site communautaire ! Et bien sur ne pas oublier de consulter la documentation ;-)

Submitted by Christ_Bryan on Sat, 12/03/2022 - 17:31

Bonjour communauté,

Je travaille sur un processus de gestion de mission et j'ai déjà crée: mon diagramme de BPMN, mon model de données métier, ma variable métier. Maintenant j'ai crée un contrat d'instanciation sur ma pool pour qu'à l'exécution du pool l'utilisateur en charge de planifier une mission remplie le formulaire ensuite va chez son supérieur chargé de valider la mission planifié. Mon contrat au début de l'exécution ne prend pas en compte les frais de mission(puisque celui charger de planifier une mission n'est pas celui qui décide des frais de mission).

Maintenant quand j'exécute le processus et que je remplie le formuler crée par mon contrat et que je valide, ça me retourne une erreur disant:

USERNAME=walter.bates | org.bonitasoft.engine.commons.exceptions.SRetryableException: javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value : com.company.model.MissionManagement.mission_fees

Je pense que le problème vient du fait qu'il n'y a aucune valeur pour les frais de mission or dans mon contrat de départ défini sur le pool le champ frais de mission ne figure as car l'acteur de la planification des mission n'est pas celui qui décide des frais de mission.

Comment dire à mon processus qu'au départ on ne prend pas en compte les frais de mission?

J'espère avoir bien formulé mo soucis. Besoin d'aide svp.

Merci.

Notifications