Erreur de soumission de formulaire Camunda 7 – L’expression ne retourne pas un booléen

 Dans Camunda 7, une erreur fréquente lors de la soumission des formulaires est la suivante :

Impossible de soumettre le formulaire de tâche
Condition expression returns non-Boolean: result has class java.lang.String and not java.lang.Boolean

Cette erreur apparaît généralement lors de l’utilisation de formulaires Camunda, de passerelles BPMN, ou de conditions basées sur des variables de formulaire.
Cet article explique les causes racines, comment identifier rapidement le problème, et les solutions fiables à appliquer.


1️⃣ Que signifie réellement cette erreur ?

Camunda attend une valeur booléenne (true / false) dans :

  • les conditions de séquence,

  • les conditions de passerelle (gateway),

  • les événements conditionnels,

  • certaines validations de formulaires.

Mais l’expression retourne à la place :

  • une chaîne de caractères ("true", "false", "yes", "no"),

  • ou un autre type (Integer, Long, null).

➡️ Résultat : la soumission du formulaire échoue.


2️⃣ Causes les plus courantes

🔴 Cause 1 : Les champs de formulaire retournent des chaînes (String)

Par défaut, les formulaires HTML retournent des String.

Exemple :

<input type="radio" cam-variable-name="approved" value="true">

Valeur enregistrée :

approved = "true" // String

Utilisation incorrecte :

${approved}

Solution :

${approved == 'true'}

🔴 Cause 2 : Condition de passerelle mal définie

❌ Incorrect :

${approved}

✅ Correct :

${approved == true}

ou (plus sûr avec des formulaires HTML) :

${approved == 'true'}

🔴 Cause 3 : Confusion entre FEEL et JUEL

Camunda 7 utilise JUEL, pas FEEL.

❌ Syntaxe invalide :

approved = true

✅ Syntaxe correcte :

${approved == true}

🔴 Cause 4 : Select / Radio retourne toujours une String

Exemple :

<select cam-variable-name="decision"> <option value="yes">Oui</option> <option value="no">Non</option> </select>

Utilisation incorrecte :

${decision}

✅ Solution :

${decision == 'yes'}

🔴 Cause 5 : Variable null

Si la variable n’est pas définie, elle vaut null.

❌ :

${approved}

✅ :

${approved != null && approved == true}

ou :

${approved == 'true'}

3️⃣ Comment identifier rapidement le problème

✔ Vérifier le type de variable dans Cockpit
✔ Examiner la définition du formulaire
✔ Rechercher les expressions du type :

${variableName}

➡️ Dans 90 % des cas, c’est la cause du problème.


4️⃣ Bonnes pratiques recommandées

✅ Comparer explicitement

${approved == 'true'}

✅ Convertir en booléen côté Java

Boolean approvedBool = Boolean.valueOf((String) approved);

✅ Utiliser un champ booléen (formulaire généré Camunda)

"type": "boolean"

5️⃣ Exemple correct de condition BPMN

❌ Mauvais :

${formDecision}

✅ Bon :

${formDecision == 'approve'}

6️⃣ Checklist production

✅ Ne jamais supposer une évaluation booléenne implicite
✅ Toujours comparer les chaînes explicitement
✅ Vérifier les types de variables dans Cockpit
✅ Éviter la syntaxe FEEL dans Camunda 7
✅ Ajouter des logs avant les passerelles critiques


7️⃣ Besoin d’aide experte ?

Si :

  • l’erreur apparaît uniquement en production,

  • les formulaires sont externes (Angular / React),

  • plusieurs passerelles dépendent de la même variable,

un accompagnement professionnel est recommandé.


💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés aux formulaires Camunda, aux erreurs de soumission, ou aux conditions de passerelle, je propose des services de conseil payants, débogage en production, support projet et formations ciblées.

📧 Contactishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 WebsiteIT Trainings | Digital lectern | Digital rostrum | Digital metal podium 


Comments

Popular posts from this blog

jBPM Installation Guide: Step by Step Setup

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained