10.3 Interfaces par communication sous forme de messages

Chapitre parent Chapitre précédent Chapitre suivant

L’objectif de ce type d’interface est pouvoir déclencher un traitement dans LDCompta depuis une autre application Windows, que cette dernière soit écrite avec WinDev ou pas.

Deux traitements sont supportés à ce jour :

Globalement, l’interface fonctionne sur un schéma client-serveur. LDCompta fournit le serveur : il s'agit d'une petite application qui doit s'exécuter sur la même machine que l’application client, et qui reste toujours active, en tache de fond, restant visible sous forme d'un icône en partie droite de la barre des tâches.

L’application cliente peut être développée dans n’importe quel langage ou AGL, pourvu que ce langage permette de gérer les messages Windows, soit directement par des ordres du langage, soit en faisant appel aux API Windows (fonction PostMessage notamment). A titre d’exemple, LD SYSTEME peut fournir les sources d’une application client écrite en WinDev.

Vous trouverez ci-après des informations techniques à destination des développeurs voulant mettre en œuvre ce type d'interface.

Schéma de communication

La communication fonctionne de la façon suivante :


A ce jour, 4 types de message existent :

Exemple de fichier LDCParam.INI

[Données]

RepData=C:\Ldsystem\Fichiers\Compta

RepSousRep=C:\Ldsystem\Fichiers\Compta

RepTemp=C:\Ldsystem\Temp

TraceServeur=YES

MessageFile=C:\Ldsystem\Fichiers\Compta\MsgFile.txt

Le mot-clé MessageFile définit le nom et l'emplacement du fichier dans lequel on lit et écrit chaque message.

La ligne TraceServeur=YES, si elle est présente, demande au serveur de tracer tous les messages qu'il reçoit. Le fichier résultat de cette trace se nomme LDCPTSVR.LOG, dans le répertoire temporaire défini par le mot clé RepTemp dans le LDCParam.INI.

Structure des messages

Le message est toujours composé d'un en-tête de 256 caractères, avec une suite de longueur variable (comprise entre 0 et 256), cette longueur variable étant définie dans l'en-tête. La structure du message est la suivante :

Msg est compose de                                                //Taille        Pos          E/S        Description

       Nom est une chaine fixe sur 10                        // 10                1-10          E        Nom de l'API demandé

       Format est une chaine fixe sur 10                        // 10                11-20   E        Nom du format

       Utilisateur est une chaine fixe sur 10                // 10                21-30   E        Utilisateur demandeur

       MotPasse est une chaine fixe sur 10                        // 10                31-40          E        Mot de passe

       Société est une chaine fixe sur 3                        // 3                41-43          E        Code société en compta

       LongueurSuiteMessage est une chaine fixe sur 5        // 5                44-48          E        Longueur du message, hors en-tête

       TraitéParServeur est une chaine fixe sur 1        // 1                49-49          E/S        A zéro lors de l'envoi du message,

//                                Positionné à 1 par le serveur lorsque le message est traité

MotPasseSuite est une chaine fixe sur 10                // 10                50-59   E        Mot de passe de l'utilisateur (Caractères 11 à 20)

       ZoneRéservée est une chaine fixe sur 77                // 67                60-126  ?        Réservé usage futur

       NuméroErreur est une chaine fixe sur 4                // 4                127-130 S        Numéro d'erreur : 0000=OK, >0000 si erreur

       LibelléErreur est une chaine fixe sur 126                // 126        131-256 S        Libellé erreur si numéro d'erreur > 0000

fin


Dans le cas du message de demande d'en-cours client, la suite du message a la structure suivante :

FormatECF001 est compose de                                        // Taille        Pos          E/S        Description 
       Compte est une chaine fixe sur 10                        // 10                1-10          E        N° du compte comptable
       DateSolde est une chaine fixe sur 8                        // 8                11-18          E        Date du solde du compte, sous forme AAAAMMJJ

       Solde est une chaine fixe sur 15                        // 15                19-33          S        Solde du compte 13.2 Format +12345678901.12

       TotalPortefeuille est une chaine fixe sur 15        // 15                34-48          S        Total des règlements en portefeuille

       TotalBanque est une chaine fixe sur 15                // 15                49-63          S        Total des règlements remis en banque non échus

       TotalAcceptation est une chaine fixe sur 15        // 15                64-78          S        Total des règlements émis à l'acceptation

