Bonjour,

Je travaille sur un projet d'exécution d'un moteur de workflow.
Mon workflow est une succession de services informatiques de telle sorte que la sortie de chaque web service servira comme une entrée pour le service suivant.
On récupère les input à partir des fichiers XML, instances des XSD relatives au WSDL du web service.

L'idée est de faire un programme Java générique (pour tout web servie)
qui prend en entrée un fichier XSD (l'XSD du service web) et un fichier de données XML et retourne les input du web service.

Pour cela, il faut parcourir le XSD, récupérer les paramètres des input (qui doivent être normalement des éléments de types simples) et puis chercher les instances de ces paramètres dans le XML.

Par exemple, j'ai le web service qui fait la concaténation de deux chaînes de caractères :
Le fichier XSD
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI at <a href="http://jax-ws.dev.java.net/" target="_blank">http://jax-ws.dev.java.net</a>. RI's version is JAX-WS RI 2.1.6 in JDK 6. -->
<xs:schema xmlns:tns="http://explicitsoapmessageclient.lisi.ensma.fr/"
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           version="1.0" 
           targetNamespace="http://explicitsoapmessageclient.lisi.ensma.fr/">
 
<xs:element name="Concat" type="tns:Concat"></xs:element>
 
<xs:complexType name="Concat">
<xs:sequence>
<xs:element name="arg0" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="arg1" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
Et l'instance XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<concat xmlns:tns="http://explicitsoapmessageclient.lisi.ensma.fr/"
        xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        version="1.0" 
        targetNamespace="http://explicitsoapmessageclient.lisi.ensma.fr/">
 
    <arg0>toto</arg0>
    <arg1>titi</arg1>
</concat>
Les paramètres du XSD sont ici "arg0" et "arg1" et les données input sont "toto" et "titi".

J'utilise l'API JDOM pour le parcours des XML.

Je ne vois pas comment je peux faire un programme générique qui me donne les paramètres d'entrées des services web à partir des XSD.

Quelqu'un aurait-il des idées ou des bouts de codes ?

Merci