Bonjour à toutes et tous,
Je suis programmeur windev depuis quelques années maintenant et j'en étais très content.
Rapidité de développement, look qui plait aux clients sans que l'on ait vraiment à se casser la tête, ...
Mais depuis quelques temps, j'ai de sérieux doutes, ainsi que les autres programmeurs dans ma société.
Avez-vous déjà eu l'occasion de participer à un projet dans lequel la gestion des accès concurrentiels est très poussée ?
J'entends par là qu'il est totalement impossible de répondre aux exigences du client en se limitant à la gestion auto (ou même semi-auto) de WinDev.
Un exemple :
une procédure A qui affiche les médicaments à préparer pour tous les résidents d'un home et qui est utilisée par plusieurs infirmières simultanément sur plusieurs écrans (pour aller + vite).
On peut donc avoir plusieurs procédures A en exécution.
De +, chaque infirmière travaille a un rythme différent et chaque résident à la fin de la procédure doit avoir été "géré" par 1 et 1 seule infirmière.
Une autre procédure B s'occupe d'adapter les données de la 1ère procédure (changements de dosages, ...) mais ne peut pas démarrer si la procédure A est en cours (impossible de modifier des dosages qui sont déjà affichés à l'écran ou en cours de traitement).
Pour être certain que la proc B puisse s'exécuter même si 10 infirmières vont lancer des proc A, il faut gérer (via lockings) une "réservation" : la procédure B signale qu'elle a qqch à faire, attend que les procédures A déjà lancées se terminent et modifie alors les dosages. Dès que la réservation a été émise par la procédure B, plus aucune procédure A ne peut commencer jusqu'à ce que B soit terminée.
C'est le + facile tout çà ...
Après, les clients veulent une gestion par étage afin qu'une proc B du rez-de-chaussée puisse modifier les dosages du rez de-chaussée alors que les infirmières du 1er travaillent avec leurs procédures A.
J'y suis arrivé avec WinDev, non sans mal, mais après quelques surprises en cours de route, principalement avec le "HLitRecherchePremier(...,hLockWrite)"
dans le cas où la valeur cherchée n'est pas trouvée !
Voilà, si quelqu'un a des BONS exemples, livres, ou autres de ce genre, je suis preneur.
Je n'ai jamais trouvé un exemple "poussé" publié chez PCSoft et concernant les accès concurrentiels, et vous ?
Et ne me parlez pas de "Qui bloque qui ?", ce n'est jamais çà que l'on rencontre en pratique !
Bien à vous,
Manu
Partager