Ce billet comporte un exemple permettant d’afficher dans des formulaires K2 des informations relatives aux pays (liste des pays, des monnaies, informations sur la population, la langue, la capitale etc.) en s’appuyant sur un service disponible publiquement.
Raphaël vous parlait précédemment du fonctionnement et de l’utilisation du connecteur REST permettant des intégrations avec beaucoup d’outils qui exposent leur service ainsi.
S’il est vrai qu’il n’y a pas de développement à faire côté K2, il est quand même nécessaire de disposer d’un fichier Swagger qui va décrire le service et s’il doit être construit, cela peut paraître un peu indigeste pour les citizen developers.
Pour faciliter ceci, le site communautaire de K2 vient d’inaugurer une nouvelle catégorie qui permet le partage et/ou le référencement de fichiers Swagger existants.
Nous allons voir dans ce billet comment utiliser ces ressources, en se basant sur un service REST qui peut être pratique et qui propose de retrouver diverses informations sur les pays du monde entier (code ISO, capitale, monnaie, langue, région, pays frontaliers, population…). Ce service est disponible sur le site restcountries.eu, mais le site ne propose pas de fichier Swagger accessible publiquement, donc nous pouvons remercier Igor qui a partagé sa création sur community.k2.com.
Récupération du .json
Si le fichier Swagger (.json) n’est pas accessible publiquement ou si vous souhaitez utiliser la version disponible sans bénéficier des éventuelles mises à jour, il suffit de récupérer son contenu (c’est un fichier texte). Dans le cas du projet d’Igor, vous pouvez récupérer le fichier json depuis la page du projet, en utilisant la fonction export sur la droite.

Vous obtenez alors un fichier .zip qui contient, entre autres, un fichier nommé swagger.json. Ce fichier correspond à la description du service que l’on retrouve également dans la partie gris foncé de la page ci-dessus.
Si vous utilisez une version K2 Five, déposez ce fichier sur le système de fichiers de votre serveur K2. Si vous utilisez une version K2 Cloud, il faudra rendre ce fichier accessible via une URL publique afin que votre tenant K2 puisse y accéder.
Configuration du service REST
Maintenant que le fichier swagger est disponible, il reste simplement à le référencer au niveau de votre serveur/tenant K2. Pour cela, direction le K2 Management Site, partie Integration
> Service Instances
. On ajoute alors une nouvelle instance en cliquant sur le bouton Add
, on choisit un nom d’affichage, une description et le Service Type
REST
:

Puis dans les paramètres plus spécifiques au service type sélectionné, il suffit de mettre l’adresse d’accès au fichier .json (une URL dans le cas de K2 Cloud, ou une URL ou un chemin local dans le cas de K2 Five) au niveau du champ Descriptor Location
. Vous pouvez aussi cocher la case Generate Smartobjects for this Service instance
afin que K2 vous génère l’ensemble des smartobjects relatifs à l’utilisation du service.

Après avoir validé, vous aurez un message de confirmation :

Puis on pourra constater la structure de smartobjects qui a été générée pour l’occasion dans la catégorie REST
(uniquement si vous avez demandé la génération automatique) :

Utilisation des smartobjects
Nous n’allons pas rentrer dans le détail de l’utilisation de chacune des propriétés renvoyées par ce service, mais voici quelques exemples.
1ère étape, créons une vue avec un contrôle auto-complete
qui affiche la liste de tous les pays (leur nom standard et leur nom natif) :

Il y a simplement à configurer la source de données du contrôle pour utiliser le smo GetAll
(smo principal de ce service) avec les paramètres suivants :

Améliorons à présent notre vue pour récupérer des informations sur le pays sélectionné :

On améliore notre vue en ajoutant une règle sur le changement de valeur du contrôle auto-complete :

Un transfer data
pour les données simples :

Puis le passage par l’appel d’une méthode de smartobject supplémentaire pour les données qui sont serializées (Currency et Language dans l’exemple). Pour celles-ci, il faudra utiliser la méthode Deserialize Typed Array
de l’objet concerné et passant en entrée la valeur serializée :

En espérant que vous trouverez pleins d’autres services REST intéressants sur l’espace communautaire de K2.
Happy K2ing!