FR 2808348 A1 20011102 FR 0005528 A 20000428 PROCEDE POUR LA PREPARATION DYNAMIQUE DE FICHIERS NUMERIQUES CORRESPONDANT A DES MOYENS D'INFORMATION TELS QUE DES PAGES AU FORMAT HTML La présente invention concerne le domaine des télécommunications, et plus particulièrement de la communication sur réseaux informatiques tels que l'Internet ou des extranets, sous la forme de fichiers numériques constituant des pages selon le format html exploitables par un logiciel de type navigateur. On connaît dans l'état de la technique la réalisation de serveur de pages html constituant un ensemble de fichiers comportant des liens hypertextes correspondant notamment à l'adresse d'un ou de plusieurs autres fichiers. Le problème qui se pose est celui de l'actualisation d'un tel ensemble de pages constituant un site. En effet, chaque modification d'une seule fiche implique la modification de tous les fichiers s'y référant, et plus généralement la refonte de toute l'architecture du site. De même, une modification de l'aspect graphique du site implique la modification de chacun des fichiers le constituant. Le but de l'invention est de remédier à cet inconvénient un proposant un procédé permettant de construire de façon dynamique, à la volée des pages html formant un site. A cet effet, l'invention concerne selon son acception la plus générale un procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information tels que des pages au format HTML consultables par un logiciel navigateur, des messages électroniques, des fichiers numériques au format XML, ou équivalents caractérisé en ce qu'il consiste à charger dans une première base de données contenant des enregistrements correspondant à la structure d'objets informatiques et dans une deuxième base de données d'enregistrements correspondant au contenu de tels objets, et ensuite à générer dynamiquement un fichier d'information en réponse à une requête consistant à préparer un objet informatique éphémère dans lequel est enregistré une structure issue de la première base de données et un contenu issu de la deuxième base de données, l'objet informatique étant ensuite mis en forme pour être transmis à l'émetteur de la requête sous un format standardisé. L'objet informatique peut être composé d'une pluralité d'objets élémentaires. Avantageusement, la préparation de l'objet informatique destiné à la mise en forme en réponse à une requête comporte une première étape de réception de la requête de l'utilisateur, une deuxième étape de chargement de la structure de l'objet, une troisième étape de chargement du contenu de l'objet, une quatrième étape de traitement de l'objet, une cinquième étape de mise en page de l'objet en fonction de l'action à exécuter et une dernière étape de mise en page de l'objet dans son contexte. Avantageusement, l'étape de réception de la requête utilisateur consiste à recueillir des paramètres comprenant au moins le type de réponse attendue, la nature de l'objet à traiter, l'identifiant de l'objet à traiter et la désignation l'action à effectuer sur ledit objet, et à charger en mémoire ledit objet. Selon une variante préférée, l'étape de réception comporte préalablement la mise à disposition d'un lien pour la récupération par l'utilisateur d'un fichier de paramétrage. Selon une variante avantageuse, l'étape de chargement de la structure de l'objet consiste à charger dans l'objet depuis la première base de données les données relatives aux propriétés de l'objet, tels que l'identifiant de la propriété, le libellé de la propriété, l'index de cette propriété au sein de l'objet, le type de propriété et la nature de la propriété. De préférence, l'étape de chargement du contenu de l'objet consiste à charger dans l'objet depuis la seconde base de données les données relatives au contenu de l'objet. Avantageusement, les données relatives au contenu de l'objet comportent l'identifiant de la propriété, l'identifiant éventuel d'un objet parent, l'identifiant éventuel d'un objet enfant, le statut de l'élément, le code activité de l'élément. L'objet considéré peut être un objet générique se réutilisant lui-même chaque fois que nécessaire pour décrire une structure (une page, un produit) ou un processus (circuit de validation). De préférence, l'étape de traitement de l'objet comporte des traitements de création d'un nouvel élément, de modification d'un élément, de suppression d'un élément ou d'affichage d'un élément ou d'une liste d'éléments. Selon un mode de réalisation particulier, l'étape de mise en page de l'objet consiste à rediriger la requête utilisateur vers l'affichage de tout ou partie de page en réponse à son action. De préférence, l' étape de mise en page de l'objet dans son contexte consiste à réaliser l'assemblage de modules html incrustés de marqueurs spécifiques. L'invention sera mieux comprise à la lecture de la description d'un exemple de mise en #uvre non limitatif qui suit. La plate-forme utilisée par l'invention est essentiellement composée de produits logiciels comprenant d'un navigateur, d'un serveur http, d'un serveur métier, de composants logiciels spécifiques, et d'un protocole d'échange de données ainsi que de bases de données : SQL Server 7.0 Le processus selon l'invention correspond à une séquence de vie du composant logiciel spécifique. Dédié au web, ce processus en 6 étapes se déclenche à la suite de chaque requête ou click' d'un internaute naviguant sur un site piloté par l'invention. Etape 1 : Réception de la requête utilisateur Larequêteutilisateurseradutype : http://www.noheto.net/contact.asp?parameters Output=2&ob j ect~nature=OBJ&ob j ect~id=8 8 8&ob j oct~action=view Cette liste de paramètres liés à l'URL n'est pas exhaustive, mais doit cependant comporter au moins les 4 paramètres suivants : output : type de réponse attendu (HTML, HTML+XML, HTML+mail...) object~nature : nature de l'objet traité object~id . identifiant de l'objet traité object~action . action à effectuer sur l'objet traité La requête l'HTTP~request récupère les paramètres de la requête et les place dans des variables privées du composant. Exemple de récupération des paramètres principaux : - sOutput = request ('output') - sObject~nature = request ('object~nature') - sObject~id = request ('object~id') - sObject~action = request ('object~action') L'objet à traiter est chargé en mémoire : Set oObject as new object Etape 2 : chargement de la structure de l'objet Dans un premier temps, la structure de l'objet à traiter, c'est-à-dire ses propriétés, sontchargées dans l'objet oObject Exemple d'un appel de chargement de la structure:voir annexe 1 Les enregistrements reçus de la table tabie~object: de la base de données déstructure fournissent les renseignements suivants pour chaque propriété de l'objet : - l'identifiant de la propriété - le libellé de la propriété - l'index de cette propriété au sein de l'objet - le type de propriété (ex . data, child, collection, image, music) - la nature de la propriété (ex : id de l'objet en enfant si le type est child) Cette liste n'est pas exhaustive. Elle doit être complétée par des champs communs à l'ensemble des enregistrements d'une base tels que la date de création de l' enregistrement, la date de dernière modification, l'identifiant ou le code sécurité de l'opérateur. Chaque propriété est chargée dans oObject au sein d'un tableau de propriétés ou d'objets enfants. Exemple de tableau de propriétés et de tableau d'objets enfants : voir annexe 2. Etape 3 : chargement du contenu de l'objet Dans un deuxième temps, le contenu de l'objet est chargé dans le périmètre des propriétés déterminées ci-dessus : Exemple d'appel de chargement du contenu : annexe 3 Par souci d'évolutivité, les champs et le nom de la table table~(sObject~nature) sont pseudo-numériques (ex : table t~4, champs c~4~2). Ainsi, les libellés de propriétés d'objet peuvent être exprimés de façon très variable et modifiés de façon régulière. Les enregistrements reçus de la table table de la base de données db~content fournissent les renseignements suivants pour chaque propriété de l'objet : l'identifiant de l'élément l'identifiant éventuel d'un objet parent l'identifiant éventuel d'un objet enfant le statut de l'élément le code activité de l'élément Cette liste n'est pas exhaustive. Elle doit être complétée par des champs communs à l'ensemble des enregistrements d'une base tels que la date de création de l' enregistrement, la date de dernière modification, l'identifiant ou le code sécurité de l'opérateur. Certains éléments peuvent être composés de sous-éléments (ex : un objet abat-jour dans la description d'un objet lampe). Dans ce cas, l'objet parent connais l'identifiant du ou des objets enfants. Etape 4 : traitement de l'objet Les traitements communs à tous les objets sont : - New : création d'un nouvel élément de nature sObject~nature - Edit : modification d'un élément - Delete : suppression d'un élément - View : affichage d'un élément ou d'une liste d'éléments. Des traitements spécifiques peuvent être appliqués à chaque élément. Ces traitements spécifiques sont déterminés par le moteur générique [ workflow ]qui associe à un objet une action. Cette action correspondra toujours à un changement de statut d'un de ses éléments. Exemple de traitement d'un élément : annexe 4 Etape 5 : mise en page de l'objet en fonction de l'action exécutée L'objet de cette étape est de rediriger la requête utilisateur vers l'affichage de tout ou partie de page en réponse à son action. Cette étape est directement dépendante du paramètre sobject~action et sera modifiable en fonction de l'objet à traiter. Exemple de fonction de mise en page : annexe 5 Cette fonction utilise des "modèles" (templates), C'est à dire des mises en pages HTML déterminées par la charte graphique de l'organisation utilisant la plate-forme selon l'invention. Etape 6 : miseen page de l'objet dans son contexte L'objet à été traité, le composant intègre cette nouvelle action dans son contexte, c'est-à-dire la page elle-même en réponse à l'URL. Cette fonction réalise l'assemblage de blocks' html incrustés de propriétaires renseignés par les sous-éléments de la page. Exemple de fonction de mise en pages : Annexe 6 Exemple de block HTML intégrant des propriétaires: Annexe 7 Exemple d'assemblage de blocks . Annexe 8 Pour chaque sous-élément, les étapes 2 à 6 sont reproduites. Comme chaque objet peut écrire des tags propriétaires dans sa mise en page, une fonction de reparse permet au composant de reparcourir la page jusqu'à ce qu'il n'y ai plus de tags propriétaires (de type ) à remplacer. 1. Génération du premier objet logiciel... Et des autres Etant donné que tout objet composant le site est de structure eBN, le premier eBN ne peut pas être généré via Internet. Ainsi, le premier objet logiciel sera nommé Object. Il comporte comme éléments les autres objets d'un site. La procédure de création du premier eBN est la suivante : a-écriture d'un script sql de création des tables table-object.db-structure et des tables associées aux objets de première connexion (objet, page, user) b- rédaction d'un template de départ comportant au moins un tag propriétaire. c-Connexion du composant à la base de données via un fichier DSN. Exemple de script de création de la table table object . annexe. 9 L'objet abject a la particularité de pouvoir créer et supprimer d'autres objets, c'est-à-dire d'autres tables dans la base de données : 1-Une table ou groupe de tables dites 'de structure' contiennent les descriptifs et libellés de toutes les tables 'de contenu' 2-La création d'un nouvel objet correspond à la création d'une table 3-La suppression d'un objet correspond à la suppression logique de son descriptif dans la table table~object. On appelle objet spécifique le nombre d'enregistrements actifs de la table table~object, c'est-à-dire le nombre d'attributs actifs dans l'application. 2. le maillage des objets logiciels spécifiques Tout objet du système est susceptible de devenir une ou plusieurs fois enfant et parent. Les relations inter-objets sont établies lors de la définition ou la modification de la structure d'un objet. La relation peut être de type unitaire (child) ou multiple (collection) Exemple relation d'objets : abject~nature = lamp Object~property(9) .type = child .nature = lampfoot Afin de gérer ces relations parent-enfant, chaque élément d'objet comporte une propriété parent et un propriété enfant. - L'objet 'enfant' fait référence à l'identifiant de l'élément enfant. L'objet 'parent' fait référence à l'identifiant et à la nature de l'élément parent. annexe.1 call function load~object~structure (oObject as object, sObject~nature as string) as oObject function load~object~structure (oObject as object, sObject~nature as string) as oObject Select all in db~structure from table~object where field~object~nature='sObject~nature' end function 'NAME : Object-property 'DESC : Object properties Public Property Let Object-property(nVal As Integer, sVal As String) p~sObject~property(nVal) = sVal End Property Public Property Get Object~property(nVal As Integer) As String Object~property = p~sObject~property(nVal) End Property annexe. 2 'NAME : Object~children 'DESC : Object children Public Property Set Object~children(cVal As clsCollection) p~cObject~children = cVal End Property Public Property Get Object~children() As clsCollection Object~children = p~cObject~children End Property annexe. 3 call function load~object~content (oObject as object, nObject~id as numeric) as oObject function load~object~content (oObject as object, nObject~id as numeric) as oObject Select ail in db~content from table where field- (30b:; ,"ct~!1a..L") ~id= :;0bj&ct.~id end function annexe.4 call function execute~object~action (oObject as object, sObject~action as string) as oObject function execute~object~action (oObject as object, sObject~action as string) as oObject select case sObject~action case 'New' insert ... case 'Edit' update... case 'delete' delete... case... end select end function annexe. 5 call function html~object~generator(oObject as object, sObject~action as string) as string function html~object~generator(oObject as object, sObject~action as string) as string set str as string str = str = str & " " str = str & " this is an eBN generated text " str = str & -- integrate a HTML template -- str = str & " ' str = str & " " end function annexe. 6 Call function html~page~generator (oObject as object, sObject~action as string) as string Function html~page~generator (oObject as object, sObject~action as string) as string set oPage as object -- Chargement de la structure de la page et de ses sous-éléments -- Chargement du contenu de la page et de ses sous-éléments -- Intégration de la mise en page de l'objet End function annexe. 7 Nom Adresse annexe. 8 Page Header (child) Footer (child) Body (child) Menu (child) Sections (collection) Links (collection) annexe. 9 /****** Object: Table dbo.t~0 Script Date : 10:55:35 ******/ CREATE TABLE "dbo"."t~0"( "f~0~1" "int" IDENTITY (1,1) NOT NULL , "f~0~2" "datetime" NOT NULL , "f~0~3" "datetime" NOT NULL , "f~0~4" varchar (30) NOT NULL , "f~0~5" varchar (30) NOT NULL , "f~0~6" varchar (30) NOT NULL , "f~0~7" varchar (30) NOT NULL , "f~0~8" varchar (30) NOT NULL , "f~0~9" varchar (30) NOT NULL , CONSTRAINT "PK~1~14" PRIMARYKEY CLUSTERED ("f~0~5", "f~0~6")) REVENDICATIONS 1- Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information tels que des pages au format HTML consultables par un logiciel navigateur, des messages électroniques, des fichiers numériques au format XML, ou équivalents caractérisé en ce qu'il consiste à charger dans une première base de données contenant des enregistrements correspondant à la structure d'objets informatiques et dans une deuxième base de données d'enregistrements correspondant au contenu de tels objets, et ensuite à générer dynamiquement un fichier d'information en réponse à une requête consistant à préparer un objet informatique éphémère dans lequel est enregistrée une structure issue de la première base de données et un contenu issu de la deuxième base de données, l'objet informatique étant ensuite mise en forme pour être transmis à l'émetteur de la requête sous un format standardisé. L'objet informatique peut être composé d'une pluralité d'objets élémentaires. 2- Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 1 caractérisé en ce que la préparation de l'objet informatique destiné à la mise en forme en réponse à une requête comporte une première étape de réception de la requête de l'utilisateur, une deuxième étape de chargement de la structure de l'objet, une troisième étape de chargement du contenu de l'objet, une quatrième étape de traitement de l'objet, une cinquième étape de mise en page de l'objet en fonction de l'action à exécuter et une dernière étape de mise en page de l'objet dans son contexte. 3- Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 2 caractérisé en ce que l'étape de réception de la requête utilisateur consiste à recueillir des paramètres comprenant au moins le type de réponse attendue, la nature de l'objet à traiter, l'identifiant de l'objet à traiter et la désignation l'action à effectuer sur ledit objet, et à charger en mémoire ledit objet. 4- Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 3 caractérisé en ce que l'étape de réception comporte préalablement la mise à disposition d'un lien pour la récupération par l'utilisateur d'un fichier de paramétrage. 5 - Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 2 caractérisé en ce que l'étape de chargement de la structure de l'objet consiste à charger dans l'objet depuis la première base de données les données relatives aux propriétés de l'objet, tels que l'identifiant de la propriété, le libellé de la propriété, l'index de cette propriété au sein de l'objet, le type de propriété et la nature de la propriété. 6- Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 2 caractérisé en ce que l'étape de chargement du contenu de l'objet consiste à charger dans l'objet depuis la seconde base de données les données relatives au contenu de l'objet. 7 - Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 6 caractérisé en ce que les données relatives au contenu de l'objet comportent l'identifiant de la propriété, l'identifiant éventuel d'un objet parent, l'identifiant éventuel d'un objet enfant, le statut de l'élément, le code activité de l'élément. 8 - Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 2 caractérisé en ce que l'étape de traitement de l'objet comporte des traitements de création d'un nouvel élément, de modification d'un élément, de suppression d'un élément ou d'affichage d'un élément ou d'une liste d'élément. 9- Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 2 caractérisé en ce que l'étape de mise en page de l'objet consiste à rediriger la requête utilisateur vers l'affichage de tout ou partie de page en réponse à son action. 10 - Procédé pour la préparation dynamique de fichiers numériques correspondant à des moyens d'information selon la revendication 2 caractérisé en ce que l'étape de mise en page de l'objet dans son contexte consiste à réaliser l'assemblage de modules html incrustés de marqueurs spécifiques.