FR 3083891 A1 20200117 FR 1856416 A 20180712 PROCEDE D'ECHANGES DE DONNEES EN UN SERVEUR ET UNE PLURALITE DE TERMINAUX CONNECTES CLIENTS Domaine de l'invention La présente invention concerne le domaine des 5 portails et procédés de traitements de formulaires en ligne et plus particulièrement d'échanges d'informations numériques entre un commanditaire public ou privé et des soumissionnaires, dans le cadre d'un appel d'offre, par l'intermédiaire d'une plateforme opérée par le commanditaire, à laquelle les 10 soumissionnaires peuvent accéder pour échanger des données numériques via un réseau informatique, notamment Internet, par l'intermédiaire d'un terminal client équipé d'un navigateur. Le commanditaire propose aux soumissionnaires de remplir des formulaires numériques pour réduire les coûts de 15 fonctionnement et les délais des traitements administratifs des appels d'offre et pour alléger la gestion de la réponse par les soumissionnaires. Pendant un appel d'offre, le soumissionnaire peut être conduit à modifier le formulaire, pour tenir compte 20 d'évolution de ses besoins, ou du signalement d'incohérences relevées par un soumissionnaire. De même, un soumissionnaire peut décider de modifier sa réponse. La plateforme doit ainsi gérer en toute sécurité de 25 multiples versions en garantissant qu'à l'issue de l'appel d'offre, la version analysée par le soumissionnaire prennent en compte les dernières versions de chacune des parties, en évitant autant que possible les lourdeurs occasionnées par une reformulation intégrale des réponses. 30 De plus, il est souhaitable que les soumissionnaires puissent utiliser n'importe quel équipement informatique, système d'exploitation et navigateur, sans avoir à installer une 2 nouvelle application informatique, nécessitant souvent un accord préalable d'un responsable de la sécurité informatique voire un audit du code logiciel de l'application à installer. Etat de la technique On connaît dans l'état de la technique le brevet français FR2973534 décrivant un procédé d'optimisation de recherche accessible à un utilisateur d'au moins un service web SOAP-WSDL, à travers un système informatique pouvant accéder à une base de données relationnelle et au service web SOAP-WSDL concerné. L'utilisateur définit une requête sur des données accessibles par ce service web SOAP- WSDL. Le procédé utilise des règles d'écriture préalablement définies, permettant d'exprimer la requête à effectuer, et comporte des étapes suivantes : - de validation des paramètres d'entrée du procédé constitués d'une part de ou des adresse(s) Internet permettant d'accéder au(x) document(s) WSDL du ou des service(s) web, - de création de tables dans une base de données relationnelle, - construction d'une méta-requête SQL impliquant à la fois l'appel à la ou les méthode(s) du ou des service(s) web (SOAP), ainsi que les tables construites précédemment (SQL), - présentation à l'utilisateur de la requête afin qu'il définisse ses paramètres d'entrée ainsi que les opérations 25 qu'il souhaite réaliser sur les données retournées ; puis validation de cette requête, - exécution d'une ou plusieurs requête(s) SOAP à effectuer sur le ou les service(s) web, - récupération de la ou des réponse(s) du ou de(s) 30 service(s) web et de stockage de cette ou ces réponse(s) dans les tables construites précédemment, - exécution d'une requête SQL à effectuer sur les tables construites précédemment, 3 - création de la réponse du procédé, - destruction des tables construites précédemment. Les règles d'écriture permettant d'exprimer la requête à effectuer utilisent le langage JSON (JavaScript 5 Oriented Notation). Une autre solution est décrite dans le brevet français FR3027131 décrivant un procédé d'extraction de données standardisées caractérisé en qu'il comporte les étapes suivantes 10 : - lecture d'une requête d'extraction préenregistrée comportant des instructions de nommage explicite de colonnes ; - lecture d'une source de données selon une association de la requête préenregistrée à ladite source de 15 données ; - exécution de la requête d'extraction lue via une connexion à la source de données lue pour produire un jeu de données extraites ; - production, à partir du jeu de données extraites 20 d'un message de données selon les noms des données du jeu de données extraites. On connaît aussi le brevet français FR2923337 décrivant un procédé et un système d'échange de données entre un premier serveur hébergé dans une entité électronique liée à un appareil programmable et un deuxième serveur distant. Lesdits premier et deuxième serveurs sont chacun adressables individuellement par l'appareil programmable au moyen d'adresses cibles respectives et le procédé comprend les étapes suivantes : - réception par l'appareil programmable d'une réponse à une première requête, ladite réponse comprenant les données et une desdites adresses cibles ; 4 - exécution de ladite réponse par un navigateur mise en oeuvre sur l'appareil programmable de manière à entraîner l'émission des données vers ladite adresse cible. Inconvénients de l'art antérieur 5 Les solutions de l'art antérieur présentent plusieurs inconvénients. En premier lieu, la taille des tables est limitée par les principes de fonctionnement des navigateurs. Le nombre de lignes est généralement plafonné, et il n'est donc pas possible de traiter des contenus dont le contenu se traduit 10 par un nombre de ligne dépassant le plafond des outils logiciels courants. Pour un fichier HTML, la hauteur maximale du bloc de texte est limitée, ainsi que son contenu. Pour des très grands formulaires, le contenu dépasse les limites techniques et 15 empêche l'utilisation des solutions standard. Pour permettre un fonctionnement avec un client léger (c'est-à-dire un ordinateur de bureau voire une tablette, exécutant une application logicielle constituée simplement par un navigateur universel), les solutions de l'art antérieur 20 imposent une limite technique à la taille du formulaire transmis par la plateforme au client, ainsi que des temps de traitement important sur le terminal client, lorsque la taille du formulaire est importante. Solution apportée par l'invention 25 Afin de remédier à ces inconvénients, l'invention concerne selon son acception la plus générale un procédé d'échanges de données en un serveur et une pluralité de terminaux connectés clients, caractérisé en ce qu'il comporte a) une étape initiale de définition d'un nouveau formulaire Fx 30 consistant à enregistrer sur le serveur : - un objet numérique Ox au format JSON comprenant : 5 o Une pluralité d'identifiants uniques I', associés chacun à un contenu numérique élémentaire Lx, et à un numéro d'ordre R', o Une pluralité de contenus constitués d'éléments 5 numériques Lx, comprenant une désignation, une description, un état E xe1,0 originel, un statut S originel - un fichier contenant un code JavaScript C. apte à commander, lors de son exécution par un navigateur, la fabrication 10 d'une page constituée par une partie au moins desdits éléments numériques Lx ordonnés en fonction de leur numéro d'ordre Rx b) des étapes d'enregistrement d'un nouvel utilisateur U consistant à établir une session de communication entre un 15 terminal léger et le serveur et à enregistrer sur le serveur un jeton numérique T, associé audit utilisateur U c) des étapes de création de formulaires numériques personnalisés Fx,, consistant à enregistrer une duplication O. de l'objet numérique O,0 originel en relation avec un identifiant 20 dudit utilisateur U et à créer un code personnalisé Cx' pour ledit utilisateur U en fonction dudit jeton numérique Tu et des fonctionnalités accessibles par ledit utilisateur U d) des étapes de renseignement par un utilisateur U dudit formulaire personnalisés Fx, consistant à : 25 - télécharger l'objet numérique personnalisé Oxe, dudit serveur dans la mémoire dudit terminal client léger - exécuter le code JavaScript personnalisé C,,sur le terminal client pour calculer une page visualisable - générer et afficher une page visualisable sur l'écran dudit 30 terminal - saisir les modifications dans les éléments numériques Lue'tx et afficher sur le terminal client une page visualisée modifiée o lors de la validation desdites modifications, exécuter le code personnalisé C', pour calculer, pour les 6 éléments numériques LM'imodifiés, un nouveau contenu comprenant le contenu originel ainsi qu'une désignation, une description, un état E nouveau où j désigne le rang de la modification, un statut 5 nouveau et optionnellement un delta correspondant à la différence entre l'état Euid et un état antérieur Eu,',i,j, o et transférer et enregistrer sur le serveur, en relation avec l'utilisateur U, lesdits éléments 10 numériques modifiés De préférence, ladite étape de génération de la page visualisable comporte l'exécution du code C>', pour calculer la hauteur des éléments la taille de la fenêtre de 15 visualisation dudit terminal client et pour sélection un sous-ensemble d'éléments LM',, en fonction de ladite taille de la fenêtre de visualisation et de la position d'un marqueur numérique de défilement. 20 Avantageusement, ledit procédé comporte en outre, après ladite validation des modifications, une étape d'horodatage des éléments numériques modifiés De préférence, ladite étape d'horodatage comporte le 25 calcul de condensats [hash] desdits éléments numériques modifiés et l'enregistrement horodaté desdits condensats. Selon un mode de réalisation préféré, ladite étape d'horodatage comporte le calcul de condensats [hash] desdits 30 éléments numériques modifiés LM,x, et l'injection dans une chaîne de blocs [blockchain]. Description détaillée d'un exemple de réalisation 7 La présente invention sera mieux comprise à la lecture de la description qui suit, se référant à un exemple non limitatif de réalisation illustré par le dessin annexé où : - la figure 1 représente une vue schématique d'un 5 système informatique pour la mise en oeuvre de l'invention Architecture informatique L'architecture informatique comprend un serveur (1) associé à une unité de stockage (2) pour l'enregistrement d'une base de données par l'intermédiaire d'un pilote (3). 10 Le serveur (1) échange par ailleurs des données via un réseau tel qu'internet avec des terminaux clients (4, 5) comportant une application de navigation L'invention permet d'utiliser des terminaux légers, c'est-à-dire des ordinateurs ou tablettes courantes destinées à 15 des applications bureautiques, ne nécessitant aucun périphérique ni ressource matérielle additionnelle, et exécutant des applications légères, telles qu'un système d'exploitation standard et un navigateur universel, sans nécessiter de chargement d'une application spécifique associée aux 20 fonctionnalités du serveur (2). Procédure d'enregistrement d'un utilisateur Pour l'enregistrement d'un nouvel utilisateur, ce dernier se connecte au serveur (2) par l'intermédiaire de son terminal (4) et d'un navigateur ouvrant la page d'accueil du 25 serveur (1). Cette page d'accueil propose de manière connue une procédure d'inscription par une interface présentant un formulaire de saisie d'informations d'identification de l'utilisateur telles que son nom, ses coordonnées, ses fonctions 30 ainsi qu'une proposition de mot de passe. Ces données sont transmises au serveur qui calcule un jeton (Token) T, enregistré 8 dans la base de données (2) en liaison avec les informations transmises par l'utilisateur. Ce jeton est également téléchargé dans une mémoire du terminal (4) de l'utilisateur. Optionnellement, cette procédure d'enregistrement comporte aussi 5 la création de comptes secondaires correspondant à d'autres utilisateurs appartenant à la même entité, et disposant de droits restreints, par exemple seulement la consultation, ou seulement la modification de certaines rubriques. Dans ce cas, chaque utilisateur délégué dispose de son propre jeton. 10 Procédure de création d'un nouveau formulaire Lorsque l'opérateur de la plateforme (10), par exemple un commanditaire préparant une nouvelle consultation de type « appel d'offres », il crée un nouveau formulaire Fx dont la structure est commune à tous les formulaires F. 15 Ce formulaire est un objet numérique divisé en objets éléments d'information correspondant typiquement à une ligne d'information. Dans un appel d'offres, une ligne correspondra à une prestation élémentaire, et présentera une structure de type 20 « identifiant / désignation / description / unité / quantité / prix unitaire / état / observations ». Ces prestations élémentaires sont habituellement regroupées en sous-ensembles cohérents appelés « lots ». Un lot comprend une succession, généralement ordonnée, d'objets 25 numériques élémentaires. Cette étape se traduit techniquement par l'élaboration d'un objet numérique 0, au format JSON comprenant : o Une pluralité d'identifiants uniques I associés chacun à un contenu numérique élémentaire L',, et à un 30 numéro d'ordre FL, o Une pluralité de contenus constitués d'éléments numériques L',, comprenant une désignation, une 9 description, un état E ''0 originel, un statut S',,0 originel. Ces objets numériques sont élaborés à l'aide d'outils éditeurs et d'une interface graphique facilitant la 5 saisie des informations. Cette étape initiale comprend aussi l'établissement d'un fichier contenant un code JavaScript Cx apte à commander, lors de son exécution par un navigateur, la fabrication d'une page constituée par une partie au moins desdits éléments 10 numériques Li ordonnés en fonction de leur numéro d'ordre R. A cet effet, le serveur utilise un code prédéfini paramétrable à l'aide d'un éditeur de code facilitant la personnalisation du code prédéfini. Cet ensemble d'objets élémentaires Lxj et le code Cx 15 associé définissent techniquement la « matrice originelle » du formulaire F. On enregistre ensuite dans la base de données (2), pour chaque utilisateur U souhaitant répondre à l'appel d'offre, un formule F'xpersonnalisé, associé à l'utilisateur U. 20 A cet effet, un utilisateur déjà enregistré ou un utilisateur venant de procéder à l'enregistrement accède sur la page d'accueil à une fonction de sélection d'un formulaire FA et de déclaration par la validation de la sélection. Cette validation déclenche un traitement par le 25 serveur (2) d'un formulaire numérique personnalisé consistant à enregistrer une duplication 0,ude l'objet numérique 0'uoriginel en relation avec un identifiant dudit utilisateur U et à créer un code personnalisé Cx'pour ledit utilisateur U en fonction dudit jeton numérique Tu et des fonctionnalités 30 accessibles par ledit utilisateur U. Modification du formulaire La modification peut intervenir à l'initiative du commanditaire ou du soumissionnaire. 10 Le commanditaire peut modifier une ou plusieurs lignes L,, du formulaire F. Dans ce cas, le serveur (2) télécharge la matrice du formulaire Fà,' et procède aux modifications, puis exécute un 5 traitement consistant à calculer, pour chaque - pour les éléments numériques LM''imodifiés ou nouveau, un nouveau contenu comprenant le contenu originel ainsi qu'une désignation, une description, un état E',''; nouveau où j désigne le rang de la modification, un statut nouveau 10 et optionnellement un delta correspondant à la différence entre l'état E ','; et un état antérieur - transférer et enregistrer sur le serveur, en relation avec l'utilisateur U, lesdits éléments numériques modifiés - notifier automatiquement, à chacun des utilisateurs U, un 15 message l'informant qu'une modification du formulaire F, est intervenue. Dans le cas où un utilisateur U souhaite renseigner un formulaire F', originel, ou modifier une version précédemment enregistrée, il télécharge depuis le serveur (2) sur le terminal 20 (4, 5) le formulaire F', enregistré dans la base de données (2) et réalise des traitements consistant à : - télécharger l'objet numérique personnalisé 0', dudit serveur dans la mémoire dudit terminal client léger - exécuter le code JavaScript personnalisé C',sur le terminal 25 client pour calculer une page visualisable - générer et afficher une page visualisable sur l'écran dudit terminal - saisir les modifications dans les éléments numériques et afficher sur le terminal client une page modifiée 30 o lors de la validation desdites modifications, exécuter le code personnalisé C', pour calculer, pour les éléments numériques LM,',modifiés, un nouveau contenu comprenant le contenu originel ainsi qu'une désignation, une description, un état E nouveau 11 où j désigne le rang de la modification, un statut nouveau et optionnellement un delta correspondant à la différence entre l'état Euid et un état antérieur Eu,',id, 5 o et transférer et enregistrer sur le serveur, en relation avec l'utilisateur U, ledit éléments numériques modifiés Ajustage de l'affichage Le navigateur exécute, lors de la commande 10 d'affichage d'un formulaire Fupc un traitement commandé par une partie du code Cx, consistant à : - ordonnancer les éléments Lxen fonction du rang - calculer la hauteur de chaque éléments - déterminer à partir des données du moteur de virtualisation 15 la position du marqueur de position (par exemple position du bouton de « scrolling ») et de la taille de la fenêtre - calculer le sous-ensemble d'éléments L',''. compatible avec ces données - affichage du sous-ensemble d'éléments REVENDICATIONS1 - Procédé d'échanges de données en un serveur et une pluralité de terminaux connectés clients, caractérisé en ce qu'il comporte a) une étape initiale de définition d'un nouveau formulaire F. consistant à enregistrer sur le serveur : - un objet numérique O. au format JSON comprenant : o Une pluralité d'identifiants uniques I.,i associés chacun à un contenu numérique élémentaire L.,1 et à un numéro d'ordre R',i o Une pluralité de contenus constitués d'éléments numériques L.,1 comprenant une désignation, une description, un état E originel, un statut S',i3O originel - un fichier contenant un code JavaScript C. apte à commander, lors de son exécution par un navigateur, la fabrication d'un page constituée par une partie au moins desdits éléments numériques Li ordonnés en fonction de leur numéro d'ordre Ri b) des étapes d'enregistrement d'un nouvel utilisateur U consistant à établir une session de communication entre un terminal léger et le serveur et à enregistrer sur le serveur un jeton numérique Tu associé audit utilisateur U c) des étapes de création de formulaires numériques personnalisés F.,u consistant à enregistrer une duplication 0', de l'objet numérique O,,, originel en relation avec un identifiant dudit utilisateur U et à créer un code personnalisé C.' pour ledit utilisateur U en fonction dudit jeton numérique Tu et des fonctionnalités accessibles par ledit utilisateur U d) des étapes de renseignement par un utilisateur U dudit formulaire personnalisé F., consistant à : - télécharger l'objet numérique personnalisé 0,'u dudit serveur dans la mémoire dudit terminal client léger 13 - exécuter le code JavaScript personnalisé C, sur le terminal client pour calculer une page visualisable - générer et afficher une page visualisable sur l'écran dudit terminal 5 - saisir les modifications dans les éléments numériques et afficher sur le terminal client une page visualisée modifiée o lors de la validation desdites modifications, exécuter le code personnalisé Cx, pour calculer, pour les 10 éléments numériques LMua'modifiés, un nouveau contenu comprenant le contenu originel ainsi qu'une désignation, une description, un état E nouveau où j désigne le rang de la modification, un statut nouveau et optionnellement un delta 15 correspondant à la différence entre l'état E u et un état antérieur Eup',_' o et transférer et enregistrer sur le serveur, en relation avec l'utilisateur U, lesdits éléments numériques modifiés 20 2 - Procédé d'échanges de données en un serveur et une pluralité de terminaux connectés clients selon la revendication 1, caractérisé en ce que ladite étape de génération de la page visualisable comporte l'exécution du code Cx, pour 25 calculer la hauteur des éléments LMu,x', la taille de la fenêtre de visualisation dudit terminal client et pour sélectionner un sous-ensemble d'éléments LML',x, en fonction de ladite taille de la fenêtre de visualisation et de la position d'un marqueur numérique de défilement. 30 3 - Procédé d'échanges de données en un serveur et une pluralité de terminaux connectés clients selon la revendication 1, caractérisé en ce qu'il comporte en outre, après ladite validation des modifications, une étape d'horodatage des éléments numériques modifiés 14 4 - Procédé d'échanges de données en un serveur et une pluralité de terminaux connectés clients selon la revendication précédente, caractérisé en ce que ladite étape 5 d'horodatage comporte le calcul de condensats [hash] desdits éléments numériques modifiés et l'enregistrement horodaté desdits condensats. 5 - Procédé d'échanges de données en un serveur et 10 une pluralité de terminaux connectés clients selon la revendication 3, caractérisé en ce que ladite étape d'horodatage comporte le calcul de condensats [hash] desdits éléments numériques modifiés LM',x,r 15