SlideShare ist ein Scribd-Unternehmen logo
1 von 27
RTME-SL
                     Real Time Meta Event
                    Specification Language

                             Vincenzo Caruso
          DEA - Informatique Fondamental et Applications


6/20/05                                                    1
Systèmes Asynchrones
    La plupart des applications temps réel ont

    des fortes interactions avec le monde réel.
    Le monde réel peut-être modelé par un

    système asynchrone
    Chaque framework conçu par le temps réel

    doit présenter un système pour la gestion
    des événement asynchrones
Asynchrony in RT-Java
    RTSJ (Real Time Specification for Java)

    contient depuis son lancement:
        une implémentation pour le modèle à événement
    

        ATC (Asynchronous Transfer of Control)
    

        ATT (Asynchronous Thread Termination)
    

    Ils sont conçu comme une généralisation du

    modèle traditionnel de Java
    Introduction des contraintes temporelles

Modèle à événement de RTSJ
    javax.realtime.AsyncEvent


     Représente la possibilité de déclanchement pour un
      événement asynchrone
    javax.realtime.AsyncEventHandler


     Représente l’action à prendre lors qu’un événement est
      déclanché
    Enregistrement

        addHandler(AsyncEventHandler) sur une instance
    
        de AsyncEvent
        any-to-any
    

    Déclanchement

        fire() sur une instance de AsyncEvent
    
        schedulation des handlers associés
    
Modèle à événement de RTSJ
Handlers & Threads
    L’handler encapsule une action

        Il n’est pas une sous-classe de RealtimeThread!
    

        ...mais il a son comportement
    

    En fait il implante Schedulable et Runnable


    Il accepte des ReleaseParameters,

    ScheduleParameters et MemoryParameters
    Il est lié dynamiquement à un RealtimeThread par

    le support à runtime
        On évite de surcharger inutilement le scheduler par des
    
        threads que on ne sait pas quand ils seront activés
Handlers & Threads (2)
    Ce mécanisme ajoute un retard d’activation

    variable
    Si on ne peut pas tolérer cette pénalité

        BoundAsyncEventHandler
    

        L’handler a un RealtimeThread dédié dans lequel
    
        il est exécuté
        On l’utilise pour avoir une réponse immédiate à
    
        l’événement
        Souvent on lui donne une priorité très haute
    
Meta Evénement
    On veut identifier et contrôler des situations

    caractérisées par une séquence
    d’événement
    Cette séquence doit être exprimable par un

    modèle rational, donc par un langage
    On propose une description des séquences

    basée sur les expression logiques
Meta Evénement
    Un méta-événement est un AsyncEvent qui est

    déclanché lors de la vérification de l’expression
    logique qui décrive lui même
    Deux entité sont toujours associées à un méta-

    événement:
        SUPPLIERS
    
         instances de AsyncEvent
         événements de base, utilisés pour décrire la condition de
          déclanchement du méta-événement
        CONSUMERS
    
         instances de AsyncEventHandler
         schedulés lors de la validation de la condition de
          déclanchement
Proxy?
    Le méta-événement peut être considéré

    comme un proxy entre les suppliers
    (AsyncEvents) et les consumers
    (AsyncEventHandlers)
    Mais il n’est pas un proxy « pure » !

        Il a un état interne qui dépende des signaux en
    
        entrée
        Il active les suppliers lors de la détection d’une
    
        bonne séquence des signaux en entrée
L’architecture
Un exemple
    Scenario:

        Un système de schedulation pour des taches real-
    
        time
        Le scheduler nous offre des événement pour
    
        signaler les dépassement de coût et d'échéance
        pour chaque tache
            CostOverRunEvent, DeadLineMissedEvent
        

        On veut réaliser un système pour la prévention
    
        des fautes
Un exemple (2)
    Trois taches, en ordre de priorité

        t1, t2, t3
    

    On a étudié le système et on a vu que

    (statistiquement):
        trois dépassements de coût par t3 ou deux par t2 amènent
    
        à un dépassement d'échéance
        deux dépassement d’échéance par t3 suivis par un de t2
    
        amènent à un dépassement d’échéance par t1
    On veut contrôler ces situations à l’aide des méta

    événements
Un exemple (3)
    On veut utiliser des meta-événements pour

    contrôler et prévoir des crashes
        CostOverrunMetaEvent
    
            Dans son handler
        
                Deschedulation des threads t2 et t3
            
                Augmentation des leurs coûts
            
                Reschedulation
            

        DeadLineMissedMetaEvent
    
            Dans son handler
        
                Incrément de la deadline pour t2 et t3
            
Le langage
package rtme.test;
                                  directives
