Client de bases externes : connecteur SOAP
Un connecteur d'accès à une base externe de type SOAP (ou web services) nécessite de connaître les possibilités proposées par la base cible. Certains serveurs permettent de connaître les possibilités offertes via un document de description : WSDL. Un web service est conçu pour que deux logiciels conversent entre eux. Aussi, si vous avez le choix entre http/html et web service pour interroger un serveur, préférez la solution web service. De plus, vous aurez probablement de meilleures performances. et plus de sécurité dans le découpage des informations reçues.
Afin de paramètrer correctement un connecteur SOAP vous devez avoir défini des champs de recherche et des champs apparents dans votre application.
Il est possible de manipuler un connecteur SOAP par programmation afin de, par exemple, provoquer la mise à jour de vos données à partir de données en provenance d'une autre source (exemple : script-batch de mise à jour de la table des personnes à partir de l'application de gestion des ressources humaines).
Dialogue de réglage
Le réglage d'un connecteur SOAP s'effectue en deux étapes. La première consiste à indiquer les coordonnées du serveur cible et la manière dont la question est posée. La deuxième consiste à indiquer comment analyser la structure du résultat afin d'en isoler les enregistrements et les champs.
Coordonnées du serveur et construction d'une requête

Connexion au serveur, construction de la requête
A propos de cet exemple : le connecteur décrit ci-dessus utilise l'API SOAP de Google. Il n'est plus possible d'obtenir de la part de Google une nouvelle clé, cependant le service reste actif pour les clés qui ont été générées avant la fermeture du service (ce qui est le cas de celle utilisée par le connecteur décrit ici).
Informations serveur
1 Informations fournies par l'administrateur du serveur
Paramètres SOAP
2 A partir de la lecture du WSDL ou des informations fournies par l'administrateur
Les données XML qui seront constituées à partir de ces éléments sont saisies / structurées à partir des valeurs de ces paramètres. Si une valeur doit être alimentée à partir d'une valeur saisie dans un écran de recherche, sélectionnez le champ correspondant à l'aide du pop-up situé à droite de la zone (point rouge) ou bien saisissez le directement. Lors d'une recherche libre (ne mettant en jeu qu'une zone de saisie comme dans l'explorateur de données par exemple), saisissez $$KV_Query ou $$KV_Query_Any. Pour chaque paramètre transmis, son type doit être indiqué. Sélectionnez le à l'aide du pop-up apparaîssant en cliquant sur le point bleu situé à droite de la zone correspondante.
Paramètres de recherche
3 Ces données doivent être saisies afin de pouvoir tester la requête et poursuivre l'analyse.
Pour chaque critère de recherche (un seul dans l'exemple ci-dessus), vous pouvez indiquer une valeur à rechercher. Pour cela, sélectionnez la valeur dans le tableau et saisissez-la dans la zone située sous le tableau.

Saisie de plusieurs critères de recherche
Tester la requête
4 Lancer l'exécution de la requête et la visualisation du résultat
Le résultat (toujours en XML) est analysé et présenté dans le tableau à trois colonnes : étiquette / attributs / valeur.
Paramètres par script
5 Alimenter ou modifier un ou plusieurs paramètres par programmation
L'écriture d'un script nécessite des connaissances en programmation.
Le tableau contenant les intitulés des paramètres a pour nom TT_Titre ; celui contenant les valeurs a pour nom TT_Ligne. Lors de l'exécution d'une requête, un connecteur est appelé tant que la valeur BxStop a la valeur faux, sachant que cette valeur est placée à vrai lors de chaque appel. Lors du premier appel, la variable ELDeb prend la valeur -1. Il convient ensuite d'en modifier la valeur pour l'utiliser, par exemple, comme compteur courant.
Dans l'exemple ci-dessous, le paramètre "start" est incrémenté de 10 à chaque itération et l'on appelle le connecteur tant que le nombre d'item trouvé (Lx1) n'est pas atteint ou bien est supérieur ou égal à 100.
Paramètres par script
Si (ELDeb>0)
Ex:=Chercher dans tableau(TT_Titre;"start")
TT_Ligne{Ex}:=Chaine(ElDeb)
Fin de si
Script sur résultat
Ex:=Chercher dans tableau(TT_Info11;"@estimatedTotalResultsCount@")
Si (Ex>0)
Si (ElDeb=-1)
ElDeb:=0
Fin de si
Lx1:=Num(TT_Info12{Ex})
Si (ElDeb<Lx1) & (ElDeb<100)
BxStop:=Faux
ElDeb:=ElDeb+10
Fin de si
Fin de si
Ce2:=Taille tableau(TT_Info12)
Boucle (Ce1;1;Ce2)
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};"<b>";"")
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};"</b>";"")
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};"<br>";<>ACR)
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};">";">")
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};"<";"<")
Fin de boucle
Analyse du résultat
6 La requête s'est bien déroulée, on passe à l'analyse du résulat.
Dialogue d'analyse du résultat

Ecran de "balisage" du résultat
Dernière étape : placer les balises de découpage des enregistrements. Un fichier XML contenant des enregistrements comporte une étiquette d'enregistrement puis des sous-étiquettes de champs. Dans l'exemple ci-dessus, l'étiquette "item" correspond à un enregistrement. On place donc en regard la balise de début d'enregistrement "$$KV_Record_Begin". Tout ce qui sera compris entre une telle balise et la suivante sera ensuite considéré comme faisant partie d'un même enregistrement.
Présentation du résultat
1 Etiquette du fichier présentée sous forme indentée
2 Attributs et valeurs
3 Balises
Balisage
4 Affectation d'une balise à une étiquette
En affectant une balise à une étiquette, le fichier est ré-analysé et les enregistrements extraits présentés dans le tableau situé juste en dessous
Enregistrements trouvés
5 Les données extraites du résultat sont présentées sous la forme d'enregistrements
En cliquant sur une ligne du tableau, son contenu est affiché dans la zone située à droite de ce dernier.
Script sur résultat
6 Intervention sur les lignes du tableau et avant découpage en enregistrements
Un script sur résultat va permettre de gérer la pagination (cf. ci-dessus) et, éventuellement, appliquer des transformations directement dans les valeurs extraites du fichier XML et avant la constitution des enregistrements. Dans l'exemple ci-dessous, les balises <b> et </b> sont effacées ; le signe > remplacé par > ; le signe < remplacé par < ; la balise <br> est remplacée par un retour à la ligne.
Ce2:=Taille tableau(TT_Info12)
Boucle (Ce1;1;Ce2)
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};"<b>";"")
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};"</b>";"")
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};"<br>";<>ACR)
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};">";">")
TT_Info12{Ce1}:=Remplacer chaine(TT_Info12{Ce1};"<";"<")
Fin de boucle
NB : les étiquettes XML se trouvent dans le tableau TT_Info11 et les valeurs dans le tableau TT_Info12.
Connecteur sur une application "Kentika"
Si une "base amie", utilisant la même application que la votre, est accessible en web service, il est possible d'exploiter les web services proposés en standard afin de l'interroger voire de récupérer son contenu.

Connecteur de recherche sur la table document, restreinte aux documents de type "Roman"
Pour plus d'informations sur les web services proposés en standard (ou ceux élaborés par l'application serveur que l'on adresse), reportez-vous à la fiche correspondante ou bien demandez à l'administrateur quels sont les web services qui ont été mis en place.
Powered by KENTIKA Atomic - © Kentika 2020 tous droits réservés - Mentions légales