Altova FlowForce Server 2024 Advanced Edition

Une tâche FlowForce classique retourne un résultat uniquement une fois quetoutes les étapes de traitement ont été terminées, et dans le cas où aucune erreur n’est survenue. Pour les tâches configurées en tant que services Web, cela signifie que la transaction HTTP doit rester ouverte pour toute la durée de l’exécution de la tâche, ce qui peut prendre plusieurs minutes ou même plusieurs heures dans certains cas, selon le volume des données traitées. Pour gérer ces cas de manière plus efficace, vous pouvez créer des étapes reportées.

 

Les étapes reportées ont lieu uniquement après le traitement de toutes les étapes non reportées et la tâche est retournée comme résultat. Bien qu’une tâche avec des étapes reportées peut retourner un résultat rapidement, la tâche est considérée en cours de traitement jusqu’à ce que l’exécution de toutes les étapes reportées ait été Terminer.

 

Ajouter une Étape à reporter

Vous pouvez créer des étapes reportées à tout endroit de la tâche lorsqu’une étape est autorisée. Pour ajouter un étape reportée, suivez les étapes suivantes :

 

1.Créer une nouvelle tâche ou ouvrez une tâche existante.

2.Cliquez sur le bouton nouvelle étape Reportée dans la section Étapes d’exécution.

3.Cliquez sur add à l’intérieur du bloc Reporter pour ajouter une étape ou plusieurs étapes qui seront reportées.

 

Dépendant de vos besoins professionnels, vous pouvez créer des blocs Étapes d’exécution, Choisir, For-Each et Erreur/ gestion erreur à l’intérieur d’un bloc Reporter. Vous pouvez également imbriquer d’autres blocs Erreur/Succès à l’intérieur du bloc Erreur/Succès.

 

Gestion d'erreur

Une tâche peut contenir de multiples blocs Reporter (chacun contenant une étape ou plusieurs étapes à reporter) à différents endroits dans la tâche. Créer des étapes reportées peut être utile pour la gestion d’erreur : Si une erreur se produit dans le cadre d’une séquence reportée, d’autres étapes dans la tâche ne seront pas touchées. Vous pouvez aussi imbriquer des séquences reportées. Un bloc reporté est comme une mini-tâche et se comporte de la même manière qu’une tâche régulière :

 

Si une étape avec un bloc reporté rencontre une erreur, l'étape sera annulée, de pair avec toutes les étapes ultérieures éventuelles contenues dans la même séquence reportée, et l’erreur sera journalisée.

Les blocs reportés ne s’influencent pas mutuellement. Dans une tâche avec de multiples séquences blocs, une séquence bloc sera exécutée même si la bloc reportée précédente résulte en un échec.

Si une étape reportée dans un bloc protégé rencontre une erreur, cela annulera toutes les étapes reportées qui font partie de bloc.

 

Scénarios possibles

Les sous-sections ci-dessous illustrent quelques scénarios possibles d’étapes.

 

Tâche avec plusieurs étapes reportées

L’exemple de tâche ci-dessous sera exécutée dans l’ordre suivant : A, C, B, D. Les étapes non-reportées sont exécutées en premier, suivies des étapes reportées. L’Étape C retourne un résultat.

 

A

postpone B

C

postpone D

 

Étapes reportées au sein des étapes Choisir

Vous pouvez aussi ajouter des étapes reportées aux étapes Choose. Dans ce cas, l’étape reportée sera exécutée uniquement si la branche when ou otherwise respective est exécutée également.

 

when expression=true

{

 postpone A

 B

 C

}

otherwise

{

 postpone D

 E

 F

}

 

Dans cette tâche, si l’expression est true, les étapes seront exécutées dans l’ordre suivant : B, C*, A. Sinon, l’ordre d’exécution sera : E, F*, D. L’astérisque indique les étapes qui retournent les résultats.

 

Étapes reportées dans les étapes For-Each

La tâche exemple ci-dessous affiche une étape For-Each dans laquelle les étapes reportées seront traitées après les étapes non-reportées, dans le même ordre que la boucle dont elles font partie.

 

for each item in list

{

 A

 postpone B

}

 

Par exemple, si la boucle passe trois fois, les étapes ci-dessus se trouveront exécuter dans l’ordre suivant : A1, A2, A3*, B1, B2, B3. Le nombre indique le nombre de boucles. L’astérisque indique une étape qui retourne un résultat.

 

Étapes reportées imbriqués dans des étapes reportées

Vous pouvez aussi imbriquer des étapes reportées dans d’autre étapes reportées (voir la liste de code ci-dessous). Dans ce cas, les étapes extérieures de la même profondeur sont traitées d'abord et les étapes reportées imbriquées seront exécutées une fois leur séquence parent terminée. Dans notre exemple de tâches dans FlowForce, les étapes seront exécutées dans l’ordre suivant : A, G, N, B, D, F, C, E, H, K, M, J, L. L’Étape N retourne un résultat.

 

A

postpone

[

 B

 postpone C

 D

 postpone E

 F

]

G

postpone

[

 H

 postpone J

 K

 postpone L

 M

]

N

 

Si vous souhaitez créer et tester des configurations avancées comme celle ci-dessus, vous pouvez toujours tracer l’ordre d’exécution des étapes depuis le log.

 

Exemple

L’exemple ci-dessous illustre un scénario possible dans lequel les étapes reportées peuvent être utiles. Cette tâche est exécutée en tant que service Web et peut être invoquée à tout moment par un client, y compris depuis le navigateur.

 

Étape A exécute une commande shell chronophage qui recense récursivement tous les répertoires et fichiers dans un vaste répertoire de système. Pour cette raison, l’Étape A est définie en une séquence reportée. Étape B prend la sortie standard (stdout) produite par A et la rédige dans un fichier. L’Étape B dépend de la sortie produite par A et doit donc également faire partie de la séquence reportée. Étape C informe les appelants du service que la tâche a été soumise avec succès. Dès que le service Web est appelé, les étapes ci-dessus seront exécutées dans l’ordre suivant : C, A, B. La raison est que A et B sont des étapes reportées, donc C sera exécutée la première.

 

L’avantage de cette configuration est que la tâche retourne le résultat immédiatement après avoir exécuté l’étape C, et la transaction HTTP peut se terminer, libérant ainsi des ressources de serveur pour d’autres requêtes. Après le retour du résultat de la tâche, FlowForce continuera à exécuter les étapes reportées A et B.

 

Lorsque vous invoquez une tâche dans votre navigateur, le message Tâche a été soumise avec succès apparaîtra dans le navigateur. En même temps, la tâche continue à être exécutée jusqu’à ce qu’elle crée output.txt. Si ni A ni B n’échoue, le fichier de sortie sera créé dans le chemin suivant : C:\FlowForce\Postponed\output.txt.

fs_postponed_step

Note sur le tri de l’étape

Dans notre exemple, l’Étape C doit être la dernière dans la tâche, car l’étape sort le résultat dans le navigateur. Si vous déplacez l’étape C tout en haut, elle sera toujours exécutée la première, et l’étape B reportée sera toujours la dernière à être exécutées de la tâche. Néanmoins, cela pourrait influer sur le résultat de la tâche et le navigateur afficherait des sorties vides semblables à []. La raison est que le résultat d’une tâche est toujours le résultat de la dernière étape exécutée. Des étapes reportées n’ont pas de valeur de retour mais produisent une séquence vide à la place.

 

© 2018-2024 Altova GmbH