import custom.events.*;

Suppliers {CostOverRun, DeadLineMissed};
                                                                                  déclarations
Consumers {COHandler, DLMHandler};
MetaEvents {CostOverRunMetaEvent, DeadLineMissedMetaEvent};

MetaEvent CostOverRunMetaEvent {
Suppliers CostOverRun co1, CostOverRun co2;
Consumers COHandler coh1;
EventCondition (( co3 TIMES 3 ) OR ( co2 TIMES 2 ));
};
                                                                             définitions
MetaEvent DeadLineMissedMetaEvent {
Suppliers DeadLineMissed dl1, DeadLineMissed dl2;
Consumers DLMHandler dlmh1;
EventCondition (( dm3 TIMES 2 ) THEN dm2 ));
};

     la grammaire complète est consultable sur le site du projet: http://www.linux.it/~vcaruso/RTME-SL
La compilation
    On a plusieurs options qui caractérisant le comportement du

    compilateur:
        --parse-only
    

            fait seulement le check syntactique
        

        --generate-skeletons
    
            engendre les classes (vides) pour suppliers et consumers
        

        --output-dir [path]
    

            dit où seront placés les fichiers engedrés
        

        --use-bounds
    

            utilise BoundAsyncEvents plutôt que AsyncEvents (nécessaire pour jRate)
        

        --debug
    
            mode « verbose »
        

        --mesure
    

            place des balises pour faire des mesures (exp.)
        

    On compile l’exemple avec:

        java -jar RTME.jar --generate-skeletons --use-bounds
    
        exemple.mes
    Et on obtient...

La compilation (2)
                         Chaque méta-événement
                     
                         prend comme paramètres:
                            Les références aux
                         
                            suppliers:
                              instances de
                                AsyncEvent
                            Les références aux
                         
                            consumers:
                              instances de
                                AsyncEventHandler
                         Dans le méta-evenement:
                     
                            Un AsyncEventHandler
                         
                            pour chaque supplier
                            Un AsyncEvent auquel on
                         
                            attache les consumers
                            Le système de détection de
                         
                            sequence
Méta Evénement - la structure
interne
Définir les séquences
    Les opérateurs sont:

        AND
    
         s1 AND s2 valide avec {s1,s2} ou {s2,s1}
        OR
    
         s1 OR s2 valide avec {s1} ou {s2}
        THEN
    
         s1 THEN s2 valide avec {s1,s2} [introduit une relation
          temporelle entre les signaux]
        TIMES
    
         s1 TIMES 4 valide avec la répétition {s1,s1,s1,s1}

    Bien sur on peut combiner les effets

        ( ( (s1 OR s2) AND s3 ) THEN s4) TIMES 4
    
        Une séquence valide est {s1, s3, s4, s2, s3, s4, s3, s1, s4, s3, s1, s4}
    
Le détecteur des séquences
    En gros, il peut être considéré comme un lexer, où

    les tokens sont les signaux (événements)
    Deux possibilité de réalisation:

        approche classique: table des transitions
    

         PROs:
                temps d'exécution constant
            

            CONs:
        
                non scalable, difficile ajouter nouveaux éléments, explosion des
            
                états
        notre approche: simulation d’une réseau logique
    
Deux possibilitées
L’approche « dynamique »
    Chaque nœud de l’APT est représenté par le

    détecteur correspondant
    L’expression est modélisée comme une réseau

    logique
    Communication par événement entre gates

    package org.sorbet.realtime.rtme.detectors

        GATES: AndDetector, OrDetector, ThenDetector,
    
        TimesDetector
        Supplier’s handler: SignalDetector
    
            Il est aussi un AsyncEventHandler (BoundAsyncEventHandler)
        
        Final Gate: GlobalDetector
    
            Il est aussi un AsyncEvent (auquel on attache les consumers)
        
Hierachie des détecteurs
Exemple d’implantation
public void handle (IDetector source) {
   /* if the source is not registered, return */
   if (!_sources.contains(source))
         return;
   /* turns off the connection */
   source.disconnect();
   /* records the event
     * (_state is initialized to n in the constructor)
     */
   _state--;
   /* verifies fire condition */
   if (_state==0) {
         /* fire up the event */
         this.fire();
         /* reconnects inputs */
         this.reconnect();
   }
}
Dans la classe engendrée
    Pour créer le détecteur de:

       (((s1 AND s2) OR s3) THEN s3 ) TIMES 4



/* creation of the global external event */
_globalDetector = new GlobalDetector(new AsyncEventHandler[] {c1});

