Dans ce court article, je vous présente une fonctionnalité toute simple mais bien pratique et qui peut faire gagner beaucoup de temps : la possibilité de sauter une activité BPEL sans rajouter de code (ou presque).
Extrait de la documentation :
Oracle provides an extension that enables you to specify an XPath expression in an activity in BPEL versions 1.1 and 2.0 that, when evaluated to true, causes that activity to be skipped. This functionality provides an alternative to using a switch activity for conditionally executing activities. The skip condition for activities is specified as follows:
<activity bpelx:skipCondition="boolean-expr"/>
Cas simple d’utilisation
Imaginez que vous ayez terminé la conception (sur papier) d’une procédure BPEL dans laquelle se suivent 3 appels indépendants à différents Web Services. Vous faites votre développement et souhaitez le tester mais l’un des 3 WS n’est pas encore déployé car encore en cours de développement.
Vous rencontreriez systématiquement une erreur à l’étape 2 vous empêchant de tester l’étape 3.
Vous avez plusieurs possibilités :
- Attendre que le WS soit déployé pour commencer à tester entièrement votre procédure
- Tester l’étape 1 et attendre de pouvoir tester l’étape 2 avant de tester l’étape 3
- Brancher l’étape 2 sur un MockService créé dans SoapUI
- Retirer l’étape 2 de votre développement afin de tester et valider les étapes 1 et 3
- Ajouter une « skip condition » sur l’étape 2 le temps qu’elle soit disponible pour tester le plus possible votre procédure
Dans le cas 1, vous réalisez 0/3 de la recette de votre procédure.
Dans le cas 2, vous réalisez 1/3 de la recette de votre procédure.
Dans les cas 3 et 4, vous réaliser 2/3 de la recette mais avez ou reportez une charge supplémentaire.
Dans le cas 5, vous réalisez 2/3 de la recette sans charge supplémentaire.
Je ne considère pas la « skip condition » comme une charge supplémentaire tant il est simple et rapide de la mettre en place.
Selon moi, le choix n°5 est le plus simple à réaliser, le moins chronophage et celui qui présente le plus faible risque d’erreur puisque vous n’aurez pas à revenir sur votre développement :
- vous pouvez développez entièrement votre procédure
- vous n’aurez pas à revenir sur votre développement plus tard
- vous n’aurez qu’à retirer la « skip condition » (en 3 secondes montre en main)
- vous pouvez déjà tester les étapes 1 et 3 puisqu’elles sont disponibles
- vous n’avez pas à développer de MockService (pas de charge supplémentaire)
Mise en oeuvre
Contexte : j’ai développé une procédure BPEL à 5 étapes, la première étape ne peut pas être testée tout de suite et m’empêche de faire la recette du reste de la procédure alors qu’il ne dépend pourtant pas de cette première étape.
En suivant le choix n°5, je positionne facilement une « skip condition » sur la première étape afin de réaliser malgré tout 4/5 de la recette de ma procédure.
La première étape est dans un Scope nommé ScopeCoordonnee que je souhaite donc sauter. On ouvre les propriétés du Scope et dans l’onglet Skip Condition on entre une expression qui renvoie toujours vrai :
Il apparaît clairement dans la console que la première étape a été sautée, et je peux contrôler que le reste de la procédure fonctionne :
Voilà pour ce petit zoom sur une fonctionnalité peu utilisée mais bien pratique dans ce genre de cas !