CA2275187C - Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine - Google Patents

Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine Download PDF

Info

Publication number
CA2275187C
CA2275187C CA002275187A CA2275187A CA2275187C CA 2275187 C CA2275187 C CA 2275187C CA 002275187 A CA002275187 A CA 002275187A CA 2275187 A CA2275187 A CA 2275187A CA 2275187 C CA2275187 C CA 2275187C
Authority
CA
Canada
Prior art keywords
agent
notification
state
event
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA002275187A
Other languages
English (en)
Other versions
CA2275187A1 (fr
Inventor
Andre Freyssinet
Marc Herrmann
Serge Lacourte
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SA
Original Assignee
Bull SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull SA filed Critical Bull SA
Publication of CA2275187A1 publication Critical patent/CA2275187A1/fr
Application granted granted Critical
Publication of CA2275187C publication Critical patent/CA2275187C/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Abstract

La présente invention concerne un procédé de transformation et d'acheminement de données entre des serveurs d'agents présents sur des machines et un serveur d'agent central présent sur une autre machine. Ce procédé de transformation et d'acheminement est caractérisé en ce qu'un serveur d'agents comprend des agents (5) autonomes qui communiquent par notifications, une couche de stockage (Storage) et une machine à agents comportant un moteur d'exécution (1) (Engine), un canal (2) de communication (Channel) et deux queues de message pour les notifications, une queue locale (3) (mqln) et une queue externe (4) (mqOut), et en ce que le moteur d'exécution (1) prend une notification dans la queue locale (3) (mqln), détermine et charge pour chaque notification l'agent correspondant, fait réagir l'agent à la notification, l'agent pouvant alors changer son état et/ou émettre des notifications vers le canal (2) de communication qui les mémorise dans l a queue locale (3) (mqln) si elles sont adressées à un agent local et dans la queue externe (4) (mqOut) si elles s'adressent à un agent d'un autre serveur .

Description

Prdcéd~ de transformation et d'acheminement de données entre d~
serveurs d'agents présents sur des machines et un serveur d'agent central présent sur une autre machine s L'invention concerne un procédé de transformation et d'acheminement de données entre des serveurs d'agents présents sur des machines et un serveur d'agent central présent sur une autre machine.
Plus particulièrement, l'invention concerne un procédé de transformation et d'acheminement de données entre des serveurs d'agents 1o présents sur des machines de sites de production et un serveur d'agent central présent sur la machine de la base décisionnelle, tel que dans le cadre de la concentration centralisée des données, appelée aussi Datawarehouse.
Le Datawarehouse est un concept informatique visant à regrouper dans une unité centralisée, accessible par un réseau, toutes les informations is disponibles dans une entreprise. Le Datawarehouse permet une meilleure diffusion de !'information en présentant les informations non plus sous une forme brute mais de maniére directement utilisable par le demandeur ou client {les dirigeants de l'entreprise par exemple). Le Datawarehouse corcespond donc à un ou plusieurs sites de production de l'entreprise avec des bases de 2o données, et à c.8té une base décisionnelle qui peut récupérer les informations sous une nouvelle forme (mettre en concordance des informations qui peuvent ëtre représentées de manières différentes, transformer ou enlever des informations...). Sur chaque site, il existe un processus de transformation et d'acheminement des données pour remplir cette base décisionneNe. Le 25 matériel et les logiciels utilisés peuvent ètre différents d'un site à
l'autre. Dans !'art antérieur, les machines de chaque site nécessitent un logiciel particulier pour interpréter et transformer les informations de ou des bases de données du site. Un logiciel doit donc étre réécrit pour chaque site. Les processus existants actuellement utilisent la distribution sur les différentes machines d'un processus 3o synchrone d'appel de procédure à distance (RPC : Rernote Procedure Call).