/* creation of internal interconnections */
IDetector detector_0 = new TimesDetector(_globalDetector, 4);
IDetector detector_1 = new ThenDetector(detector_0);
IDetector detector_2 = new OrDetector(detector_1);
IDetector detector_3 = new AndDetector(detector_2, 2);
IDetector s1Handler_4 = new SignalDetector(s1, detector_3);
IDetector s2Handler_5 = new SignalDetector(s2, detector_3);
IDetector s3Handler_6 = new SignalDetector(s3, detector_2);
IDetector s3Handler_7 = new SignalDetector(s3, detector_1);
Prochainement
    Nouveaux opérateurs


    Possibilité d'intégrer directement du code Java

    dans la définition de méta événement
    Amélioration des performances


    Création d’une nouvelle construction dans le

    langage qui permet la construction d’une table de
    transition avec AsyncEvents as inputs
        ex: CurrentState -- Event -- NextState -- Action
    
Conclusions
    Notre but est de séparer, dans l'ingénierie

    des systèmes temps réel, la partie qui
    concerne la logique de l’application e la
    partie qui gère les événements asynchrones
    Pour participer:

        http://www.linux.it/~vcaruso/RTME
    

        téléchargement des sources et de la
    
        documentation
        package pour le testing
    

Weitere ähnliche Inhalte

Ähnlich wie Real Time Meta Events

Esa1 g formation-utilisation-de-zmanager-unified-resource-manager-pour-serveu...
Esa1 g formation-utilisation-de-zmanager-unified-resource-manager-pour-serveu...Esa1 g formation-utilisation-de-zmanager-unified-resource-manager-pour-serveu...
Esa1 g formation-utilisation-de-zmanager-unified-resource-manager-pour-serveu...CERTyou Formation
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesGeeks Anonymes
 
Restructuration d applications Java Temps réel
Restructuration d applications Java Temps réelRestructuration d applications Java Temps réel
Restructuration d applications Java Temps réelCédric Mouats
 
Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroyPatrick MOREAU
 
Guide technique regulation 11
Guide technique regulation 11Guide technique regulation 11
Guide technique regulation 11Abir Khriss
 
Refractoring java generics by inferring wildcards
Refractoring java generics by inferring wildcardsRefractoring java generics by inferring wildcards
Refractoring java generics by inferring wildcardsMag-Stellon Nadarajah
 
Journées SQL Server 2011 Extended Events
Journées SQL Server 2011  Extended Events Journées SQL Server 2011  Extended Events
Journées SQL Server 2011 Extended Events David BAFFALEUF
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...sametmax
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchMourad DACHRAOUI
 
rapport_ecrit_final
rapport_ecrit_finalrapport_ecrit_final
rapport_ecrit_finalJean Ibarz
 
Protocoles d'acces aleatoires
Protocoles d'acces aleatoiresProtocoles d'acces aleatoires
Protocoles d'acces aleatoiresKONAN MARTIAL
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 
Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------NasriMohsen2
 
Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormParis_Storm_UG
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Jean-Michel Doudoux
 

Ähnlich wie Real Time Meta Events (20)

Rapport tp2 j2ee
Rapport tp2 j2eeRapport tp2 j2ee
Rapport tp2 j2ee
 
EPANET.pdf
EPANET.pdfEPANET.pdf
EPANET.pdf
 
Esa1 g formation-utilisation-de-zmanager-unified-resource-manager-pour-serveu...
Esa1 g formation-utilisation-de-zmanager-unified-resource-manager-pour-serveu...Esa1 g formation-utilisation-de-zmanager-unified-resource-manager-pour-serveu...
Esa1 g formation-utilisation-de-zmanager-unified-resource-manager-pour-serveu...
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexes
 
Restructuration d applications Java Temps réel
Restructuration d applications Java Temps réelRestructuration d applications Java Temps réel
Restructuration d applications Java Temps réel
 
Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroy
 
Guide technique regulation 11
Guide technique regulation 11Guide technique regulation 11
Guide technique regulation 11
 
Fluent
FluentFluent
Fluent
 
Refractoring java generics by inferring wildcards
Refractoring java generics by inferring wildcardsRefractoring java generics by inferring wildcards
Refractoring java generics by inferring wildcards
 
Journées SQL Server 2011 Extended Events
Journées SQL Server 2011  Extended Events Journées SQL Server 2011  Extended Events
Journées SQL Server 2011 Extended Events
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
 
rapport_ecrit_final
rapport_ecrit_finalrapport_ecrit_final
rapport_ecrit_final
 
Protocoles d'acces aleatoires
Protocoles d'acces aleatoiresProtocoles d'acces aleatoires
Protocoles d'acces aleatoires
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------
 
Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec Storm
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016
 

