Windev et Réplication DBF

// janvier 27th, 2010 // Windev

Voici un quick and dirty pour la  remontées d’informations stockées dans de bien belles tables DBF réparties sur 35 sites distants. Il s’agissait d’un développement a la petite semaine donc Windev était candidat.

Naturellement l’architecture  pousse à  développer un client et un serveur qui communiqueront les données formatées et consolidées, il s’agit évidemement de ne rapatrier que les données voulues c’est a dire les updates. Pour accéder à des DBF sous Windev on va se passer de l’accès natif (allez savoir pourquoi), il faut donc pour ce faire installer le pilote ODBC FoxPro puis le pilote OleDB FoxPro, ensuite on crée une source de données ODBC que l’on attaquera dans Windev.

Je ne vais pas détailler l’utilisation des sockets et autre threads sous Windev, des exemples sont fournis et avec quelques modifs ca doit ce faire sans trop de difficultées. Cependant une fonction que je méconnaissait à frappé à la porte et depuis est utilisée en production, c’est HimporteXML et sont pendant HExporteXML. En effet il suffit de traiter les données sur le site distant et les exporter en XML puis de les envoyer sur le réseau.

Le principe de fonctionnement est le suivant: le client pool les données DBF dans un fichier HF temporaire appelons le HF_tmp1, les compare avec les données qu’il possède déjà (fic HF_datas), les updates ainsi récupérées sont placées dans HF_update lequel est parcouru pour mettre à jour les données, ce même fichier est envoyé grâce à HExporteXML vers le serveur qui le stock avec HimporteXML dans un fichier temporaire et exécute les update sur la base centrale (bien choisir les clés composées sinon…)

Bien évidemment pour des raisons de performances ils tout a fait faisable de travailler avec des tableaux d’objets représentant les données de sorte à ne travailler qu’en RAM, ou pour ceux qui ont peur des sockets faire une remise par FTP des données que le serveur ira récupérer.

Le plus important est de bien dimensionner le serveur (ici un MySQL) afin de placer des sémaphores efficaces sur les procédure de traitement des données.

Leave a Reply

You must be logged in to post a comment.