fin


Dans le cas du message de demande d'interface en entrée de LDCompta, la suite du message a la structure suivante :

FormatINT001 est compose de                                        // Taille        Pos          E/S        Description
       AfficherFenetres est une chaine fixe sur 1        // 1                1-1          E        Afficher fenêtres procédure d'interface : O=Oui, N=Non
       Traitement est une chaine fixe sur 1                // 1                2-2          E        Traitement à réaliser 1=Contrôle, 2=Contrôle+validation
       AfficherEnregs est une chaine fixe sur 1                // 1                3-3          E        Afficher tous les enregistrements : O=Oui, N=Non
       ImprimerListe est une chaine fixe sur 1                // 1                4-4          E        Imprimer liste de contrôle : O=Oui, N=Non
       ZoneRéservée est une chaine fixe sur 6                // 6                5-10          E        Réservé usage futur
       FichierEntrée est une chaine fixe sur 64                // 64                11-74          E        Nom et emplacement du fichier en entrée de l'interface
       FichierDescription est une chaine fixe sur 64        // 64                75-138  E        Nom et emplacement du fichier de description (.FDF)

fin


Dans tous les cas de figure, que l’on communique par une zone mémoire ou par un fichier texte, le message de 256 caractères suivi de la suite du message (78 octets dans le cas de l'en-cours client, 138 dans le cas du lancement de la procédure d’interface) doit être écrit tel quel dans la zone mémoire ou le fichier texte, sans aucun séparateur ou délimiteur.

Pour savoir si le serveur a répondu, il faut relire le même fichier message, et tester la zone nommé TraitéParServeur (position 49 du message), qui est positionnée à 1 par le serveur lorsqu'il a répondu.

Pour ce qui est du message de demande d'interface en entrée de LDCompta, on peut voir que la structure de la suite du message permet de renseigner toutes les zones qui sont normalement définies sur le premier onglet de la fenêtre de lancement de l’interface accessible depuis le progiciel comptable. La première zone AfficherFenêtres permet de choisir entre un mode dans lequel on voit s’ouvrir à l’écran les différentes fenêtres de la procédure d’interface, et où on est donc informé directement du déroulement de la procédure, ou un mode dans lequel les fenêtres de la procédure d’interface s’exécutent hors-écran, sans que l’utilisateur ne voit quoi que ce soit. Dans ce deuxième mode, et tout particulièrement si le serveur renvoie un code d’erreur signifiant que la procédure d’interface n’a pas abouti, il faut consulter le fichier historique du traitement nommé INTCPT.LOG dans le répertoire temporaire défini dans le progiciel comptable. Enfin, dans les deux modes, on peut demander, grâce à la zone ImprimerListe, à ce que la liste de contrôle de la procédure d’interface s’imprime systématiquement.

Remarque : de la même façon que lorsque la procédure d’interface est appelée depuis le progiciel comptable, si le contrôle et la validation du fichier à interfacer aboutissent sans erreur, le fichier texte en entrée de procédure d’interface est supprimé.

Objets nécessaires à cette interface

Le programme serveur se nomme LDCPTSVR.EXE. Il est livré dans le répertoire des programmes de LDCompta (en général, C:\Ldsystem\Program\Compta).

Ce programme doit être actif pour pouvoir répondre aux sollicitations du client. Pour l’activer, plusieurs solutions sont possibles :

Si vous souhaitez tester le fonctionnement du serveur, vous pouvez utiliser le programme client fourni par LD SYSTEME à titre d’exemple. Ce programme client se nomme LDCPTCLT.EXE. Il doit être installé lui aussi dans le répertoire des programmes de LDCompta. Si vous ne disposez pas encore de ce programme, demandez-le au support technique LD SYSTEME. Vous pouvez aussi obtenir le projet complet WinDev correspondant à l’application cliente (répertoire du projet fourni sous forme d’un fichier ZIP auto-extractible, à décompresser dans le répertoire de votre choix). Cet exemple peut vous aider à réaliser votre programme client avec WinDev. Si vous ne développez pas avec WinDev, les sources de l’application sont également fournis « en clair », sous la forme d’un fichier au format RTF. La syntaxe du langageWinDev  étant très proche du langage naturel, ces sources peuvent là encore vous apporter une aide précieuse.

Chapitre précédent Chapitre précédent Chapitre parent Chapitre parent Chapitre suivant Chapitre suivant