Real Time Meta Events

  • 1. RTME-SL Real Time Meta Event Specification Language Vincenzo Caruso DEA - Informatique Fondamental et Applications 6/20/05 1
  • 2. Systèmes Asynchrones La plupart des applications temps réel ont  des fortes interactions avec le monde réel. Le monde réel peut-être modelé par un  système asynchrone Chaque framework conçu par le temps réel  doit présenter un système pour la gestion des événement asynchrones
  • 3. Asynchrony in RT-Java RTSJ (Real Time Specification for Java)  contient depuis son lancement: une implémentation pour le modèle à événement  ATC (Asynchronous Transfer of Control)  ATT (Asynchronous Thread Termination)  Ils sont conçu comme une généralisation du  modèle traditionnel de Java Introduction des contraintes temporelles 
  • 4. Modèle à événement de RTSJ javax.realtime.AsyncEvent   Représente la possibilité de déclanchement pour un événement asynchrone javax.realtime.AsyncEventHandler   Représente l’action à prendre lors qu’un événement est déclanché Enregistrement  addHandler(AsyncEventHandler) sur une instance  de AsyncEvent any-to-any  Déclanchement  fire() sur une instance de AsyncEvent  schedulation des handlers associés 
  • 6. Handlers & Threads L’handler encapsule une action  Il n’est pas une sous-classe de RealtimeThread!  ...mais il a son comportement  En fait il implante Schedulable et Runnable  Il accepte des ReleaseParameters,  ScheduleParameters et MemoryParameters Il est lié dynamiquement à un RealtimeThread par  le support à runtime On évite de surcharger inutilement le scheduler par des  threads que on ne sait pas quand ils seront activés
  • 7. Handlers & Threads (2) Ce mécanisme ajoute un retard d’activation  variable Si on ne peut pas tolérer cette pénalité  BoundAsyncEventHandler  L’handler a un RealtimeThread dédié dans lequel  il est exécuté On l’utilise pour avoir une réponse immédiate à  l’événement Souvent on lui donne une priorité très haute 
  • 8. Meta Evénement On veut identifier et contrôler des situations  caractérisées par une séquence d’événement Cette séquence doit être exprimable par un  modèle rational, donc par un langage On propose une description des séquences  basée sur les expression logiques
  • 9. Meta Evénement Un méta-événement est un AsyncEvent qui est  déclanché lors de la vérification de l’expression logique qui décrive lui même Deux entité sont toujours associées à un méta-  événement: SUPPLIERS   instances de AsyncEvent  événements de base, utilisés pour décrire la condition de déclanchement du méta-événement CONSUMERS   instances de AsyncEventHandler  schedulés lors de la validation de la condition de déclanchement
  • 10. Proxy? Le méta-événement peut être considéré  comme un proxy entre les suppliers (AsyncEvents) et les consumers (AsyncEventHandlers) Mais il n’est pas un proxy « pure » !  Il a un état interne qui dépende des signaux en  entrée Il active les suppliers lors de la détection d’une  bonne séquence des signaux en entrée
  • 12. Un exemple Scenario:  Un système de schedulation pour des taches real-  time Le scheduler nous offre des événement pour  signaler les dépassement de coût et d'échéance pour chaque tache CostOverRunEvent, DeadLineMissedEvent  On veut réaliser un système pour la prévention  des fautes
  • 13. Un exemple (2) Trois taches, en ordre de priorité  t1, t2, t3  On a étudié le système et on a vu que  (statistiquement): trois dépassements de coût par t3 ou deux par t2 amènent  à un dépassement d'échéance deux dépassement d’échéance par t3 suivis par un de t2  amènent à un dépassement d’échéance par t1 On veut contrôler ces situations à l’aide des méta  événements
  • 14. Un exemple (3) On veut utiliser des meta-événements pour  contrôler et prévoir des crashes CostOverrunMetaEvent  Dans son handler  Deschedulation des threads t2 et t3  Augmentation des leurs coûts  Reschedulation  DeadLineMissedMetaEvent  Dans son handler  Incrément de la deadline pour t2 et t3 
  • 15. Le langage package rtme.test; directives import custom.events.*; Suppliers {CostOverRun, DeadLineMissed}; déclarations Consumers {COHandler, DLMHandler}; MetaEvents {CostOverRunMetaEvent, DeadLineMissedMetaEvent}; MetaEvent CostOverRunMetaEvent { Suppliers CostOverRun co1, CostOverRun co2; Consumers COHandler coh1; EventCondition (( co3 TIMES 3 ) OR ( co2 TIMES 2 )); }; définitions MetaEvent DeadLineMissedMetaEvent { Suppliers DeadLineMissed dl1, DeadLineMissed dl2; Consumers DLMHandler dlmh1; EventCondition (( dm3 TIMES 2 ) THEN dm2 )); }; la grammaire complète est consultable sur le site du projet: http://www.linux.it/~vcaruso/RTME-SL
  • 16. La compilation On a plusieurs options qui caractérisant le comportement du  compilateur: --parse-only  fait seulement le check syntactique  --generate-skeletons  engendre les classes (vides) pour suppliers et consumers  --output-dir [path]  dit où seront placés les fichiers engedrés  --use-bounds  utilise BoundAsyncEvents plutôt que AsyncEvents (nécessaire pour jRate)  --debug  mode « verbose »  --mesure  place des balises pour faire des mesures (exp.)  On compile l’exemple avec:  java -jar RTME.jar --generate-skeletons --use-bounds  exemple.mes Et on obtient... 
  • 17. La compilation (2) Chaque méta-événement  prend comme paramètres: Les références aux  suppliers:  instances de AsyncEvent Les références aux  consumers:  instances de AsyncEventHandler Dans le méta-evenement:  Un AsyncEventHandler  pour chaque supplier Un AsyncEvent auquel on  attache les consumers Le système de détection de  sequence
  • 18. Méta Evénement - la structure interne
  • 19. Définir les séquences Les opérateurs sont:  AND   s1 AND s2 valide avec {s1,s2} ou {s2,s1} OR   s1 OR s2 valide avec {s1} ou {s2} THEN   s1 THEN s2 valide avec {s1,s2} [introduit une relation temporelle entre les signaux] TIMES   s1 TIMES 4 valide avec la répétition {s1,s1,s1,s1} Bien sur on peut combiner les effets  ( ( (s1 OR s2) AND s3 ) THEN s4) TIMES 4  Une séquence valide est {s1, s3, s4, s2, s3, s4, s3, s1, s4, s3, s1, s4} 
  • 20. Le détecteur des séquences En gros, il peut être considéré comme un lexer, où  les tokens sont les signaux (événements) Deux possibilité de réalisation:  approche classique: table des transitions   PROs: temps d'exécution constant  CONs:  non scalable, difficile ajouter nouveaux éléments, explosion des  états notre approche: simulation d’une réseau logique 
  • 22. L’approche « dynamique » Chaque nœud de l’APT est représenté par le  détecteur correspondant L’expression est modélisée comme une réseau  logique Communication par événement entre gates  package org.sorbet.realtime.rtme.detectors  GATES: AndDetector, OrDetector, ThenDetector,  TimesDetector Supplier’s handler: SignalDetector  Il est aussi un AsyncEventHandler (BoundAsyncEventHandler)  Final Gate: GlobalDetector  Il est aussi un AsyncEvent (auquel on attache les consumers) 
  • 24. Exemple d’implantation public void handle (IDetector source) { /* if the source is not registered, return */ if (!_sources.contains(source)) return; /* turns off the connection */ source.disconnect(); /* records the event * (_state is initialized to n in the constructor) */ _state--; /* verifies fire condition */ if (_state==0) { /* fire up the event */ this.fire(); /* reconnects inputs */ this.reconnect(); } }
  • 25. Dans la classe engendrée Pour créer le détecteur de:   (((s1 AND s2) OR s3) THEN s3 ) TIMES 4 /* creation of the global external event */ _globalDetector = new GlobalDetector(new AsyncEventHandler[] {c1}); /* creation of internal interconnections */ IDetector detector_0 = new TimesDetector(_globalDetector, 4); IDetector detector_1 = new ThenDetector(detector_0); IDetector detector_2 = new OrDetector(detector_1); IDetector detector_3 = new AndDetector(detector_2, 2); IDetector s1Handler_4 = new SignalDetector(s1, detector_3); IDetector s2Handler_5 = new SignalDetector(s2, detector_3); IDetector s3Handler_6 = new SignalDetector(s3, detector_2); IDetector s3Handler_7 = new SignalDetector(s3, detector_1);
  • 26. Prochainement Nouveaux opérateurs  Possibilité d'intégrer directement du code Java  dans la définition de méta événement Amélioration des performances  Création d’une nouvelle construction dans le  langage qui permet la construction d’une table de transition avec AsyncEvents as inputs ex: CurrentState -- Event -- NextState -- Action 
  • 27. Conclusions Notre but est de séparer, dans l'ingénierie  des systèmes temps réel, la partie qui concerne la logique de l’application e la partie qui gère les événements asynchrones Pour participer:  http://www.linux.it/~vcaruso/RTME  téléchargement des sources et de la  documentation package pour le testing 