Traitement d’un formulaire
Synchrone
Pour faire évoluer un formulaire en fonction de données extérieures, le workflow peut contenir une action d’appel à un webservice et enchaîner sur une série de sauts automatiques, conditionnés par le résultat de l’appel.
Asynchrone
Pour des traitements asynchrones, w.c.s expose également une API autorisant les logiciels tiers à faire progresser le traitement d’un formulaire; cela passe par la définition dans le statut du workflow d’un élément de type « Changement de statut automatique », dans lequel un identifiant de déclencheur est défini.
La demande d’un changement d’état se fait par une requête POST à l’adresse du formulaire en question, suivi de jump/trigger/ et de la référence à l’identifiant de déclencheur (validate dans l’exemple qui suit).
Lors de cette requête, il est nécessaire d’inclure l’entête Accept: application/json.
POST https://www.example.net/inscriptions/newsletter/14/jump/trigger/validate/ {"url": null, "err": 0}
Il est également possible d’accompagner le déclenchement d’un changement de statut d’une série de données, qui seront enregistrées dans les données de workflow du formulaire.
POST https://www.example.net/inscriptions/newsletter/14/jump/trigger/validate/ → {"reason": "C’est ok."} {"url": null, "err": 0}
Ces données seront accessibles dans des variables nommées form_trigger_l’identifiant_du déclencheur_content_données, l’exemple ci-dessus donnerait donc une variable form_trigger_validate_content_reason avec le texte C’est ok. comme valeur.
Des déclencheurs peuvent aussi être définis au niveau des actions globales du workflow, ils pourront alors être appelés quel que soit le statut de la demande.
Un tel appel, avec un déclencheur global ici intitulé urgent se ferait ainsi :
POST https://www.example.net/api/forms/newsletter/14/hooks/urgent/ {"err": 0}