Le Webservice SQL de Logistics/Flex se base sur les données répliquées par le Module Synchro SQL dans la base de données de SQL Server afin de de fournir une réponse la plus rapide possible.

Cette façon de faire oblige le Webservice SQL, dans un premier temps, a fournir uniquement des requêtes de lecture de la base de données. Il est donc nécessaire dans le cas des requêtes d'écriture (ajout de commande, création de client ou autre modification de la base données) de travailler conjointement avec l’utilitaire SqlToDbf.

Dans le cas où un site utilise l'ancienne version du Webservice en DBF, il est possible de spécifier au Webservice existant que certaines requêtes doivent être traitées par la version SQL. Cette approche vous permet d'éviter d'interroger 2 Webservices différents.

Sur cette page:


Prérequis

L'installation du Webservice SQL nécessite obligatoirement les éléments suivants :

(tick) IIS diposant du rôle "Application Development"
(tick) Logistics/Flex avec Module Synchro SQL
(tick) Framework .NET 4.0
(tick) Information de connexion à une base de donnée générée par Logistics/flex sous SQL Server
(tick) Fichiers du Webservice SQL (à télécharger ici)

Optionnel

(tick) SqlToDbf (à télécharger ici) - Nécessaire dans le cas ou des écritures doivent être réalisées dans la base de données

(tick) Webservice Tools (à télécharger ici) - Pour vous permettre de réaliser des tests sur le webservice

Haut de page


Installation

1. Configuration de l'application pool

  1. Ajoutez l'Application Pool dans IIS.

    Il est obligatoire de créer un application pool par Webservice SQL et dossier Logistics/Flex.


  2. Dans le champ .NET Framework version, sélectionnez le .NET Framework 4.0.


  3. Modifiez l'Identity de l'application pool que vous venez de créer via le menu Advanced settings.

    Nous vous recommandons d'utiliser l'identity NetworkService ou un compte utilisateur.

    Version non serveur de Windows

    %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
    
    "c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\servicemodelreg" -i

2. Installation des fichiers du Webservice SQL

  1. Créez un répertoire et dé-zippez les fichiers du Webservice (Les fichier du Webservice sont à demander par mail au support Logistics).

    Dans cette documentation nous utiliserons le chemin : c:\inetpub\wwwroot\dossier_webserviceSQL



  2. Modifiez la sécurité du répertoire créé via l'onglet Securityde la fenêtre de propriété de ce dossier.

    1. Ajoutez l'utilisateur mentionner dans l'application pool.
    2. Ajoutez aux droits standard, les droits en écriture dans le dossier.

3. Installation & configuration du SQLTODBF

L'utilitaire SQLTODBF est utilisé pour reporter les modifications apportée sur la base de donnée SQL dans la base de données DBF utilisé par le programme, si le webservice est utilisé uniquement en lecture cette étape peut être ignorée

Le webservice exécute de manière automatique à intervalle réguliere cet utilitaire afin de reporter les ajout et modification de la base de données SQL vers le DBF

Prérequis
  • Exécuté par un utilisateur disposant des droits de lecture et écriture et suppression dans le répertoire du dossier client de logistics
  • les composant Visual Foxpro 9 doivent être installé sur la machine exécutant le logiciel
Installation

Dézipper l’exécutable dans un répertoire dont le compte qui est définit dans l'application pools dispose de droit de lecture, vous devrez indiquer le chemin de ce répertoire dans la clé SqlToDbfPath qui est à définir à l'étape Configuration du fichier Web.Config

Configuration

vous pouvez configurer divers paramètre pour l’exécution et le traitement exécuté par le SqlToDbf, les paramètres sont a ajouter dans les paramètre généraux du dossier client Logistics

ParamètreDescriptionValeur par défaut
WSSQL_TABLETOSYNCTable ou les modifications SQL sont à reprendre en DBF, les tables sont séparées par *DOCHEAD*DOCDET*CUST*PERS
WSSQL_SQLTODBF_TIMER