z Les différentes opérations élémentaires (étapes d'extraction, de transfert, de chargement...) sont mélangées dans un algorithme. ' ~e but de l'invention est de restructurer le logiciel de transformation et d'acheminement des données de manière à ie rendre facilement extensible et à
s le rendre ouvert.
Ce but est atteint par le fait que le procédé de transformation et d'acheminement de données entre des serveurs d'agents présents sur les machines et un serveur d'agent central présent sur une autre machine se caractérise en ce qu'un serveur d'agents comprend des agents autonomes qui 1o communiquent par notifications, une couche de stockage (Storage} et une machine à agents comportant un moteur d'exécution (Engine), un canal de communication (Channel) et deux queues de message pour les notifications, une queue locale (mqln) et une queue externe (mqOut), et en ce que le moteur d'exécution prend une notification dans ia queue locale (mqln), détermine et ~s charge pour chaque notification ragent correspondant, fait réagir l'agent à
la notification, l'agent pouvant alors changer son état et/ou émettre des notifications vers le canal de communication qui les mémorise dans la queue locale (mqln) si elles sont adressées à un agent local et dans la queue externe (mqOut) si elles s'adressent à un agent d'un autre serveur.
za Selon une autre particularité, le moteur d'exécution (Engine) de la machine à agents exécute, aprés la réaction de l'agent, une sauvegarde (Save) de l'état de (agent, une élimination (Pop) de la notification traitée de la queue de message locale (mqln) et une validation {Commit), de manière atomique, des différentes opérations effectuées ayant modifié soit l'état de l'agent soit as l'état des queues de message.
Selon une autre particularité, chaque message comprend une horloge matricielle optimisée qui peut ètre lue par le moteur d'exécution de la machine à agents permettant ainsi de traiter les notifications selon leur ordre causal d'émission.

Selon une autre particularité, un message est un objet qui contient quatre informations qui sont l'identificateur de l'agent émetteur, l'identificateur de l'agent destinataire, une horloge et la notification.
Selon une autre particularité, la machine à agents gère la distribution à
s toutes les entités du réseau, la fiabilité des opérations et l'ordonnancement des messages qui est établi par l'incrémentation d'une horloge logique matricielle.
Selon une autre particularité, le canal de message effectue les transactions séparées suivantes - une notification émise par un agent est localement mémorisée io dans une queue de message, à savoir soit la queue locale (mqln) pour les notifications adressées à un agent local, soit la queue externe (mqOut) pour un agent situé sur un autre serveur ;
- à la fin de la réaction de l'agent, les deux queues sont sauvées sur le disque, ensemble avec l'agent réactif ;
~s - une fonction (handleout) du réseau extrait tour à tour chaque notification de la queue externe (mqOut) et l'envoie au serveur d'agent cible ;
- une fonction (handlein) du réseau reçoit les notifications des autres serveurs et les insère dans la queue locale (mqln) suivant 20 l'ordre causal.
Selon une autre particularité, un serveur agent cible reçoit un message, if le mémorise sur sa couche de stockage (Storage) persistante, valida l'opération (commit) et confirme la réception du message au serveur source, sur réception de cette confirmation, le serveur source élimine le message de sa 2s queue externe (mqOut).
Selon une autre particularité, un service de persistance externe assure l'atomicité des opérations ayant modifié soit l'état de l'agent soit l'état des queues de message (3, 4).
Selon une autre particularité, le moteur d'exécution 3o - prend une notification qui est dans la queue par la fonction Get, - regarde à quel agent la notification s'adresse, - charge l'agent correspondant à ia notification (Load).
- fait réagir l'agent en appelant une opération de réaction (React), l'agent peut d'une part modifier son état en modifiant son image en s mémoire, et d'autre part envoyer des notifications en s'adressant au canal qui va répartir la notification, les notifications étant alors routées vers une queue de message où elles sont mémorisées dans un ordre chronologique, - si l'opération de réaction est exécutée, sauvegarde (Save) l'état de 1o l'agent qui a été modifié par la réaction qu'il a exécutée, supprime {Pop) la notification qui a été traitée, et valide de manière atomique toutes les opérations qui ont été faites (Commit), - repart dans la boucle de programme pour traiter une autre notification.
is Selon une autre particularité, le procédé de transformation et d'acheminement de données s'effectue entre des serveurs d'agents présents sur des machines de sites de production et un serveur d'agent central présent sur la machine d'une base décisionnelle et fait appel à un agent particulier (Event) décrivant les événements spécifiques, dans lequel un automate d'état 2o est implémenté. , Selon une autre particularité, l'automate d'état comprend différents états - un état None où l'évènement n'est pas actif, - une notification (Schedule) fait passer l'événement à l'état Wait où
zs l'événement attend que sa condition d'activation devienne vraie, l'événement signale à lui-méme une notification qui le fait passer à
l'état Init ;
- un événement simple obtient directement l'état Run et exécute son action, un événement composé signale à ses sous-événements son accord pour qu'ils commencent et attend que le premier d'entre eux atteigne l'état Run pour passer lui-mérne à l'état Run ;
- un événement simple passe ensuite à l'état Done ou Fail selon l'état de son action, pour un événement composé, ce changement dépend s des états d'exécution de tous les sous-évènements ;
- un événement en exécution peut être tué en lui envoyant une notification (Eventkill), il passe alors à l'état Kill, marquant qu'il a été
tué, et ensuite à !'état Stop quand il a en effet été tué ;
- un événement de terminaison, c'est-à-dire dans l'état Done, Fail ou 1o Stop peut encore être effectué par le client en fui émettant une notification (Schelude), il est alors ramis à zéro et passe à l'état Wait ;
l'événement propage alors !a notification à tous les sous-événements ;
un événement répétitivement effectué et doté d'un état Done est automatiquement remis à zéro par fag8nt Scheduler qui lui envoie is une notification (Schelude) ;
- un événement dans l'état Fail ou Stop peut être effectué à nouveau sans âtre remis à zéro par envoi d'une notification (Eventrestart), quand cette condition redevient 'vrai', l'événement recommence au point à partir duquel il a été précédemment arrété.
2o Selon une autre particularité, un fonctionnement nouveau peut âtre rajouté à l'architecture en ajoutant une classe d'agent qui dérive de la classe 'Évent'.
Selon une autre particularité, trois catégories d'agent de type 'Évent', 'SeqEvent', 'ParEvent', 'CompIexEvent' prennent d'autres opérations 2s élémentaires de type 'Évent' pour les exécuter respectivement de maniére séquentielle, en paralléle, ou en prenant en compte les dépendances entre les différentes opérations.
D'autres particularités et avantages de la présente invention apparaitront plus clairement à la lecture de Ia description ci-après faite en 3o référence aux dessins annexés dans lesquels - la figure 1 représente l'architecture d'un serveur d'agent sur un site et l'algorithme du moteur d'exécution de la machine à agents ;
- la figure 2 représente l'automate d'états d'un agent'Event' ;
-les figures 3, 4 et 5 représentent respectivement la classe 'Agent', la s classe 'Channel' et la classe 'messageQueue'.
Schématiquement, sur chaque site de production, il existe une ou plusieurs machines constituées d'un serveur d'agents. Les communications entre les serveurs d'agents sont stablies par un réseau, un composant Network par exemple. Dans chaque serveur d'agent, on définit une machine à agents to avec au-dessus la possibilité de définir des agents, avec un certain modèle d'agents. Cette machine à agents gère un certain nombre de propriétés qui sont d'une part l'aspect atomique de la réaction d'un agent à une notification et d'autre part la délivrance des notifications suivant un ordre causal d'émission.
La machine à agents comprend différentes entités. En référence à la figure 1, ts la machine à agents comprend un moteur d'exécutian (1 ) (Engins), un canal
(2) de communication ou bus de message (channel) associé au moteur d'exécution (1), le canal (2) possède deux queues, une queue locale (3) (mqln) et une queue externe (4) (mqOut). Le serveur d'agents (10) comporte aussi une couche de stockage (storage). Les queues (3, 4), le canal (2) et les agents zo (5) s'appuient sur la couche de stockage.
Tous les agents (5), le canal (2) de communication et le moteur d'exécution (1 ) de la machine à agents sont des objets C++ dans un processus UNIX. La persistance est réalisée en utilisant un DBMS (Data Base 25 management System). La plupart des objets, et pas seulement les agents, peuvent ëtre mémorisés dans la couche de stockage de persistance. Chaque objet possëde un identificateur unique et persistant. Les objets suivent une intertace générique pour étre utilisés par des fonctions de service de persistance communes.

Les agents {5) sont des entités de programmation élémentaire et d'exécution. Les agents (5) sont autonomes pour obtenir la propriété
d'extensibilité de la structure sn pouvant ajouter et enlever facilement des agents dans l'architecture. Ils sont rendus autonomes en définissant s parfaitement l'interface de ces agents. Ils sont autonomes aussi en terme de communication. Ils communiquent en utilisant des notifications et non par appel de procédure, ce qui permet d'ouvrir l'architecture. Un événement est représenté par une notification. Les notifications passent par le canal (2) et sont contrôlées par le moteur d'exécution (1 ) (Engine) de la machine à agents. Les io not~cations sont portées aux agents via le canal de communication (2) {Channe)}. Les agents (5) sont des objets persistants, leur état est fait de données qui existent en dehors de toutes structure d'exécution. Un agent {5) est une machine indépendante qui réagit aux notifications. Tous les agents sont indépendants et seuls les agents réactifs ont besoin d'étre chargés dans la is mémoire. Cn appelle "agent réactif' un agent qui vient de recevoir une notification et dent le comportement est imposé par la fonction 'React' de l'agent appelée par le moteur d'exécution (1 ) (Engine). Ces agents réactifs peuvent ensuite étre replacés sur le disque à la fin de la boucle de programme du moteur d'exécution (1 ) qui sera décrit après. Chaque agent est un objet 2o d'une classe et est identifié par un identi~cateur (Agentld) unique qui permet de le localiser. Un agent peut étre créé sur un serveur à distance. L'entité de création est responsable de la création de l'identificateur. La structure de l'identificateur doit prendre en compte la localisation statique des agents pour permettre au système de faire suivre les notifications et une 'production' locale 2s des identificateurs pour les agents à distance. L'identificateur d'un agent comprend trois parties qui sont l'identification du serveur d'agents accueillant l'agent de création, l'identification du serveur d'agents accueillant l'agent créé
et une estampille, locale au serveur d'agent accueillant l'agent de création.
Les objets persistants sont séparés en quatre classes. Tous les objets 3o possédant les mémes propriétés ou la méme politique d'attribution des identificateurs appartiennent à une classe. Une classe définie peut étre réutilisée pour définir une sous-classe en lui ajoutant des propriétés spécifiques. Les sous-lasses héritent des propriétés de la super classe. Un graphe d'héritage définit la hiérarchie des classes. Quatre classes de base sont s ainsi définies, la classe 'globalObject', la classe 'localobjecf, la classe 'notification' et la classe 'agent' .
Les objets de la classe 'globalObjecf représentent les données de configuration, définies par le client au moment de la configuration et partagées entre les différents événements. Deux principales catégories sont décrites, les 1o hôtes dans la classe 'Hosf et les classes dérivées, et les bases de données dans la classe 'DbConfig' et les classes dérivées. Un objet de la classe ' DbConfig' pointe toujours vers un objet de la classe ' Hosf .
La classe 'IocalObject' a été définie pour apporter de la flexibilité dans la gestion de la persistance. L'interface pour la persistance impose les is mouvements de la couche de stockage (storaga) vers la mémoire et de la mémoire vers la couche de stockage de l'ensemble des objets, méme si une partie des objets n'a pas changé pendant la réaction. Déclarer un membre d'un objet dans cette classe permet de gérer explicitement la persistance de ce membre, indépendamment de la persistance de l'objet an lui-méme.
zo Les objets de la classe 'notification' représentent les messages échangés par les agents. La plupart des notifications sont relatives à la gestion des événements 'warehause'.
La classe agent représente les événements 'warehouse'. La classe d'objet 'Agent' définit l'interface générique pour tous les agents. La classe zs d'objet 'Agent' définit le comportement commun de tous les agents. Chaque agent est un objet de l'une des classes dérivant de la classe agent. La classe agent réalise un mécanisme ('swap-inlswap-out') qui permet de charger ou de trouver dans la mémoire principale les agents pour les activer et de décharger les agents non utilisés depuis un moment. Ceci est effectué par une classe 30 'AgentHashTable' qui maintient une liste des agents déjà en mémoire avec la date de leur dernier accès. Cette classe est réalisée en utilisant une table (Hashtable) avec l'identificateur d'agent en première position. Les agents peuvent ètre explicitement enlevés de la mémoire par une fonction 'Delete' Qui les enlève de la table {Hashtable). En référence à la figure 3, la classe d'objet s 'Agent' (20) définit deux fonctions, fonction 'Save' et fonction 'Load', qui sauve et charge l'état des objets sur et à partir de la mémoire auxiliaire. Les agents, identifiés par leurs identificateurs, sont chargés automatiquement par le moteur d'exécution (1 ). Le comportement réactif est implémenté par une fonction 'React', qui définit la réaction d'un agent quand i! reçoit une notification.
Cette io fonction est appelée pat le moteur d'exécution (1 ) de la machine à agents.
Un premier type d'agent 'Agenda' ou 'planifieur' (Scheduler) va gérer l'exécution des requétes 'warehouse' dans le temps. Cet agent est activé par réception d'une notification (Schedule) (32). Cet agent réagit à cette notification en sélectionnant les agents qu'il doit réveiller par envoi d'une notification ~s d'accord (AgreementScheduler). II va gérer 1e temps et les alarmes, les agents vont pouvoir lui demander d'être 'réveillés' à une certaine date. Cet agent est présent seulement sur le serveur d'agent central de la base décisionnelle.
Un second type d'agent 'usine' (factory) est présent sur tous les serveurs d'agent et a la charge de créer des objets sur le serveur. II permet de 2o gérer la création des agents à distance.
Un troisi8me et quatrième types d'agent 'UnixEvent' et 'SigChld' permettent de gérer les processus UNIR. 'Sigchild' existe sur un serveur d'agent UNIX et attrape les signaux de terminaison des processus 'enfants'.
Un cinquième type d'agent 'Clientproxy' permet de transcrire en des zs notifications des commandes ordonnées par un client. II existe seulement sur le serveur d'agent central et soutient la relation avec le client.
Une classe d'agent 'Event' décrit les événements 'warehouse'. Une requète 'warehouse' est composée de plusieurs tâches élémentaires appelées événements 'warehouse'. Dans cette architecture d'agent, chaque événement 3o est exécuté et contrôlé par un agent séparé. Tous les événements 'warehouse' possèdent un comportement et des propriétés communes qui mènent à une définition plus précise d'un type d'agent spécifique au datawarehouse :
l'agent Event. II doit respecter une certaine interface et d'autre part un mode de fonctionnement. Comme tout agent, c'est une machine à états, mais ici on va s définir les états. Un objet 'Event' différa d'un objet 'Agent' par les attributs suivant - un évènement a un nom et une description ;
- tous les événements qui forment une requéte 'warehouse' sont organisés hiérarchiquement. ha requCte est identifiée par un identificateur de l'événement io racine de la hiérarchie, tous les événements gardent ('identificateur de leurs parents et de leur requéte.
- l'objectif d'un Event est d'accomplir une action. Le commencement de l'exécution de l'action est conditionné par la réception d'une série de notifications d'accords (Agreement) (34).
1s - un objet Event consomme des listes {tables) et produit des listes résultant d'une opération d'extraction, de transfert ou de transformation par exempte.
Les tables produites sont établies avec la notification de terminaison de l'action de l'événement (ActionDone) (44), et sont représentées par des objets C++
dans la classe LocalObject.
zo - un objet Event est une machine à état, il maintient une variable d'état et rend ses changements d'états à ses parents par l'intermédiaire de notifications (StatusNotification) (45).
Deux principaux groupes d'événement peuvent être isolés. Une classe de base (DelegatingEvent) est définit pour tous les événements qui réalisent une zs opération élémentaire spécifique au datawarehousing : extraction, transfert, transformation, etc. Ces différentes opératians vont hériter de l'agent Event et donc de toutes les propriétés de cet objet. Une deuxième classe de base, de service (ComposedEvent) aide à structurer l'exécution d'une requéte exécution séquentielle, en parallèle, ou de maniére plus complexe. Cette classe 3o définit un comportement commun pour tous les événements composés tel que par exemple, la gestion de la liste des sous-évènements . création, sauvegarde, restauration, suppression (create, save, restore, delete).
Le dernier événement important est l'UnixEvent qui encapsule l'exécution d'une commande Unix.
s t.es changements possibles d'états pendant fexécutivn de l'événement sont représentés figure 2. t_e graphe d'état ou automate d'état (30) est implémenté dans l'agent EVENT en C++
- l'état NONE (31 ) est l'état initial où l'événement n'est pas actif, - une notification (Schedule) (32) fait passer l'événement à l'état Wait (33) où
1o l'événement attend que sa condition d'activation devienne vraie (True).
Cette condition dépend d'une série de notifications d'accords (Agreement) (34).
Quand cette condition devient vraie, c'est-à-dire que tous les accords ont été
reçus, l'événement signale à lui--mëme une notification (Eventstart) (35) pour commencer.
1s - sur réception de cette notification (Eventstart) (35), !'état est positionné sur Init.(36) un événement simple obtient directement l'état Run (37) et exécute son action. Un événement composé signale à ses sous-événements son accord pour qu'ils commencent et attend que le premier d'entre eux atteigne !'état Run 20 (37) pour passer fui-méme à l'état Run (37) (il attend que l'action soit vraiment commencée).
- un événement simple passe au statut Done (38) ou Fail (39) selon l'état de son action et sur réception d'une notifcation que l'événement se signale à lui mème (respectivement 44, 46). Pour un événement composé, ce changement z5 dépend des états d'exécution de tous les sous-événements.
-Un événement en exécution peut étre tué en lui envoyant une notification (Eventkill) (40), il passe alors à l'état Kill (41 ), marquant qu'il a été
tué, et ensuite à l'état Stop (42) quand il a en effet été tué, sur réception d'une notification (46).

- un événement de terminaison, c'est-à-dire dans l'état Done (38), Fail (39) ou Stop {42) peut encore étre effectué par le client en lui émettant une notification (Scheiude) (32), il est alors remis à zéro et passe à l'état Wait (33).
L'événement propage alors la notification à tous les sous-événements. Un s événement répétitivement effectué et doté d'un état Done (38) est automatiquement remis à zéro par l'agent 'Scheduler' qui lui envoie une notification (Schelude) (32).
- un événement dans l'état Fail (39) ou Stop (42) peut ètre effectué à nouveau sans étre remis à zéro par envoi d'une notification (Eventrestart) (43}. Quand 1o cette condition redevient 'vrai', l'événement recommence au point à partir duquel il a ét$ précédemment arrèté.
Dans la classe 'Évent', une fonction (Stars) permet de changer d'état et de diffuser automatiquement le changement d'état à l'opération qui gére !'opération. La fonction 'Start' permet, simplement en l'appelant, d'envoyer ~s automatiquement les notifications nécessaires et de changer d'état. La classe possède une implantation de base de réactions à un certain nombre de notifications. En particulier, il existe une procédure dans la classe de base Évent pour passer de Wait (33) à !rait (3iî). Un agent qui hérite de Évent, c'est-à-dire qui fait partie d'une sous-classe de la classe 'Évent', récupère cette zo gestion. Selon le mode standard, l'état passe en Irait (36) puis en Run (37) puis en Done (38), de Done (38) l'état peut repasser en Wait (33). C'est le schéma classique. L'implantation de base ast Wait (33), Irait (36), Run {37). Dans des classes plus spécifiques, il faut gérer manuellement le passage d'Init (36) à
Run (37). II existe une imptantation de base pour réagir à un signal de 2s demande d'arrêt (40). Sur réception de cette notification de Kill (41 ), on va passer en état Kill {41 ) puis en état Stop (42). Cette implantation peut par exemple ètre chargée dans une sous-classe, on peut dans la sous classe donner une autre fonction qui va implémenter ce passage, éventuellement le séparer en deux étapes de Run (37) ~à Kill (41 ) puis de Kilt (41 ) à Stop (42). II
3o existe donc une implantation de base de tous ces changements d'états. Quand on veut définir une classe particulière, on doit surcharger la classe Event et fournir une implantation à un certain nombre de fonctions en respectant tes règles et chaque fonction, par exemple la fonction Start, doit forcément appeler le passage à l'état Run (37). II existe donc une classe, des variables dans cette s classe qui chacune contienne un des états et des fonctions de changements d'état, qui chacune vont faire le passage par exemple de Wait (33) à Run (3T), de Run (37) à Done (38). flans la classe Event, une implantation standard est offerte, elle permet de passer directement d'Init (36) puis à Run (37), mais une classe qui va surcharger doit fournir firnplantation de la fonction Start en to mettant dans son code d'une part le passage à Init (36) puis le passage à
Run (37). Mettre une nouvelle classe d'agent revient ainsi à hériter puis fournir des implantations de nouvelles fonctions, autrement dit, rajouter un fonctionnement nouveau à !'architecture, revient à ajouter une classe d'agent qui dérive de la classe Event.
ts Le processus de transfert de données est décomposé en tâches élémentaires qui vont passer dans les états décrits précédemment, l'exécution va ainsi progresser par étapes élémentaires. Chaque opération élémentaire doit satisfaire le graphe d'état. Quand par exemple un service est demandé à
une opération élémentaire, l'opération va passer dans Wait (33) et luit (36), et zo la machine à agents (qui sera décrite après) garantit que l'opération an-ivera à
un moment donné dans l'état Done {38) ou dans l'état Fail (39) ou éventuellement si une demande d'arrét (40) a été demandée dans l'état Stop (42). L'organisation et la synchronisation des tâches élémentaires font partie d'une bibliothèque. Trois classes particulières d'agent. 'SeqEvent', 'ParEvent' zs et 'CompIexEvent', héritant de la classe 'ComposedEvent' ont été créées. Un objet 'SeqEvent' exécute ses sous-événements dans un ordre séquentiel, il réagit à une notification 'EventStart' en envoyant son accord au premier de ses sous-événements. Quand celui-ci est terminé, il démarre le sous-événement suivant. Lorsque le dernier est terminé, il passe au statut Done (38). Si un des 3o sous-événements échoue, l'objet 'SeqEvent' s'arréte et passe à l'état Fail (39).

De la méme façon, un objet ' ParEvent' exécute ses sous-événements en parallèle. II réagit à la notification Eventstart en envoyant son accord à
tous les sous-événements. II attend qu'ils aient terminé et change d'état an fonction de leurs états de terminaison. Un Objet 'ComplexEvent' permet que des s dépendances arbitraires soient fixées entre les sous-événements. Puisque chaque événement ou opération élémentaire ou chaque 'Évent' doit respecter le graphe d'états, il est possible de construire un événement qui va manipuler des sous-événements d'un type que l'an ne connaft pas mais dont on sait qu'ils respectent ce graphe, pour les faire exécuter de manière séquentielle. II est !o possible de lancer en parallèle deux opérations, par exemple deux extractions ne concernant pas les mémes bases de données et pas les mgmes sites, de se resynchroniser sur la terminaison de ces deux opérations pour lancer une autre opération, de transformation par exemple. L'ajout de ta gestion du parallélisme par exemple, tout en gardant la fiabilité de la machine à agents (qui sera ts décrite après) est possible grâce à l'architecture ouverte et extensible du processus. Ainsi différents services peuvent étre ajouts à la machine en ajoutant simplement une classe.
La machine à agents assure la diffusion des notifrcations, la transmission des not'rfications et la gestion de l'atomicité de l'ensemble. La 2o machine à agents comprend différentes entités. En référence à la figure 1, la machine à agents comprend un moteur d'exécution (1 ) (Engins), un canal (2) de communication {Channe!) associé au moteur d'exécution (1 ) (Engins), le canal (2) possède deux queues, une queue locale (3) (mqln) et une queue externe (4) (mqOut). II existe des entités bien définies et le programme (6) du 25 moteur d'exécution (1 ) met en vauvre ces différentes entités.
L'interface du canal (2) de communication (Channe!) est réalisée par la classe 'Channe!'. Suivant la figure 4, la classe 'Channe!' (21 ) définit une fonction (Sendto) qui envoie une notification à un agent ident~é. L'objet 'Channe!' est responsable de l'agent cible. L'objet 'channes' fournit les 3a propriétss suivantes : une notification acceptée par le canal (2) (Channe!) sera 1s tôt ou tard délivrée et deux notifications avec des agents source et cible identiques sont délivrées selon leur ordre d'émission.
Suivant la figure 5, la classe 'MessageQueue' (22) définit une fonction d'addition (Push) utilisée par l'objet 'Channel' pour additionner une notification s à une queue, et deux fonctions (Get et Pop) utilisées par le moteur d'exécution (1 ).
Le moteur d'exécution {1 ) ast réalisé par la classe ' Engins'. La classe 'Engins' est la pièce maftresse de (architecture. Cette classe 'Engins' procure une multiprogrammation des agents. L'architecture distribuée implique 1o plusieurs serveurs d'agent marchant sur différentes machines. Chaque agent est attaché à seulement un serveur d'agent, les entités migrantes étant les notifications. Une des propriétés essentielles de la machine d'exécution dans un serveur d'agent est l'exécution transactionnelle d'un agent réagissant à
une notification : sait toutes les actions, qui sont les notifications émises et les 1s changements d'état des agents, sont effectuées soit toutes les opérations ne sont pas effectuées. Chaque objet de la classe 'Engins' est associé à un objet de la classe 'MessageQueue', définie quand l'objet 'Engins' est créé. Le moteur d'exécution (1 ) (Engins) réalise une boucle de programme (6) qui successivement prend tes notifications de la queue de message locale (3), zo appelle et exécute la fonction de réaction (React) appropriée de (agent cible.
En référence à l'algorithme (6) du moteur d'exécution (1 ) (Engins) représenté
figure 1, - le moteur d'exécution (1 ) prend une notification qui est dans la queue locale (4) par la fonction Get.(7) zs - le moteur d'exécution (1 ) regarde à quel agent la notification s'adresse.
- le moteur d'exécution (1 ) charge l'agent correspondant à la notification (Load).
- le moteur d'exécution (1 ) va faire réagir l'agent en appelant une opération de réaction (React) (8). L'agent peu( d'une part modifier son état, 3o c'est-à-dire modifier son image en mémoire, et d'autre part envoyer (9) des notifications, c'est-à-dire s'adresser au canal (2) qui va répartir (11 ) la notification. Les notifications sont alors routées vers une queue de message (3, 4) où elles sont mémorisées dans un ordre chronologique.
- si tout se passe bien, si l'opération de réaction est exécutée s complètement, le moteur d'exécution effectue une sauvegarde (save) de l'état de l'agent qui a été modifié par la réaction qu'il a exécutée, uns suppression (pop) dans la queue de message locale (3) de la notification qui a été
traitée, et une validation de toutes les opérations qui ont été faites (Commit). Toutes ces opérations ont soit modifié l'état de la mémoire, soit l'état des queues de 1o message (3, 4} et de l'horloge matricielle qui sera définie après.
- puis le moteur d'exécution (1 ) repart dans la boucle pour traiter une autre notification.
Ce processus est distribué sur tous les serveurs d'agents des machines. Le composant NetWork (12) a la charge d'établir la communication 1s entre les serveurs d'agents. Quand le serveur d'agent s'initialise, les éventuels agents créés auparavant sent tous sur le disque en espace persistant. Quand le moteur d'exécution {1 ) voit qu'il doit faire réagir un agent particulier parce qu'il y a eu une notification vers cet agent, il va aller le mettre en mémoire, dans la mémoire du processus à partir éventuellement de l'image conservée sur le zo disque. C'est l'opération ' Load', mouvement du disque vars la mémoire.
Une partie de la réaction de l'agent source est de délivrer de nouvelles notifications aux autres agents dits agents cibles. L'envoi des notifications fait partie de la transaction du serveur d'agent source réagissant. L'éventuelle consommation de la notification fait partie de la transaction du serveur de z5 l'agent cible réagissant. La transmission de la notification du serveur de l'agent source vers le serveur de l'agent cible ne fait pas partie de la réaction de l'agent mais est réalisée par le canal (2) qui effectue les transactions séparées suivantes - une notification émise par un agent par le canal (2) est localement mémorisée 3o dans une queue de message, à savoir sait la queue locale (3) (mqln) pour les notifications adressées à un agent local, soit la queue externe (4) (mqOut) pour un agent situé sur un autre serveur.
- à la fin de la réaction de l'agent, les deux queues (3, 4) sont sauvées sur le disque, ensemble avec l'agent réactif. Les changements dans l'agent et dans s les queues de message (3,4) prennent place dans la mëme transaction, ils sont établis au même moment, - une fonction ' handleout' du réseau Netwotic extrait (15) tour à tour chaque not~cation de la queue externe (4) (mqOut) et l'envoie (13) au serveur d'agent cible, 1o - une fonction 'handlein' du réseau Network reçoit (14) les notifications des autres serveurs et les insère (16) dans la queue tocale (3) (mqln) suivant l'ordre causal. Quand le serveur agent cible reçoit IB message, il le mémorise sur sa couche de stockage (Storage) persistante, valide l'opération (commit) et confsrme la réception du message au serveur source. Sur réception de cette 1s confirmation, !e serveur source élimine le message de sa queue externe (4) (mqOut). Le message est ainsi assuré d'avoir été mémorisé de façon persistante par le serveur d'agent.
Les opérations de sauvegarde de l'état de l'agent, de suppression de la notification traitée (Save, Pop) et de validation des notifications émises doivent 2o ètre intimement liées. L'atomicité résulte de ces trois opérations. II ne faut pas, par exemple, sauvegarder l'agent et laisser la notification dans la queue locale
(3) pour ne pas traiter la notification s'il existe une panne entre les deux opérations. Cette partie doit étre gérée de façon atomique. Pour assurer l'atomicité entre ces deux opérations, on s'appuie sur un service de persistance as externe qui permet de sauver à la fois l'agent, la queue locale et la queue externe. L'ensemble est gardé dans le mëme service de persistance qui nous donne cette opération atomique. On fait des modifications, le service de persistance conserve l'ancienne version des fichiers et quand on appelle l'opération de validation 'commit' sur ce service de persistance, c'est le service 3o de persistance qui assure Que l'opération s'effectue de manière atomique.

d'atomicité inclut les modifications dans l'agent mais aussi les messages qu'il a envoyés vers l'extérieur et le message qu'il a consommé. Trois choses sont exécutées de manière atomique.
Si un problème survient lors de la réaction, les changements dans la s base de données sont annulés (Rollback). En fonction du type d'erreur, il peut ëtre nécessaire d'effectuer des opérations supplémentair~s pour resynchroniser la base de données et les objets de la mémoire et pour permettre de continuer le programme. Deux types d'erreurs peuvent apparaître.
Les erreurs du premier type sont détectées dans le code de la source et lo signalées par une 'exception' en C++. Les erreurs sérieuses (deuxième type) mènent à un signal les faisant apparaître. Dans le premier cas, l'exception peut étre traitée à tout moment, mëme partiellement. Deux cas peuvent ëtre distingués selon l'origine de l'exception. Si l'exception a été soulevée pendant la réaction de l'agent, l'agent est marqué comme ayant échoué, les opérations t5 sur la base de données sont annulées et la queue de message est remémorisée. Le moteur d'exécution (1 ) peut traiter la notification suivante.
Sinon, l'exception représente soit un signal attendu, dans ce cas la notification correspondante est créée et envoyée, soit c'est l'apparition d'une erreur sérieuse. Dans ce cas le traitement d'un signai d'erreur dépend de la position zo dans la boucle où il a été signalé. Si l'erreur apparais pendant la réaction de l'agent à une notification, alors il est traité de la méme manière qu'une exception l'est à ce moment. Si l'erreur provient de l'analyse de la notification ou du chargement de ('agent cible alors la notification est ignorée.
L'algorithme (6) de la machine à agents gére la distribution des zs notifications à toutes les entités sur le réseau et fa fiabilité de ces opérations, et surtout l'ordonnancement. On va s'assurer que les messages ont bien été
délivrés aux agents destinataires selon l'ordre d'émission. La relation entre les not~cations est établie par simple numérotation des messages, par incr~émentation d'une horloge logique. Une horloge logique permet d'obtenir un 3o certain nombre de propriétés (propriété de causalité du canal par exemple).

Dans chaque message, une horloge matricielle est incluse et chaque fois qu'un message est reçu, une partie de l'algorithme va dans un premier temps lire l'emplacement de l'horloge.
Un message est un objet qui contient quatre informations s l'identificateur de l'agent émetteur, fidentificateur de l'agent destinataire, une horloge et la notification. S'il existe n sites, l'horloge est composée d'une matrice n x n, car il faut maintenir l'état de communication de chaque site avec chaque autre site. Ghaque machine va essayer de maintenir sa propre vision des communications globales, même les communications entre deux autres 1o machines. Une matrice nxn correspond à une information très volumineuse.
Une optimisation des données transférées est effectuée. Une partie de l'algorithme d'émission calcule la part réellement utile de fhorioge et ne transfère que cette partie.
Ainsi l'invention apporte une propriété à la machine à agents, qui est 1s une résistance aux pannes car un gros processus a été découpé en petit processus élémentaire. En particulier on l'applique au datawarehouse à la distribution du processus. L.e processus de transformation et d'acheminement des données est décomposé en étapes élémentaires. Dans un processus distribué, plusieurs machines sont impactées et les risques de panne d'une zo machine ou panne de réseau sont importants. Le processus décomposé en étapes permet en particulier d'isoler un morceau, qui est la transmission de la notification d'une machine à une autre.
La machine à agents a été distribuée. Les machines à agent communiquent entre elles, les agents ne voient pas cette distribution puisqu'ils zs communiquent par notifications et s'adressent à leur machine à agents locale.
La réaction d'un agent reste locale. l.a réaction atomique qui est de modifier l'état et d'envoyer d'autres notifications reste locale. Ainsi toutes les pannes réseaux n'influent pas sur cette réaction. De plus, la transmission des notifications est elle-méme une opération atomique. Chaque notification ao envoyée est une opération atomique, ce qui permet de gérer les pannes réseau en conservant las notifications en attendant que la machine ou le réseau soit remis d'aplomb. Au niveau de la machine à agents, on va gérer les erreurs de transmission, de panne de site et panne de réseau.
Une notification est quelque chose d'asynchrone. Lorsqu'une s notification est envoyée, le programme peut continuer de manière asynchrone.
La notification est envoyée, on a la certitude qu'elle sera reçue et que la conséquence du message que l'on a envoyé sera exécutée et on n'a pas à
attendre le résultat exact. C'est ce qui correspond à la propriété d'atomicité
et de délivrance des messages et d'ordre de délivrance des messages. En to réordonnant les messages suivant leur ordre causal et avec la fiabilité de délivrance des messages, on a fait en sorte que ('émetteur va totalement pouvoir se reposer sur les propriétés apportées pour ne pas avoir à se resynchroniser, pour étre sOr que les opérations vont pouvoir étre exécutées dans le bon ordre. Ainsi la gestion des erreurs de données est enlevée du 1s programme.
En garantissant cette fiabilité du réseau, cet ordonnancement au niveau de la machine â agents, on arrive à extraire un graphe d'état relativement simple, qui est facile à bien maîtriser puisqu'il ne peut comprendre que les erreurs applicatives. Le niveau évënement (Agent Event) structure un zo peu les différents états dans lesquels on va passer, et va permettre en particulier de gérer les erreurs de niveau applicatives cette fois qui peuvent survenir à chaque étape. Les erreurs applicatives sont gérées à t'aide de l'automate d'états. En décomposant en opérations élémentaires (étape de transfert, de chargement), en ayant un automate qui réagisse correctement, zs dont on a la certitude qu'il réagit correctement, on va pouvoir identifier l'étape et recommencer uniquement cette étape.
L'agent Event est un agent spécifique au Datawarehousing. La machine à agents selon l'invention peut donc étre utilisée dans le domaine du datawarehouse, en manipulant cet agent spécifique tel que défini dans l'invention. Bien entendu, la machine à agent peut étre utilisée dans d'autres domaines, en se servant d'agents spécifiques à chacun de ces domaines. Par exemple, la machine à agent peut ètre utilisée dans le domaine du pare-feu (Netwall). Un pare-feu autorise ou interdit les connexions sur un réseau, toutes les informations concernant las actions qu'il effectue sont placées sur un s journal, un fichier (l.og), dont la taille augmente très vite. Le procédé
selon l'invention peut âtre réécrit dans un autre langage, et être utilisé pour gérer ce üchier {Log) en utilisant des agents spécifiques au domaine du pare-teu (NetwaIlEvent). Ces agents spécifiques reprennent le modèle de changement d'état de l'agent 'Event' spécifique au datawarehouse, mais en étant adapté
1o pour gérer des données de type fichier propre à l'application du pare-feu.
II est clair que d'autres modifications à la portée de l'homme du métier entrent dans le cadre de l'invention.

Claims (13)

REVENDICATIONS
1. Procédé de transformation et d'acheminement de données entre des serveurs d'agents présents sur des premières machines et un serveur d'agent central présent sur une seconde machine, caractérisé en ce qu'un serveur d'agents comprend des agents autonomes qui communiquent via des messages, chaque message comprenant au moins une notification, chacun des agents autonomes étant un objet d'une classe et désigné par un identificateur d'agent, les agents autonomes étant repartis en au moins deux classes, avec chaque classe d'agent offrant un unique type de notification, le serveur d'agents comprenant également une couche de stockage et une machine à agents comportant un moteur d'exécution, un canal de communication et deux queues de message pour les notifications, dont une queue locale et une queue externe, le moteur d'exécution prenant une notification dans la queue locale (mqln), déterminant et chargeant pour chaque notification un agent correspondant, faisant réagir l'agent à la notification, l'agent pouvant alors changer son état et/ou émettre des notifications vers le canal de communication qui les mémorise dans la queue locale (mqln) si elles sont adressées à un agent local et dans la queue externe (mqOut) si elles s'adressent à un agent d'un autre serveur.
2. Le procédé selon la revendication 1, caractérisé en ce que le moteur d'exécution exécute, après une réaction de l'agent, une sauvegarde de l'état de l'agent, une élimination de la notification traitée de la queue de message locale (mqln) et une validation, de manière atomique, de différentes opérations effectuées ayant modifié soit l'état de l'agent soit l'état des queues de message.
3. Le procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que chaque message comprend une horloge matricielle optimisée qui peut être lue par le moteur d'exécution permettant ainsi de traiter les notifications selon un ordre causal d'émission.
4. Le procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'un message est un objet qui contient quatre informations dont un identificateur d'un agent émetteur, un identificateur d'un agent destinataire, une horloge et la notification.
5. Le procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que la machine à agents gère une distribution à toutes entités d'un réseau, une fiabilité d'opérations et un ordonnancement des messages qui est établie par une incrémentation d'une horloge logique matricielle.
6. Le procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce que le canal de communication effectue des transactions séparées suivantes:
- une notification émise par un agent est localement mémorisée dans une des queues de message, à savoir soit la queue locale (mqln) pour des notifications adressées à un agent local, soit la queue externe (mqOut) pour un agent situé sur un autre serveur;
- à la fin de la réaction de l'agent, les deux queues de message sont sauvées sur un disque, ensemble avec l'agent réactif;
- une fonction (handleout) extrait tour à tour chaque notification de la queue externe (mqOut) et l'envoie à un serveur d'agent cible;
- une fonction (handlein) reçoit les notifications des autres serveurs et les insère dans la queue locale (mqln) suivant un ordre causal.
7. Le procédé selon l'une quelconques des revendications 1 à 6, caractérisé en ce que, quand un serveur agent cible reçoit un message, il le mémorise sur sa couche de stockage persistante, valide l'opération et confirme la réception du message à un serveur source et, sur réception de cette confirmation, le serveur source élimine le message de sa queue locale (mqln).
8. Le procédé selon l'une quelconques des revendications 1 à 7, caractérisé en ce qu'un service de persistance externe assure une atomicité
des opérations ayant modifiées soit l'état de l'agent soit l'état des queues de message.
9. Le procédé selon l'une quelconque des revendications 1 à 8, caractérisé en ce qu'un programme du moteur d'exécution - prend une notification qui est dans la queue locale par la fonction Get;
- regarde à quel agent la notification s'adresse;
- charge l'agent correspondant à la notification;
- fait réagir l'agent en appelant une opération de réaction, de telle sorte que l'agent puisse d'une part modifier son état en modifiant son image en mémoire, et d'autre part envoyer des notifications en s'adressant au canal de communication qui va répartir la notification, les notifications étant alors routées vers une des deux queues de message où elles sont mémorisées dans un ordre chronologique;
- si l'opération de réaction est exécutée, sauvegarde l'état de l'agent qui a été modifié par la réaction qu'il a exécutée, supprime la notification qui a été
traitée, et valide toutes les opérations qui ont été faites; et - repart dans une boucle de programme pour traiter une autre notification.
10. Le procédé selon l'une quelconque des revendications 1 à 9, caractérisé en ce qu'il s'effectue entre des serveurs d'agents présents sur des machines de sites de production et un serveur d'agent central présent sur une machine d'une base décisionnelle et qu'il fait appel à un agent particulier (Event) décrivant des événements spécifiques, dans lequel un automate d'état est implémenté.
11. Le procédé selon la revendication 10, caractérisé en ce que l'automate d'état comprend différents états:
- un état None où un événement n'est pas actif;

- une notification fait passer l'événement à un état Wait où l'événement attend que sa condition d'activation devienne 'vraie', l'événement signale à
lui-même une notification qui le fait passer à un état Init;
- un événement simple obtient directement un état Run et exécute son action, un événement composé signale à des sous-événements son accord pour qu'ils commencent et attend qu'un premier d'entre eux atteigne un état Run pour passer lui-même à l'état Run;
- un événement simple passe ensuite à un état Dope ou Fail selon l'état de son action, pour un événement composé, ce changement dépendant des états d'exécution de tous les sous-événements;
- un événement en exécution peut être tué en lui envoyant une notification, il passe alors à un état Kill, marquant qu'il a été tué, et ensuite à un état Stop quand il a en effet été tué;
-un événement de terminaison, c'est-à-dire dans un état d'un de:
i) Done, ii) Fail et iii) Stop peut encore être effectué en lui émettant une notification, il est alors remis à zéro et passe à l'état Wait; l'événement propage alors la notification à tous les sous-événements; un événement répétitivement effectué et doté de l'état Done est automatiquement remis à zéro par un agent 'Scheduler' qui lui envoie une notification;
- un événement dans l'un d'un état : i) Fail et ii) Stop peut être effectué à
nouveau sans être remis à zéro par envoi d'une notification, quand cette condition redevient 'vraie', l'événement recommence au point à partir duquel il a été précédemment arrêté.
12. Le procédé selon l'une quelconque des revendications 10 et 11, caractérisé en ce qu'un fonctionnement nouveau peut être rajouté en ajoutant une classe d'agent qui dérive d'une classe 'Event'.
13. Le procédé selon la revendication 12, caractérisé en ce que trois catégories d'agent de type 'Event', 'SeqEvent', 'ParEvent', 'ComplexEvent' prennent des opérations élémentaires de type 'Event' pour les exécuter respectivement de manière séquentielle, en parallèle, ou en prenant en compte des dépendances entre différentes opérations.
CA002275187A 1998-06-18 1999-06-15 Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine Expired - Fee Related CA2275187C (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9807718A FR2780178B1 (fr) 1998-06-18 1998-06-18 Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine
FR9807718 1998-06-18

Publications (2)

Publication Number Publication Date
CA2275187A1 CA2275187A1 (fr) 1999-12-18
CA2275187C true CA2275187C (fr) 2007-01-09

Family

ID=9527563

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002275187A Expired - Fee Related CA2275187C (fr) 1998-06-18 1999-06-15 Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine

Country Status (4)

Country Link
US (1) US6477564B1 (fr)
EP (1) EP0965920A1 (fr)
CA (1) CA2275187C (fr)
FR (1) FR2780178B1 (fr)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785666B1 (en) 2000-07-11 2004-08-31 Revenue Science, Inc. Method and system for parsing navigation information
US6910154B1 (en) * 2000-08-18 2005-06-21 Network Appliance, Inc. Persistent and reliable delivery of event messages
US7024462B1 (en) * 2000-10-20 2006-04-04 Amacis Limited Electronic message routing
US6829630B1 (en) * 2000-11-24 2004-12-07 Xerox Corporation Mechanisms for web-object event/state-driven communication between networked devices
US7672924B1 (en) * 2001-08-09 2010-03-02 Teradata Us, Inc. Systems and methods for generating information from a data collection to support decision-making
JP4149199B2 (ja) * 2002-06-05 2008-09-10 富士通株式会社 携帯端末補助装置、データ同期方法および携帯端末装置
US7739316B2 (en) * 2003-08-21 2010-06-15 Microsoft Corporation Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system
US7483915B2 (en) * 2003-08-21 2009-01-27 Microsoft Corporation Systems and method for representing relationships between units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7555497B2 (en) * 2003-08-21 2009-06-30 Microsoft Corporation Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
US7401104B2 (en) 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US7428546B2 (en) * 2003-08-21 2008-09-23 Microsoft Corporation Systems and methods for data modeling in an item-based storage platform
US20050055354A1 (en) * 2003-08-21 2005-03-10 Microsoft Corporation Systems and methods for representing units of information manageable by a hardware/software interface system but independent of physical representation
US7349913B2 (en) * 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
BR0318464A (pt) * 2003-08-21 2006-09-12 Microsoft Corp sistemas e métodos para fazer interface a programas de aplicação com uma plataforma de armazenamento baseada em item
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US8112383B2 (en) * 2004-02-10 2012-02-07 Microsoft Corporation Systems and methods for a database engine in-process data provider
US7533134B2 (en) * 2004-04-01 2009-05-12 Microsoft Corporation Systems and methods for the propagation of conflict resolution to enforce item convergence (i.e., data convergence)
US7778962B2 (en) * 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7366740B2 (en) * 2004-05-03 2008-04-29 Microsoft Corporation Systems and methods for automatic maintenance and repair of enitites in a data model
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US20070112952A1 (en) * 2005-11-14 2007-05-17 Kabushiki Kaisha Toshiba And Toshiba Tec Kabushiki Kaisha System and method for synchronized startup of document processing services
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US9110739B2 (en) 2011-06-07 2015-08-18 Microsoft Technology Licensing, Llc Subscribing to multiple resources through a common connection
US9110963B2 (en) * 2012-04-10 2015-08-18 Dell Inc Transparent adaptive file transform

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2148459C (fr) * 1993-10-08 2000-01-11 Paul Clarke Transmission de messages sur un reseau
US5706516A (en) * 1995-01-23 1998-01-06 International Business Machines Corporation System for communicating messages among agent processes
US5860159A (en) * 1996-07-01 1999-01-12 Sun Microsystems, Inc. Multiprocessing system including an apparatus for optimizing spin--lock operations
US6327630B1 (en) * 1996-07-24 2001-12-04 Hewlett-Packard Company Ordered message reception in a distributed data processing system
US6108782A (en) * 1996-12-13 2000-08-22 3Com Corporation Distributed remote monitoring (dRMON) for networks
US6292827B1 (en) * 1997-06-20 2001-09-18 Shore Technologies (1999) Inc. Information transfer systems and method with dynamic distribution of data, control and management of information
US6052363A (en) * 1997-09-30 2000-04-18 Northern Telecom Limited Method for causal ordering in a distributed network

Also Published As

Publication number Publication date
FR2780178B1 (fr) 2001-08-10
US6477564B1 (en) 2002-11-05
FR2780178A1 (fr) 1999-12-24
CA2275187A1 (fr) 1999-12-18
EP0965920A1 (fr) 1999-12-22

Similar Documents

Publication Publication Date Title
CA2275187C (fr) Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine
US6845378B1 (en) Integrated data bank combining system
RU2421799C2 (ru) Безопасность в приложениях синхронизации равноправных узлов
US6910053B1 (en) Method for data maintenance in a network of partially replicated database systems
EP0574303B1 (fr) Système de traitement transactionnel entre un serveur informatique et une pluralité de stations de travail
US20060031237A1 (en) System for development, management and operation of distributed clients and servers
US20030182461A1 (en) Service mapping method of enterprise application modeling and development for multi-tier service environments
EP0843259A1 (fr) Système de gestion et de traitement de transactions distribuées d'objets et procédé d'objets et procédé mis en oeuvre par ledit système
US20030088625A1 (en) Arbitration of state changes
US20050278278A1 (en) Class loading jar operation optimizations
JP2005527916A (ja) 作業リスト予報のためのシステムおよび方法
CN110659261A (zh) 一种数据挖掘模型发布方法及模型和模型服务管理方法
US10346420B2 (en) Database integration system
GB2461774A (en) Data approval system
US20080019366A1 (en) Process data for a data packet
US7159012B2 (en) Computational data processing system and computational process implemented by means of such a system
FR2963125A1 (fr) Procede d'execution parallele d'un processus informatique par un bus applicatif
EP3252618B1 (fr) Système d'intégration
FR2963126A1 (fr) Procede d'execution parallele d'une pluralite de taches ordonnees selon une table d'ordonnancement
CN117076508B (zh) 一种流数据处理系统支持批数据处理的方法
Chen et al. Management of simulation cloning for HLA-based distributed simulations
FR2809511A1 (fr) Systeme et procede de gestion des transactions de composants ejb dans un annuaire accede par ldap
FR2813476A1 (fr) Reseau externe d'aide a la vente et au conseil pour des produits et articles
Chiba et al. Optimization of distributed communication in multiprotocol tuple space
Marazakis et al. Workflow Management Systems: State-of-the-Art

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed

Effective date: 20180615