mercredi 2 juillet 2008

Gestion des erreurs dans BPEL 10.1.3x - Error Handling



La gestion centralisée des erreurs en 10.1.3.3 ( Fault Management Framework)


Il s'agit d'un sujet auquel nous avons tous été confrontés lors de la mise en place de projets SOA centrés sur BPEL: la gestion des erreurs. Pour ceux qui l'ont testée, la gestion des erreurs alourdit considérablement les processus en les rendant très complexes voire illisibles. En effet, pour gérer les erreurs, il faut non seulement intercepter les exceptions(catch), mais aussi les traiter(par notifications en général)


Pour rendre, plus lisibles les processus et pouvoir gérer les exceptions par niveau de gravité, il fallait jusqu'à présent imaginer un mécanisme central de gestion d'exceptions dit "Error Hospital". Ce dernier requérait l'écriture d'un Service Web de gestion des erreurs, et une définition(statique) de criticité pour l'exception ainsi interceptée. Toutefois, ce mécanisme, bien que flexible, requérait le redéploiement du processus pour tout changement de priorité et de criticité mais surtout rendait beaucoup moins lisible le processus par un FONCTIONNEL (à cause de la succession de try catch).


Heureusement, la 10.1.3.3 est arrivée!


De nombreuses fonctionnalités y sont intégrées, mais je me focaliserai sur le Fault Policy Framework ici


Qu'est ce que le Fault Policy Framework?
C'est un mécanisme de gestion centralisée des erreurs, essentiellement déclaratif et décoléré de l'implémentation du processus métier en lui-même. Il gère les cas de figure les plus courants i.e.: *Comment gérer des indisponibilités de Service Web? *Comment gérer de manière granulaire un certain type d'exception (type de Faute SOAP et/ou code de la faute) *Quelles actions déclencher le cas échéant i.e. combien de re-essais, comment escalader si la panne perdure, comment forcer la terminaison du processus, comment rejouer la séquence, comment déclencher une intervention humaine, exécuter un programme Java (en effet, c'est un Framework et il est extensible au travers d'une interface: IFaultRecoveryJavaClass ).
Quelle en est la valeur ajoutée?

Le 1er avantage est que ce mode opératoire permet de séparer les aléas opérationnels(coupure réseau, perte de BDD, indisponibilité de Service web etc.) du processus métier.
Le « Fault Policy Framework » permet également une meilleure lisibilité du processus BPEL. De ce fait, il permet de se concentrer sur la gestion des vraies erreurs fonctionnelles dans le design des processus.


Enfin, il permet de gérer à fortiori les erreurs.
On peut mixer la gestion des erreurs dans les processus, avec le Fault Policy Framework ; en effet, compte tenu de la granularité de ce dernier (par opération), on peut limiter son champ d’action et ainsi permettre l’activation de la gestion d’erreurs prévue dans les processus.
Sur le plan opérationnel, la console BPEL permet désormais de débloquer manuellement un processus en erreur : notamment en modifiant dynamiquement les données portant l’appel, en forçant la continuation du processus ou tout simplement en forçant son annulation.

Limitations

Attention, le « Fault Policy Management » ne gère pas les erreurs internes BPEL liées aux :
- mauvaise requêtes xpath
- types non valides dans les appels de fonctions xpath
- mauvais typage de données
etc.
En général, ces erreurs peuvent être décelées lors des tests unitaires ( utilisation de BPEL Tester)
Cas pratique chez un client
Client : XXXXXX
Temps de mise en place : 1J
Principe : Quels que soient les processus, une exception ( perte de réseau, perte de BDD ou Service Web en erreur etc.) devra effectuer au plus 5 essais par intervalles de (2, 4, 8, 16, 32S). Si au bout de ce nombre de tentatives, l’appel est toujours en échec, un mail est envoyé à l’administrateur par l’intermédiaire d’un programme java. A la réception du mail, l’administrateur se connecte sur la console Oracle BPEL et ouvre le processus en cause. Il a alors plusieurs choix possibles : il peut décider de forcer la suite du processus, de modifier les variables d’entrée de l’appel, forcer l’annulation du processus.

Pour aller plus loin…
Le Fault Policy management est l’une des bases de la 11G AS : http://bpel.us.oracle.com/11/index.jsp (site interne Oracle pour ceux qui sont de la maison)
Documentation de référence Oracle 10.1.3.3
http://www.oracle.com/technology/products/ias/bpel/pdf/10133technotes.pdf
Blog AMIS
http://www.it-eye.nl/weblog/2007/09/10/oracle-bpel-10133-fault-policy-management
http://technology.amis.nl/blog/?p=2485

Aucun commentaire: