87 lines
2.6 KiB
Plaintext
87 lines
2.6 KiB
Plaintext
<page xmlns="http://projectmallard.org/1.0/"
|
||
type="topic" id="api-workflow" xml:lang="fr">
|
||
|
||
<info>
|
||
<link type="guide" xref="index#api" />
|
||
<revision docversion="0.1" date="2013-01-04" status="draft"/>
|
||
<credit type="author">
|
||
<name>Frédéric Péters</name>
|
||
<email>fpeters@entrouvert.com</email>
|
||
</credit>
|
||
<desc>Workflow, états, transition, etc.</desc>
|
||
|
||
</info>
|
||
|
||
<title>Traitement d'un formulaire</title>
|
||
|
||
<section>
|
||
<title>Synchrone</title>
|
||
|
||
<p>
|
||
Pour faire évoluer un formulaire en fonction de données extérieures, le
|
||
workflow peut contenir une action d'<link xref="wf-wscall">appel à un
|
||
webservice</link> et enchaîner sur une série de sauts automatiques,
|
||
conditionnés par le résultat de l'appel.
|
||
</p>
|
||
|
||
</section>
|
||
|
||
|
||
<section>
|
||
<title>Asynchrone</title>
|
||
|
||
<p>
|
||
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.
|
||
</p>
|
||
|
||
<p>
|
||
La demande d'un changement d'état se fait par une requête <code>POST</code> à
|
||
l'adresse du formulaire en question, suivi de <code>jump/trigger/</code> et de
|
||
la référence à l'identifiant de déclencheur (<code>validate</code> dans
|
||
l'exemple qui suit).
|
||
</p>
|
||
|
||
<screen>
|
||
<output style="prompt">$ </output><input>curl -H "Accept: application/json" -X POST \
|
||
https://www.example.net/inscriptions/newsletter/14/jump/trigger/validate<var>?signature…</var></input>
|
||
<output>{"url": null, "err": 0}</output>
|
||
</screen>
|
||
|
||
<p>
|
||
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.
|
||
</p>
|
||
|
||
<screen>
|
||
<output style="prompt">$ </output><input>curl -H "Content-type: application/json" -H "Accept: application/json" \
|
||
-X POST -d@donnes.json \
|
||
https://www.example.net/inscriptions/newsletter/14/jump/trigger/validate<var>?signature…</var></input>
|
||
<output>{"url": null, "err": 0}</output>
|
||
</screen>
|
||
|
||
<p>
|
||
Il est également possible de définir des déclencheurs au niveau des actions
|
||
globales du workflow, ils pourront alors être appelés quel que soit le statut
|
||
de la demande.
|
||
</p>
|
||
|
||
<p>
|
||
Un tel appel, avec un déclencheur global ici intitulé <code>urgent</code> se
|
||
ferait ainsi :
|
||
</p>
|
||
|
||
<screen>
|
||
<output style="prompt">$ </output><input>curl -H "Accept: application/json" -X POST \
|
||
https://www.example.net/api/forms/newsletter/14/hooks/urgent/<var>?signature…</var></input>
|
||
<output>{"err": 0}</output>
|
||
</screen>
|
||
|
||
</section>
|
||
|
||
</page>
|