Indexation des données d’un formulaire du plugin Forms vers un Elasticsearch
Le plugin elasticdata combiné au module elasticdata-forms (pour indexer les informations relatives aux réponses à un formulaire) et module elasticdata-workflow (pour indexer les informations sur le cycle de vie des réponses) permettent d’envoyer des données relatives à des réponses à des formulaires vers un index elasticsearch :
- à chaque indexation, l’application envoie une série d’entrées comportant chacune des données relatives à une réponse à un formulaire dans un état spécifique du workflow.
- chaque entrée comporte des indications sur :
- le formulaire associé et les réponses aux différentes questions du formulaire
- les informations de base comme la date de création, l’identifiant de la réponse ainsi que les valeurs pour les champs sélectionnés en back-office à indexer (Nécessite le module elasticdata-forms)
- l’historique de workflow : nom de l’état, nom de l’action exécutée avant d’arriver dans cet état, etc. (Nécessite le module elasticdata workflow)
Pour chaque réponse une des entrées correspondra à son état actuel. Elle aura le type “formResponse”. Les autres entrées auront le type “formResponseHistory” et donneront des informations sur les états passés de la réponse (workflowState) et des actions qui ont été déclenchées (actionName).
Sommaire :
Usages
Il est possible de suivre la vie des demandes via :
- l’état du Workflow dans lequel est la réponse dans les entrées de type “formResponse”
- les différentes dates. Il faudra faire attention au fait que seule la date de création de la réponse est fournie sous forme de timestamp (champs Timestamps). La date de dernière modification est fournie comme une durée en millisecondes relative à cette date (champs “CompleteDuration”).
- l’id de la réponse au formulaire (champs FormResponseId)
- les autres informations correspondent à des valeurs saisies dans les champs du formulaire
Les daemons d’indexation permettent de gérer le rythme d’indexation, plus ou moins fréquent selon les besoins de suivi.
Dates et durée
- Lorsque le champs “documentTypeName” est à “formResponse”
- le champs “timestamp” indique la date de création de la réponse au formulaire
- le champs “completeDuration” donne la durée en millisecondes entre la date de création de la réponse et la date du passage dans l’état actuel du workflow
- le champs “taskDuration” n’est pas fourni
- Lorsque le champs “documentTypeName” est à “formResponseHistory”
- le champs “timestamp” indique la date du passage dans l’état du workflow considéré
- le champs “completeDuration” donne la durée en millisecondes entre la date de création de la réponse et la date du passage dans l’état du workflow considéré
- le champs “taskDuration” donne la durée en millisecondes entre la date du passage dans l’état du workflow précédent et celui de l’état du workflow considéré (ou autrement dit la durée pendant laquelle la réponse s’est trouvée dans l’état précédent).
- Le seul moyen de savoir si la demande est finalisée ou en cours est de regarder l’état du workflow. Pour la durée cela ne fera pas de différence.
Configurer les champs d’un formulaire à indexer
Le menu de configuration GESTION DES DONNÉES DE FORMULAIRE POUR ELASTICSEARCH est accessible depuis le back-office. Il est nécessaire que le compte utilisateur porte le droit “ELASTICDATA_FORMS_MANAGEMENT”.
Pour chaque formulaire créé sur l’application, il est possible de définir une indexation spécifique. Les champs sont ordonnés dans l’ordre du formulaire et sont sélectionnables.
Exemple
{
"_index": "f10_rec_formsdatasource",
"_type": "_doc",
"_id": "FORMSGEN_FormsDataSource_382",
"_score": 1,
"_source": {
"parentName": "TEST form 14092023 - Réservation #1 [AA]",
"formResponseId": 382,
"formId": 47,
"userResponses": {},
"formName": "TEST form 14092023 - Réservation #1 [AA]",
"parentId": "47",
"documentTypeName": "formResponse",
"completeDuration": 193000,
"workflowState": "Réservation accordée",
"actionName": "Accordé",
"taskDuration": 0,
"userResponsesMultiValued": {},
"worflowAdminCreator": null,
"unitName": null,
"ame": null,
"prefixedDayOfWeek": "4 - jeudi",
"prefixedMonth": "09 - septembre",
"timestamp": "1694703688000",
"month": "septembre",
"hour": "17",
"dayOfWeek": "jeudi"
}
},
{
"_index": "f10_rec_formsdatasource",
"_type": "_doc",
"_id": "FORMSGEN_FormsDataSource_formResponseHistory_681586",
"_score": 1,
"_source": {
"parentName": null,
"formResponseId": 382,
"formId": 47,
"userResponses": {},
"formName": "TEST form 14092023 - Réservation #1 [AA]",
"parentId": "26",
"documentTypeName": "formResponseHistory",
"completeDuration": 49000,
"workflowState": "Réception agent",
"actionName": "AR",
"taskDuration": 49000,
"userResponsesMultiValued": {},
"worflowAdminCreator": "auto",
"unitName": null,
"ame": null,
"prefixedDayOfWeek": "4 - jeudi",
"prefixedMonth": "09 - septembre",
"timestamp": "1694703737000",
"month": "septembre",
"hour": "17",
"dayOfWeek": "jeudi"
}
},
...