Contexte
- Souvent, une demande client lance une extraction qui ne renvoie aucune donnée car le périmètre demandé ne couvre par le produit demandé. Ceci est dû au fait que le périmètre du produit saisi dans viageo ou plans-réseaux est souvent plus grossier que le vrai périmètre des données.
- Actuellement, lorsque une extraction ne renvoie pas de fichier, le traitement se stoppe et est en erreur (export error car pas de données à retourner)
Objectifs
Mieux gérer le cas où une extraction ne génère pas de résultats par absence de données, si possible de manière 100% automatique pour les plugin Extraction FME Form (Version 2), Extraction FME Flow (Version 2) et Extraction Python.
Implémentation
Extraction FME Form (Version 2)
-
Rajouter une option dépliable (cf. maquette) avec 1 champ obligatoire de type chaîne : "Remarque fixe en cas d'annulation"
-
Si l'option est activée :
-
Forcer l'écriture du log de l'extraction FME dans le flux stderr ou stdout (dépend de la version de FME) avec l'argument en ligne de commande LOG_STANDARDOUT yes. E.g. :
path/to/fme.exe path/to/extractionScript.fmw --parametersFile path/to/parameters.json LOG_STANDARDOUT yes
-
Si l'extraction est en erreur (code de sortie ≠ 0), faire une recherche dans les flux stderr et stdout pour trouver le message d'erreur fixe noDataForExtract. Recherche regex de type .*{message}.*.
-
Si la recherche réussi, la tâche ne reste pas en erreur malgré de code de sortie, la requête est automatiquement annulée et la remarque fixe (champ "Remarque fixe en cas d'annulation") est adressée au client. Si la recherche échoue ou que l'option n'est pas activée, la tâche et donc la requête restent en erreur.
-
Dans le cas d'une detection d'absence de données réussie, toutes les autres tâches qui suivent l'extraction ne sont pas exécutées.
-
Exemple de flux stdout avec le message d'erreur "noDataForExtract" : stdout.log
-
Maquette
https://www.figma.com/proto/eg3st3N9DwGhfdtGXwxvKi/Untitled?node-id=6-18&t=rSmQ3IJf3CgKetgo-1
-
Aide HTML
Rajouter la section suivante tout à la fin de l'aide du plugin :
Annuler le traitement en l'absence de données
L'option "Annuler le traitement en l'absence de données" permet de terminer gracieusement une requête lorsque l'extraction ne renvoie aucune données.
Si l'option est activée et que l'extraction échoue (code de sortie ≠ 0), Extract cherche le message d'erreur fixe noDataForExtract dans le log de l'extraction. Si la recherche réussi, l'extraction ne reste pas en erreur, la requête est automatiquement annulée et le client est notifié avec la remarque saisie dans le champ "Remarque fixe en cas d'annulation". Si la recherche échoue ou que l'option n'est pas activée, l'extraction reste en erreur et une intervention manuelle est nécessaire.
Un tel comportement peut être déclenché par le transformer "Terminator" dans FME en saisissant le message d'erreur "noDataForExtract".
ATTENTION : Si l'option est activée et qu'une absence de données est confirmée, les éventuelles tâches qui suivent l'extraction ne sont pas exécutées.
Extraction FME Flow (Version 2)
-
Rajouter une option dépliable (cf. maquette) avec 1 champ obligatoire de type chaîne : "Remarque fixe en cas d'annulation"
-
Si l'option est activée :
-
Si le status de la requête POST sur le server FME Flow n'est pas dans les 200 (échec, normalement 422), faire une recherche dans la réponse JSON de la requête dans l'objet .serviceResponse.statusInfo.message pour trouver le message d'erreur fixe noDataForExtract. Recherche regex de type .*{message}.*.
-
Si la recherche réussi, la tâche ne reste pas en erreur malgré de code de status, la requête est automatiquement annulée et la remarque fixe (champ "Remarque fixe en cas d'annulation") est adressée au client. Si la recherche échoue ou que l'option n'est pas activée, la tâche et donc la requête restent en erreur.
-
Dans le cas d'une detection d'absence de données réussie, toutes les autres tâches qui suivent l'extraction ne sont pas exécutées.
-
Exemple de réponse JSON (status code = 422) avec le message "noDataForExtract" :
{
"serviceResponse": {
"jobID": 6,
"statusInfo": {
"mode": "sync",
"message": "FME Flow transformation failed: Terminator: Termination Message: 'noDataForExtract'",
"status": "failure"
},
"fmeTransformationResult": {
"fmeEngineResponse": {
"logFileName": "job_6.log"
},
"fmeServerResponse": {
"request": "...",
"jobStatus": "FME_FAILURE",
"timeRequested": "Mon-23-Feb-2026 02: 53: 31 PM",
"requestKeyword": "FILE_DOWNLOAD_SERVICE",
"description": "",
"timeStarted": "2026-02-23 02: 53: 31",
"requesterHost": "10.0.0.132",
"priority": "-1",
"result": "798006:Terminator: Termination Message: 'noDataForExtract'|LogFileName=job_6.log",
"requesterResultPort": "40209",
"resultSuccess": "true",
"serviceSuccess": "false",
"id": "6",
"timeFinished": "2026-02-23 02: 53: 31",
"serviceMsg": ""
}
}
}
}
-
Maquette
https://www.figma.com/proto/eg3st3N9DwGhfdtGXwxvKi/Extract-v2.4.0?node-id=25-127&t=L0IHhohmg5hUeajV-1
-
Aide HTML
Rajouter la section suivante tout à la fin de l'aide du plugin :
Annuler le traitement en l'absence de données
L'option "Annuler le traitement en l'absence de données" permet de terminer gracieusement une requête lorsque l'extraction ne renvoie aucune données.
Si l'option est activée et que l'extraction échoue (code de status HTTP ≠ 200), Extract cherche le message d'erreur fixe noDataForExtract dans la réponse de la requête HTTP. Si la recherche réussi, l'extraction ne reste pas en erreur, la requête est automatiquement annulée et le client est notifié avec la remarque saisie dans le champ "Remarque fixe en cas d'annulation". Si la recherche échoue ou que l'option n'est pas activée, l'extraction reste en erreur et une intervention manuelle est nécessaire.
Un tel comportement peut être déclenché par le transformer "Terminator" dans FME en saisissant le message d'erreur "noDataForExtract".
ATTENTION : Si l'option est activée et qu'une absence de données est confirmée, les éventuelles tâches qui suivent l'extraction ne sont pas exécutées.
Extraction Python
-
Rajouter une option dépliable (cf. maquette) avec 1 champ obligatoire de type chaîne : "Remarque fixe en cas d'annulation"
-
Si l'option est activée :
-
Si l'extraction est en erreur (code de sortie ≠ 0), faire une recherche dans les flux stderr et stdout pour trouver le message d'erreur fixe noDataForExtract. Recherche regex de type .*{message}.*.
-
Si la recherche réussi, la tâche ne reste pas en erreur malgré de code de sortie, la requête est automatiquement annulée et la remarque fixe (champ "Remarque fixe en cas d'annulation") est adressée au client. Si la recherche échoue ou que l'option est désactivée, la tâche et donc la requête restent en erreur.
-
Dans le cas d'une detection d'absence de données réussie, toutes les autres tâches qui suivent l'extraction ne sont pas exécutées.
-
Maquette
https://www.figma.com/proto/eg3st3N9DwGhfdtGXwxvKi/Extract-v2.4.0?node-id=30-195&t=L0IHhohmg5hUeajV-1
-
Aide HTML
Rajouter la section suivante tout à la fin de l'aide du plugin :
Annuler le traitement en l'absence de données
L'option "Annuler le traitement en l'absence de données" permet de terminer gracieusement une requête lorsque l'extraction ne renvoie aucune données.
Si l'option est activée et que l'extraction échoue (code de sortie ≠ 0), Extract cherche le message d'erreur fixe noDataForExtract dans les flux stderr et stdout. Si la recherche réussi, l'extraction ne reste pas en erreur, la requête est automatiquement annulée et le client est notifié avec la remarque saisie dans le champ "Remarque fixe en cas d'annulation". Si la recherche échoue ou que l'option n'est pas activée, l'extraction reste en erreur et une intervention manuelle est nécessaire.
Un tel comportement peut être déclenché en levant une exception dans Python avec le même message d'erreur "noDataForExtract".
ATTENTION : Si l'option est activée et qu'une absence de données est confirmée, les éventuelles tâches qui suivent l'extraction ne sont pas exécutées.
Critères d'acceptation
| Identifiant |
Description |
| 368-1 |
L'option est intégrée dans les 3 plugins d'extraction telle que décrite dans les maquettes |
| 368-2 |
Pour les 3 plugins, lorsque l'option est activée, que l'extraction est en erreur et que la recherche du message d'erreur noDataForExtract réussi, la requête est annulée et le client est notifié avec la remarque fixe |
| 368-3 |
Pour les 3 plugins, lorsque l'option est activée, que l'extraction est en erreur et que la recherche du message d'erreur noDataForExtract échoue, la tâche reste en erreur |
| 368-4 |
Pour les 3 plugins, lorsque l'option est activée et que l'extraction réussi, la requête continue normalement, même si le message d'erreur se trouve dans un log, en stderr ou stdout |
| 368-5 |
Pour les 3 plugins, lorsque l'option n'est pas activée, l'extraction continue normalement. Elle échoue ou réussi peut importe le contenu dans les logs, en stderr ou stdout |
| 368-6 |
Pour les 3 plugins, l'aide HTML est implémentée telle que décrite ci-dessus |
Contexte
Objectifs
Mieux gérer le cas où une extraction ne génère pas de résultats par absence de données, si possible de manière 100% automatique pour les plugin
Extraction FME Form (Version 2),Extraction FME Flow (Version 2)etExtraction Python.Implémentation
Extraction FME Form (Version 2)
Rajouter une option dépliable (cf. maquette) avec 1 champ obligatoire de type chaîne : "Remarque fixe en cas d'annulation"
Si l'option est activée :
Forcer l'écriture du log de l'extraction FME dans le flux stderr ou stdout (dépend de la version de FME) avec l'argument en ligne de commande
LOG_STANDARDOUT yes. E.g. :Si l'extraction est en erreur (code de sortie ≠ 0), faire une recherche dans les flux stderr et stdout pour trouver le message d'erreur fixe
noDataForExtract. Recherche regex de type.*{message}.*.Si la recherche réussi, la tâche ne reste pas en erreur malgré de code de sortie, la requête est automatiquement annulée et la remarque fixe (champ "Remarque fixe en cas d'annulation") est adressée au client. Si la recherche échoue ou que l'option n'est pas activée, la tâche et donc la requête restent en erreur.
Dans le cas d'une detection d'absence de données réussie, toutes les autres tâches qui suivent l'extraction ne sont pas exécutées.
Exemple de flux stdout avec le message d'erreur "noDataForExtract" : stdout.log
Maquette
https://www.figma.com/proto/eg3st3N9DwGhfdtGXwxvKi/Untitled?node-id=6-18&t=rSmQ3IJf3CgKetgo-1
Aide HTML
Rajouter la section suivante tout à la fin de l'aide du plugin :
Extraction FME Flow (Version 2)
Rajouter une option dépliable (cf. maquette) avec 1 champ obligatoire de type chaîne : "Remarque fixe en cas d'annulation"
Si l'option est activée :
Si le status de la requête POST sur le server FME Flow n'est pas dans les 200 (échec, normalement 422), faire une recherche dans la réponse JSON de la requête dans l'objet
.serviceResponse.statusInfo.messagepour trouver le message d'erreur fixenoDataForExtract. Recherche regex de type.*{message}.*.Si la recherche réussi, la tâche ne reste pas en erreur malgré de code de status, la requête est automatiquement annulée et la remarque fixe (champ "Remarque fixe en cas d'annulation") est adressée au client. Si la recherche échoue ou que l'option n'est pas activée, la tâche et donc la requête restent en erreur.
Dans le cas d'une detection d'absence de données réussie, toutes les autres tâches qui suivent l'extraction ne sont pas exécutées.
Exemple de réponse JSON (status code = 422) avec le message "noDataForExtract" :
{ "serviceResponse": { "jobID": 6, "statusInfo": { "mode": "sync", "message": "FME Flow transformation failed: Terminator: Termination Message: 'noDataForExtract'", "status": "failure" }, "fmeTransformationResult": { "fmeEngineResponse": { "logFileName": "job_6.log" }, "fmeServerResponse": { "request": "...", "jobStatus": "FME_FAILURE", "timeRequested": "Mon-23-Feb-2026 02: 53: 31 PM", "requestKeyword": "FILE_DOWNLOAD_SERVICE", "description": "", "timeStarted": "2026-02-23 02: 53: 31", "requesterHost": "10.0.0.132", "priority": "-1", "result": "798006:Terminator: Termination Message: 'noDataForExtract'|LogFileName=job_6.log", "requesterResultPort": "40209", "resultSuccess": "true", "serviceSuccess": "false", "id": "6", "timeFinished": "2026-02-23 02: 53: 31", "serviceMsg": "" } } } }Maquette
https://www.figma.com/proto/eg3st3N9DwGhfdtGXwxvKi/Extract-v2.4.0?node-id=25-127&t=L0IHhohmg5hUeajV-1
Aide HTML
Rajouter la section suivante tout à la fin de l'aide du plugin :
Extraction Python
Rajouter une option dépliable (cf. maquette) avec 1 champ obligatoire de type chaîne : "Remarque fixe en cas d'annulation"
Si l'option est activée :
Si l'extraction est en erreur (code de sortie ≠ 0), faire une recherche dans les flux stderr et stdout pour trouver le message d'erreur fixe
noDataForExtract. Recherche regex de type.*{message}.*.Si la recherche réussi, la tâche ne reste pas en erreur malgré de code de sortie, la requête est automatiquement annulée et la remarque fixe (champ "Remarque fixe en cas d'annulation") est adressée au client. Si la recherche échoue ou que l'option est désactivée, la tâche et donc la requête restent en erreur.
Dans le cas d'une detection d'absence de données réussie, toutes les autres tâches qui suivent l'extraction ne sont pas exécutées.
Maquette
https://www.figma.com/proto/eg3st3N9DwGhfdtGXwxvKi/Extract-v2.4.0?node-id=30-195&t=L0IHhohmg5hUeajV-1
Aide HTML
Rajouter la section suivante tout à la fin de l'aide du plugin :
Critères d'acceptation
noDataForExtractréussi, la requête est annulée et le client est notifié avec la remarque fixenoDataForExtractéchoue, la tâche reste en erreur