...
...
...
...
Sommaire | ||
---|---|---|
|
...
|
...
|
Appel de service web en GraphQL
Le GraphQL est un langage de requêtes et un environnement d'exécution open-source qui propose une alternative aux API REST. Il est utilisé, notamment dans des services publics.
Les instructions Diva d'appel de services web permettent de traiter ce type de langage, car les interactions se font avec des couches de niveau basses par les instructions WebRequestxxxx.
Envoi de message GraphQL
Un token doit être stocké par ailleurs.
L’envoi se fait en méthode POST avec transmission du TOKEN et du type dans le Header et le corps du message est MESSAGEBODY dont on trouve deux exemples plus bas.
...
Exemple de message d’interrogation
...
Exemple de message de mise à jour/mutation
...
Modules en surcharge de service web
Tous les services web ont une partie du code plus ou moins importante surchargeable, soit pour le traitement métier ou le mapping de champs.
Modules pour SW REST - WEB SERVICE INFINITY
Code service web | Modules de surcharges | Remarques |
---|
Code service web | Modules de surcharges | Remarques |
---|---|---|
associer_fichier | a5tmswinfinity | Ouvertures |
interrogation_encours | (aucun) | Appel du tunnel via RCPM000 |
integration_ecriture | cctmswinfinity | Ouvertures |
integration_reglement | rctmswinfinity |
|
interroger_stock | gttmswinfinity
gttmmapping | Ouvertures Remplir_Interroger_Stock_Json fait le traitement Mapping de champs existant |
interrogation_ouvrage | (aucun) |
|
integration_dtr | gttmdtr200 | Ouvertures |
interroger_resume_affaire | gatmmapping | Mapping de champs possible |
interrogation_commande | gttmmapping | Mapping de champs existant |
integration_piece | gttmswinfinity gttmmapping | Ouvertures Mapping de champs existant |
integration_equipement | gttmswinfinity gttmmapping | Ouvertures Mapping de champs existant |
Modules pour SW SOAP- SYNCHRO INFINITY AGILEO
Code service web | Modules de surcharges | Remarques |
---|---|---|
interroger_stock | gttmswdav | Remplir_Interroger_Stock fait le traitement |
interroger_resume_affaire | gatmswagil | Remplir_interroger_resume_affaire fait le contrôle |
Surcharge pour Agiléo
Entités Agiléo
...
La réalisation se fait en deux surcharges : une pour aiguiller la demande d'action métier vers un module, l'autre pour traiter la demande!!Mettre DEM et DOS pour que ça marche tout seul
Surcharge pour router vers le module traitement
Pour qu'elles soient traitées par les Web Service Diva existant, il existe une ouverture dédiée vers une fonction
'A5TTSWAGIL / Traitement_specifique' pour a5ppswagil qui correspond a SYNCHRO_INFINITY_AGILEO
'A5TTSWINFINITY / SW_Infinity_JSON_Traitement_specifique' pour a5ppswinfinity qui correspond a WEB_SERVICE_INFINITY
Il faut donc ajouter dans ces fonctions les NOMS D'ACTION métier a traiter en complément du standard, et indiquer dans quel MODULE le traitement se fait.
...
Exemple : on traite ici une nouvelle action métier MAFONCTIONXML qui va faire appel a la fonction MaFonctionXml dans le module A5UMSWAGIL.dhop
...
Surcharge pour le traitement
...
Exemple : on traite ici la partie métier dans A5UMSWAGIL.dhop. La fonction reçoit un xml en entrée et construit un xml de sortie.
Paramétrage SW REST en cas de surcharge de recordSql
Le fichier DhsDivaltoServiceDivaApiRest_ParamERP.xml indique les options du traitement des appels REST de lecture par RecordSql .
Info | |
---|---|
RecordSql ERPPour un appel des recordSql standard ERP Infinity, ce paramétrage n'est pas utille, car le service web RecordSql va charger par défaut les compléments nécessaires. Dans le cas d'une surcharge, il peut s'avérer nécessaire de compléter ce paramétrage | |
language | xml | title |
DhsDivaltoServiceDivaApiRest_ParamERP.xml.xml
Bloc de code | ||
---|---|---|
| ||
<?xml version="1.0" encoding="utf-8"?> <params> <commontables> <!-- <dhoq Name="gtrstab.dhoq" RecordSQL="TABLECOMMUNE" Read="1" /> --> <!--<dhoq Name="pprsdos.dhoq" RecordSQL="PDOSSIER" Read="1" RecordSQLbis="DOSSIER"/> --> <!--<dhoq Name="ccrsdos.dhoq" RecordSQL="DOSEXP" Read="1" /> --> <!--<dhoq Name="qursdos.dhoq" RecordSQL="EXPERT_QUAL" Read="1" /> --> <!--<dhoq Name="gmrsdos.dhoq" RecordSQL="EXPERT_GRM" Read="1" /> --> <!--<dhoq Name="corsdos.dhoq" RecordSQL="EXPERT_CONT" Read="1" /> --> <!--<dhoq Name="dorsdos.dhoq" RecordSQL="EXPERT_DDOC" Read="1" /> --> <!--<dhoq Name="gtrsdos.dhoq" RecordSQL="DOSSIERCRM" Read="1" /> --> <!-- <dhoq Name="wmrstab.dhoq" RecordSQL="TCOMMUN" Read="1" /> --> </commontables> <commonfields> <!--<field Name="DOS" /> --> <!--<field Name="DOSCPT" /> --> <!--<field Name="ETB" /> --> <!--<field Name="DEPO" /> --> </commonfields> <commonoptions> <!-- <namepathobjets Value="Objets" /> --> <!-- <namefileimplicites Value="ImplicitesDefaut.xml" /> --> <!-- <namefileconnexions Value="connexions.xml" /> --> <!-- <userdhoq Value="a5rsdos.dhoq" /> --> <!-- <userrecordsql Value="UTILISATEUR" /> --> <!-- <userwhere Value="Equal_User" /> --> <!-- <userwherefield Value="USERX" /> --> <!-- <authdhoq Value="a5rsdos.dhoq" /> --> <!-- <authrecordsql Value="APPLIAUTORIS" /> --> <!-- <authwhere Value="Equal_Userx" /> --> <!-- <authwherefield Value="USERX" /> --> <!-- <authfieldapplic Value="APPLIC" /> --> <!-- <namerecordmz Value="MZ" /> --> </commonoptions> </params> |
...
Chaque ligne comporte :
le nom du dhog,
le nom de la table
read
1 => lire la table
0 => il n’y a pas de lecture de la table, cela sert si on veut désactiver une ligne mais sans perdre l’information que contenait cette ligne
RecordSQLbis => selon la version de l’erp ,le nom de la table à changée, si la table recordsql n’existe pas alors le moteur fait la recherche sur la table record sql bis
Balises COMMONFIELDS
Liste des champs que l'on souhaite charger en plus dans les recordsql pour avoir la bonne valeur par exemple MZ.DOS = ‘xxx’
...
Info |
---|
Le paramétrage dans ce fichier est optionnelest optionnel. Par défaut lors d'un appel du service web (qui se fait avec indication de l'environnement), les données de description des environnements sont chargées à partir de la base de registre windows. |
Il est possible de gérer les environnements en dehors du mode regedit en mettant les valeurs des description des environnements
La requête d’authentification indique un environnement et le service web REST charge les valeurs de l’environnement
...
<env Value="ERP215" Forcer="1" />
</envs>
</params>
Name ou Value indique le nom de l’environnement
Path indique la ligne qui est comme celle qui est dans regedit au chapitre environnement
Avec on peut mettre
Default="1" ;indique l’environnement par défaut si la requête ne contient pas d’environnement
Ou bien ( mais pas les deux ca n’a pas de sens )
Forcer="1" ;indique qu’on veut toujours forcer l’environnement, le champ qui provient de la requête est ignoré et il est toujours remplacer par celui qui est écrant dans Name ou Value .
DhsDivaltoServiceDivaApiRest_ListENV.xml
Bloc de code | ||||
---|---|---|---|---|
| ||||
<envs> <!-- <env Name="ERP213" Path="xxxxxxx,null,null," Default="0" /> --> <!-- <env Name="ERP214" Path="xxxxxxx,null,null," Default="1" /> --> </envs> |
Développement WebHook
Depuis une exécutions sur le serveur, un programme diva peut connaitre des informations de paramétrage, comme le numéro de webhook pour une action de service et inversement.
Bloc de code |
---|
public function char GetWebHookAction (action,&err)
;permet de récupérr le code webhook à partir d'un code action service web
1 action A
1 err X
public function char GetWebHookActionNext (&err)
;permet de récupérer le suivant après un appel à GetWebHookAction lorqu'il y a plusieurs webhook pour la même action
1 err X |
Bloc de code |
---|
public function char GetActionWebHook(webhook,&err)
;permet de connaitre l’action qui est définie sur un numéro de webhook
1 webhook A
1 err X |
Bloc de code |
---|
public function char GetWebHookUrl(serveur,port,service,webhook,modehttps)
;construit le lien url en fonction du numéro de webhook et du paramétrage
1 serveur A
1 port 6,0
1 service A
1 webhook A
1 modehttps x = FALSE |
Il est possible d’appeler directement un webhook avec les instructions WebRequest
...