Pour comprendre le fonctionnement des services web avec Divalto, voici un schéma illustré avec des notions simples sur le traitement d'un courrier papier.
...
Courrier métier
Le demandeur rédige un message pour le service métier auquel il s'adresse, par exemple une lettre de réclamation adressée au service client de l'entreprise.
Ce message, portant un objet, est mis sous enveloppe et placé dans un colis de transport.
Le colis de transport va utiliser un moyen de transport pour entrer dans l'entreprise identifiée par son adresse, par exemple Cedex 1.
L'enveloppe est sortie de son colis pour être remis au service courrier de l'entreprise.
Le service courrier ouvre l'enveloppe, extrait l'objet et dépose le message au service métier selon l'objet de la lettre.
Le service métier exploite le message et effectue son traitement, et apporte une réponse au demandeur.
Formulaire de demande de données
Le demandeur remplit un formulaire de demande de données
Le formulaire va utiliser un moyen de transport pour entrer dans l'entreprise par un accès dédié RECORSQL
Le service RECORDSQL recherche les données, et renvoie les données au demandeur
et son parallèle sur le traitement d'un appel de service web
...
Service web métier
Le demandeur construit un message pour le service web métier auquel il s'adresse, par exemple un message de création d'évènement CRM.
Ce message, portant une action, est enveloppé selon le protocole de transport cible par des balises XML ou JSON, et placé dans un flux complet XML ou JSON.
Le flux complet XML ou JSON va utiliser un protocole de transport via l'URL du serveur web pour entrer l'action de service web Harmony.
L'enveloppe XML ou JSON est sortie du flux complet pour être remis à l'action de service web, par exemple SYNCHRO_INFINITY_AGILEO.
L'action de service web extrait de l'enveloppe XML ou JSON l'action métier, et dépose le message au traitement Diva métier selon l'action.
Le traitement Diva métier exploite le message et effectue son traitement, et apporte une réponse au demandeur (format XML ou JSON selon le service métier).
Service API Recordsql
Le demandeur remplit une de demande de données au format JSON
Le flux JSON va utiliser un protocole de transport REST via l'URL du serveur API Recordsql pour un traitement natif
L'API RECORDSQL recherche les données en exécutant une requête SQL , et renvoie les données au demandeur (format JSON)
Il faut bien distinguer les 5 éléments qui entrent dans un dialogue service web ou API.
1. Le MESSAGE
Le MESSAGE doit être dans le format attendu pour l'exécution d'une ACTION METIER.
...
Pour connaître les messages, il faut consulter la documentation concernant les actions métier
Astuce |
---|
Action et ParamTous les messages vers Divalto ont nécessairement 2 parties:
|
2. Le MODE DE TRANSPORT
Le MODE DE TRANSPORT impose une technologie aux échanges, notamment tout ce qui enveloppe le message (authentification, format, styles, schémas)
...
Astuce |
---|
Il est recommandé d'utiliser le mode de transport REST qui permet une authentification de l'appelant. Cette authentification est une action préalable a l'appel du service web afin d'obtenir un TOKEN joint à l'appel |
3. Le SERVICE IIS
Le SERVICE IIS est le composant qui permet d'exposer des services web sur internet ou sur le réseau de l'entreprise.
...
un SOAP, sous la forme http://localhost:8080/WebServiceDiva/webservicediva.asmx
un REST, sous la forme http://localhost:8080/DhsDivaltoServiceDivaApiRest/api/v1/WebService/
Chacun de ces services a son propre paramétrage, et nécessite une installation préalable.
...
Sur un poste Windows, Internet Information Service est une fonctionnalité a activer
...
4. Le SERVICE WEB HARMONY - Action de service web (pour un service métier uniquement)
Le SERVICE WEB HARMONY, ou action de service web, fait l'intermédiaire entre le SERVICE IIS et le traitement Diva indiqué dans le paramétrage harmony des actions de services web.
...
Le service web harmony SYNCHRO_INFINITY_AGILEO, qui fait appel au traitement générique A5PPSWAGIL.DHOP, et qui a été développé historiquement en mode SOAP
Le service web harmony WEB_SERVICE_INFINITY, qui qui fait appel au traitement générique A5PPSWINFINITY.DHOP, et qui a été développé en mode REST
Info |
---|
NommageLe respect des noms des services web Divalto standards (SYNCHRO_INFINITY_AGILEO et WEB_SERVICE_INFINITY) permet de les mettre en oeuvre plus facilement, car les interactions au sein de Divalto Infinity ERP ou avec Weavy ou Agiléo Divalto CRM sont prévues pour passer par défaut par ces noms de services. Cependant, il est possible de leur attribuer un autre nom, tout en conservant le traitement générique (.DHOP) qui est associé. |
...
on peut appeler un service web métier qui attend un message XML depuis un transport REST
on peut appeler un service web métier qui attend un message JSON depuis un transport SOAP
Astuce |
---|
RecommandationPour des raisons de sécurité, depuis Infinity 10.5 et le Runtime Harmony 406, il est recommandé d'utiliser le mode de transport REST qui permet une authentification. Les anciens services web métier, développés pour recevoir un message au format XML, peuvent être appelés dans ce mode REST a condition que le message reste sous format XML/HMP et que l'appelant gère l'authentification |
5. Le TRAITEMENT DIVA / ACTION METIER
5.1 Pour un service métier
L'ACTION METIER est réalisée par un TRAITEMENT DIVA qui va exploiter la partie PARAM du MESSAGE.
Le traitement exploite donc directement le PARAM reçu pour effectuer le traitement métier demandé par l'appelant.
Astuce |
---|
Services métier standardsLes traitements génériques (A5PPSWAGIL.DHOP et A5PPSWINFINITY.DHOP) associés aux services métiers standards fournis avec Infinity l’ERP ont la particularité d'être des points d'entrée uniques. Ils bénéficient donc d'un système de routage pour re-orienter vers un module Diva spécialisé dans un métier (par exemple en gestion commerciale, en paie,...) Ce routage se fait par la balise <ACTION> qui est contenue dans la partie PARAM du message, par exemple <ACTION>interroger_stock |
5.2 Pour un service API Recordsql
Le traitement est effectué directement par l'API RecordSql, avec exécution d'une requête SELECT dans la base de donneés.
Cette requête utilise la couche d'accès aux données que sont les RecordSql Diva.
5.3 Pour un service WebHook
Le WebHook est un autre mode d'exposition d’un service web. Toute la mise en œuvre des services web SOAP ou REST et d’une action de service sont donc requis au préalable.
...