Délai en seconde que le webservice attend avant d'éxecuté une nouvelle instance du SQLTODBF.

Si une instance est toujours en cours d’exécution l'appel est ignoré

10


Exécution manuelle 

Suivant votre environnement vous pouvez décider d'exécuter le SqlToDbf manuellement dans un scheduler par exemple 

Pour ce faire vous devez exécuter le SqlToDbf avec les paramètres suivant 

ParamètreDescriptionExemple de valeur
1Table à synchroniser"DOCHEAD*DOCDET*CUST*PERS"
2Chemin de l'installation data de logistics"c:/winbooks/data/logistics/"
3Nom du répertoire du dossier client"DEMOLOGISTICS_FR"

Gestion des erreurs

En cas d'erreur le programme génère un log par jour dans le dossier logistics sous la forme <date> error - sqltodbf.txt

Vous pouvez vérifier si les données sont bien renvoyée dans les table dbf en regardant si le champ SQLMODIF dans la base de données SQL est bien à 0.

4. Configuration du fichier Web.config

  1. Dans IIS, ouvrez le menu Application Settings


  2. Définissez les différents paramètres suivant le paramétrage de votre dossier


    Description des entrées de configuration 

    key

    value

    ConnexionStringSql

    Information de connexion à la base de données de SQL Server.
    De façon typique elle se constitue de la manière suivante :

    "Data Source=SERVER2008DEV;Initial Catalog=DEMO;User ID=sa;Password=1234"

    • Data Source : nom DNS du ou IP du serveur contenant la database sql.
    • Initial Catalog : nom de la base de donnée celle-ci est généralement la même que le nom du dossier dans Logistics/Flex.
    • User ID : nom de l'utilisateur SQL.
    • Password : password de l'utilisateur SQL.

    Serial

    Numéro de série du dossier Logistics/Flex.

    DataRootPath

    Chemin envoyé par le site web et utiliser par le Webservice DBF. 
    Ce chemin doit être indiqué pour le calcul de la clé applicative renvoyée par la fonction WSLOGIN.

    CompID

    Nom du dossier client dans Logistics/Flex.

    Debug

    Création de log par le Webservice pour le debuging.

    SqlToDbfPathChemin utilisé par l’utilitaire SqlToDbf.
    SqlToDbfUserUtilisateur repris par le Webservice SQL pour lancer l'utilitaire SqlToDbf. Optionnel, utilisé dans les environnements très sécurisés.
    SqlToDbfPasswordMot de passe de l'utilisateur repris par le Webservice SQL pour lancer l'utilitaire SqlToDbf. Optionnel, utilisé dans les environnements très sécurisés.
    SqlToDbfDomainDomaine de l'utilisateur repris par le Webservice SQL pour lancer l'utilitaire SqlToDbf. Optionnel, utilisé dans les environnements très sécurisés.





Vous pouvez également modifier le fichier Web.config via un éditeur de texte, et configurer les key de l'appSettings.

