Formulaire dynamique
Moteur de formulaires conditionnels piloté par un schéma JSON : les champs, les règles de visibilité et la validation changent selon le type de demande. Testez les trois formulaires du guichet interne dans le Simulateur.
À propos
Le module Formulaire dynamique est un moteur de formulaires conditionnels piloté par un schéma JSON. Le cas métier : un guichet de demandes internes (congés, achat de matériel, accès applicatif) où les champs affichés dépendent du type de demande et des réponses déjà saisies. Le formulaire n'est pas codé en dur : un renderer générique parcourt le schéma, mappe chaque fieldType vers un composant bpm et applique les règles visibleIf en direct — un congé « sans solde » fait apparaître une justification requise, un achat de plus de 1 000 € exige une validation directeur, un profil admin impose un motif et une durée limitée.
Composants utilisés
bpm.selectbox, bpm.input, bpm.textarea, bpm.checkbox, bpm.radioGroup et bpm.dateInput pour les champs ; bpm.message pour les avertissements conditionnels ; bpm.panel + bpm.labelValue pour le récapitulatif ; bpm.table + bpm.badge pour les demandes soumises ; bpm.jsonViewer pour le schéma ; bpm.metricRow et bpm.toast pour le suivi.
import bpm
schema = load_form_schema("achat-materiel") # le schéma JSON pilote tout
for field in schema["fields"]:
if not visible(field, values): # règle visibleIf évaluée en direct
continue
if field["type"] == "select":
bpm.selectbox(field["label"], options=field["options"])
elif field["type"] == "textarea":
bpm.textarea(field["label"])
elif field["type"] == "date":
bpm.dateInput(field["label"])
bpm.button("Soumettre la demande", on_click=valider_et_soumettre)Paramétrage
Le simulateur fonctionne entièrement en local : trois schémas seedés, validation par champ et tableau des demandes en état React. En production, les schémas sont servis par une API et versionnés ; le renderer reste identique. Voir la documentation pour la spécification complète du schéma (types de champs, conditions, validation).