Comment pousser la validation des requêtes soap encore plus loin avec Schematron ?

Le schematron permet la validation d’un document XML, grâce à un ensemble d’assertion. Contrairement aux schémas XSD ou DTD, le schematron n’est pas adapté pour la validation grammaticale. Cependant, il permet d’imposer des contraintes métier qu’il est difficile, voire impossible, de définir avec les schémas. Il est généralement utilisé en complément d’un schéma.

Dans cet article nous allons expliquer comment utiliser un schematron dans Oracle SOA Suite 11g, pour implémenter une validation métier, difficile à implémenter avec un simple schéma XSD.

 

 

Construire le schematron

Dans notre cas d’usage, nous allons essayer de valider les critères de recherche de client.

Ci-dessous le schéma xsd des CriteresRechercheClient :

schematron-1

Pour éviter de surcharger notre base de données, nous allons limiter les possibilités de recherche à l’un des cas suivants :

  • Renseigner l’idClient.
  • Renseigner  le Nom et le Prenom.
  • Renseigner la dateMin et la dateMax de création.

Ci-dessous le schematron « ControleCriteresRechercheClient » :

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.ascc.net/xml/schematron">
<ns uri="https://easyteam.fr/ESOA/client" prefix="clt" />
<ns uri="https://easyteam.fr/ESOA" prefix="easy" />
<pattern name="Contrôle de la cohérence des critères de recherche des clients">
<rule context="/clt:RechercheClientRequest/easy:CriteresRechercheClient">
<assert test="count(easy:NumeroClient) = 1 or (count(easy:Nom) = 1 and count(easy:Prenom) = 1) or (count(easy:DateMax)= 1 and count(easy:DateMin) = 1)">Pour la recherche client, il est nécéssaire de renseigner au moins le numéro du client ou le nom et le prénom du client ou l’intervalle de la date de création du client (dateMin et dateMax).</assert>
</rule>
</pattern>
</schema>

Implémentation du schematron

L’implémentation d’un schematron se fait au niveau du Mediator,  cliquer sur  « Select schematron validation file », puis choisir le schematron à appliquer à votre requête d’entrée.

Ainsi, lors de l’appel à votre service de recherche client, si les critères de recherche ne correspondent pas aux règles décrites dans le schematron,  le client recevra le message d’erreur suivant « Pour la recherche client, il est nécessaire de renseigner au moins le numéro du client ou le nom et le prénom du client ou l’intervalle de la date de création du client (dateMin & dateMax). »

Conclusion

Nous avons vu dans cet article un cas d’utilisation simple des schematrons, afin de démontrer la puissance et la simplicité d’utilisation de cet outil, qui peut s’avérer très intéressant à utiliser dans le cas des validations métiers simples ou complexes.