5. Création de l'application dans IIS

  1. Ajoutez une application dans IIS.



  2. Sélectionner l'application pool.

    L'Alias sera utilisé dans l'URL d'accès au Webservice.



  3. A partir de cette étape, vous pouvez tester si le webservice SQL est correctement lancé par IIS, via un navigateur web en tapant cette URL (n'oubliez pas d'adapter l'URL suivant votre paramétrage !) :

    http://127.0.0.1/MonDossier_WSSQL/ServiceWcf.svc?wsdl

    Dans l'URL de test, il faut indiquer l'Alias de l'application et non le nom du répertoire.



  4. Si l'installation est correcte, vous devriez avoir une réponse semblable à l'écran suivant dans votre navigateur web :

    Pensez aussi à vérifier la disponibilité du Webservice à l'extérieur et à rediriger les ports si nécessaire.

6. Configuration en HTTPS


Cette section est optionnelle et nécessite la modification du site hébergeant le webservice
elle nécessite également au minimum la version 1.1.0.2 du webservice

  1. Créez ou importer un certificat dans IIS dans le serveur




    Certificat autosigné

    Dans le cas d'un certificat autosigné, l'appel au webservice peut être perturbé car le certificat ne sera pas autorisé par l'ordinateur distant attaquant le webservice

    Pour vous permettre d'utiliser votre certificat, vous devez importer ce dernier dans l'ordinateur distant dans le magasin "Autorités de certification racines de confiance"

  2. Modifiez le Binding du site internet ou se situe le webservice


  3. Ajoutez le binding https pour toutes les adresse et spécifiez le certificat à utiliser pour cette connexion
     
  4. Si les modifications ne sont pas directement prisent en compte vous pouvez redémarrer l’ensemble d'ISS via la commande "IISRESET" dans le cmd de windows en mode administrateur.

    Dans certains environnements des modifications du fichiers web.config sont nécessaires. 
    Veuillez vous référé à la section "Problèmes et solutions" si vous êtes dans ce cas.

Haut de page


Test du Webservice SQL

Un programme est disponible pour vous permettre de réaliser des tests sur un webservice SQL.

Ce dernier est téléchargeable via ce lien : Programme de test du webservice à télécharger


Configuration des données de connexion


L'onglet "Config" vous permet de configurer et de tester la connexion au webservice.

Via le menu Config File, vous pouvez charger une configuration existante ou sauvegarder votre configuration actuelle


la section Login Options peut fonctionner de deux manières distinctes :

  • Si vous connaissez la clé partagée du webservice, vous pouvez directement remplir la clé partagée et vérifier la validité via le bouton "Validate Webservice"
  • Si un user et un mot de passe ont été définit vous pouvez les indiquer dans les champs prévu et réaliser une request wsLogin via le bouton "Get Webservice Key" pour récupérer la clé partagée


la clé doit être valide pour passer dans l'onglet Request

Exécuter une requête

Cette étape permet de procéder à l'envoi d’une requête wsrequest sur le webservice indiqué dans l'onglet configuration.

Il est possible d'exécuter des requêtes standard mais également des requêtes personnalisées venant d'un plug in.

Vous pouvez également sauvegarder et charger des request que vous avez réalisé.

Vous trouverez la documentation sur les requests standard en suivant ce lien 

Requête standard 


Sélectionnez le nom de la requête dans la liste déroulante, et ensuite remplissez les XML Header, Data et Footer avec les données souhaitées.

Lorsque les données sont complétées, exécutez la requête sur les webservices initialisés.

Le résultat de la requête ainsi que son temps d'exécution sont affichés dans la partie inférieure de l'onglet.

Requête personnalisée

Les requêtes personnalisées fonctionnent comme les requêtes standard sauf que vous devez indiquer le nom de votre requête au lieu de le sélectionner dans la liste déroulante une des propositions de requête.

Haut de page


Liaison avec le Webservice DBF

Cette section est optionnelle et elle est proposée uniquement pour les sites existants afin permettre une phase d'adaptation sans mise hors service du site.

Configuration du fichier wsFlex.ini

Ajouter les lignes suivantes dans la configuration de votre dossier contenu dans le fichier wsFlex.ini

Description des lignes :

key

value

WCF_URL

correspond à l'adresse du Webservice SQL.

XXXX_USEWCF

XXXX représente le nom d'une fonction du webservice. Les fonctions qui sont mentionnées de la sorte dans le fichier de configuration avec la valeur YES seront redirigées vers le Webservice SQL pour traitement, le Webservice DBF sert alors simplement d'intermédiaire.

Haut de page


Problèmes et solutions

  • Le webservice ne fonctionne pas en HTTPS malgré la configuration suivie

    Le fichier web.config fourni de base permet de gérer une connexion HTTPS sur la plupart des systèmes.
    Cependant dans certains environnements, des modifications doivent être apportées pour ajouter des spécifications de sécurité à la configuration initiale.

    Avant toute modification, pensez à sauvegarder votre fichier web.config


    Ouvrez votre fichier web.config via un éditeur de texte, la structure de ce fichier est semblable à un XML.

    Repérez le tag <system.serviceModel>

    Ajoutez le code suivant après le tag <system.serviceModel>

    <bindings>
       <basicHttpBinding>
          <binding name="TransportSecurity">
             <security mode="Transport">
                <transport clientCredentialType="None"/>
             </security>
          </binding>
       </basicHttpBinding>
    </bindings>

    Ajoutez le code suivant toujours dans la balise <system.serviceModel>
    <services>
       <service  name="WcfEcom.ServiceWCF">
          <endpoint address="" binding="basicHttpBinding" bindingConfiguration="TransportSecurity" contract="WcfEcom.IServiceWcf"/>
       </service>
    </services>

    Sauvegardez votre fichier et relancez l'application pool associé au webservice

    Vérifiez dans le ServiceWcf.svc?wsdl de votre webservice que les urls renseignées sont correcte et bien en https.


  • Le webservice ne répond pas à l'utilitaire de test ou retourne un message d'erreur vague.

    Vérifiez que vous avez activer Debug avec la valeur "true" dans l'application settings du webservice et qu'un répertoire log se soit créé dans le répertoire d'installation du webservice
    Vous pouvez consulter le log pour déterminer la source de l'erreur.
    Dans le cas ou aucun répertoire log n'est créé malgré l'option spécifiée vérifier les droits dans le répertoire ou se situe le webservice, ce répertoire doit disposer des droits suffisant pour le compte spécifié dans l'application pools
    Dans le cas ou vous rencontrez toujours des problèmes vérifiez que vous avez correctement effectuer votre installation.

  • Les données ajoutées ou modifiées via le webservice ne sont pas renvoyée vers le programme Logistics.

    Vérifiez si les données que vous avez spécifié se retrouve dans la base de données SQL avec le champ SQLMODIF à la valeur 1
    Si c'est bien le cas le problème se situe au niveau du SQLTODBF qui n'a soit pas réussis à reporter l'information dans la base de données DBF ou se dernier n'a pas pu être lancé via le webservice SQL
    Vérifiez dans le dossier du client si des fichier txt du type "20180718 Error - SqlToDbf" dans ce cas il s'agit de message d'erreur rencontré par le SqlToDbf, le contenu du log doit vous permettre de résoudre le problème.

    Dans le cas ou aucun log ne se trouve dans le dossier le mieux est de tester si le sqltodbf peut être correctement lancé et qu'il n'y a pas un problème de droit. pour se faire exécutez le SqlToDbf avec les paramètres suivant : 
    "nom_table1*nom_table2" "c:\logistics\Data\" "FOLDER"

    Si le programme c'est correctement exécuté et que les champs SQLMODIF à 1 des tables spécifiées sont bien repassé à 0 il s'agit d'un problème de droits dans la configuration de l'application settings ou dans d'un manque de droit pour le compte spécifié dans l'application pools ce qui empêche l’exécution du SqlToDbf automatiquement par le webservice.

    Si le programme c'est correctement exécuté mais qu'aucun record n'a été traité, vérifiez si aucun SqlToDbf ne se trouve dans le gestionnaire de tâche de windows et qu'aucun fichier SqlToDbf.working n'est présent, dans le ce cas supprimez le fichier et terminez le process du SqlToDbf pour son exécution et réessayez d’exécuter le SqlToDbf

    Si le programme ne s'exécute pas, veuillez vérifier le message reçu pour résoudre le problème, il est fort probable que les librairies virtual foxpro ne soient pas disponible sur la machine, vous pouvez résoudre ce problème en installant une workstation de Logistics.

    Si aucune données dans la table n'a de tag SQLMODIF n'est à 1 alors que des requests d'ajout ou de modification de données ont bien été envoyée au webservice veuillez vérifier les log du webservice afin de voir si aucun soucis n'ont été logué pendant l’exécution de la request

Haut de page