Questo sito utilizza cookie anche di terze parti. Per avere maggiori informazioni e per negare il tuo consenso al l'utilizzo dei cookie clicca qui. Se prosegui la navigazione acconsenti all'utilizzo dei cookie.OK
  • salta al contenuto

Documentazione openDCN

Strumenti Utente

  • Entra

Strumenti Sito

  • Ultime modifiche
  • Informativa sui cookie
Ti trovi qui: start » gli_eventi

gli_eventi

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Both sides previous revision Previous revision
Next revision
Previous revision
gli_eventi [15/05/2010 15:24]
gli_eventi [31/01/2017 11:33] (versione attuale)
Massimo Colombi
Linea 3: Linea 3:
 **Introduzione**\\ **Introduzione**\\
 \\ \\
-OpenDCN ​è una piattaforma costituita da moduli che interagiscono tra di loro attraverso ​il sistema degli eventi.\\ +openDCN ​è una piattaforma costituita da moduli che necessitano ​di scambiarsi informazioni;​ questo scambio è controllato e gestito tramite ​il “sistema degli eventi”. Possiamo considerare ​“Evento” un qualsiasi cambiamento ​che si verifica nel Sistema. \\
-Ogni modulo compie determinate funzioni solo al determinarsi di uno o più eventi, in questo modo si forma un metodo di lavoro secondo il quale si può conservare la modularità del sistema, con la possibilità di implementare nuove funzioni senza dover modificare la struttura già esistente.\\ +
- +
-Il pattern di riferimento per la gestione degli eventi si chiama ​“Implicit invocation” ([[http://​www.mach-ii.com/​resources/​intro_to_implicit_invocation.pdf | Vedi Allegato n.1]]): ogni controller è registrato come "​listener",​ ovvero colui che aspetta il verificarsi di un'​azione/​evento alla quale risponde con un'​altra azione.\\ +
-In questo modo il singolo controller non è a conoscenza di ciò che accade a livello generale, ma risponde solo ad una specifica richiesta invocata da un altro controller.\\+
 \\ \\
 +Ogni modulo compie specifiche azioni solo al verificarsi di uno o più determinati eventi, in questo modo si forma un metodo di lavoro basato sulla modularità,​ nel senso che, come in una reazione a catena, non c’è conseguenza se non si scatena la causa.\\
 +Grazie a questo meccanismo, la piattaforma gode di una struttura modulare, facilmente modellabile,​ in quanto ogni singolo controller non è a conoscenza di ciò che accade a livello generale, ma risponde solo ad una specifica richiesta invocata da un altro controller e questo permette di implementare nuove funzioni senza dover modificare la struttura esistente.\\
 +\\
 +Il pattern di riferimento per la gestione degli eventi si chiama “Implicit invocation”:​ ogni controller è registrato come “listener”,​ ovvero colui che aspetta il verificarsi di un'​azione/​evento alla quale risponde con un'​altra azione.
 +
 **La gestione in openDCN**\\ **La gestione in openDCN**\\
 \\ \\
Linea 63: Linea 64:
     …     …
 \\ \\
 +
 ---- ----
 \\ \\
-**ESEMPIO n°2**:\\+**Elenco di tutti gli eventi sino ad ora registrati**:\\
 \\ \\
-Se la nostra applicazione avesse differenti ​controller che rappresentano ​la logica ​di localizzazione di diversi tipi di dati (Case, Hotel, etc.) e noi volessimo visualizzare tutti questi dati su una sola mappa, sarebbe sufficiente registrare ogni controller sopramenzionato ​all’evento Locations.showOnMapKml.\\ +^ EVENTO ^ MODULO che RISPONDE ^ DESCRIZIONE ^ 
-Nel nostro esempio, fra le altre, nel file XML di uno dei controller listener (per esempio quello che rappresenta ​la localizzazione degli Hotel) troveremmo ​la seguente entry:\\+| Groups.addUser | notifications | Notifica l'​inserimento di un utente dal gruppo | 
 +| Groups.removeUser | notifications | Notifica ​la rimozione id un utente dal gruppo |  
 +| Blockset.blocksMap | locations; posts; menu; notifications;​ content; agenda | Risponde con un array contenente le caratteristiche dell'​istanza del controller che risponde |  
 +| Permissions.getSubjects | users; groups | Risponde con la lista dei soggetti che hanno permessi ​di compiere azioni sul modulo che chiama l'​evento |  
 +| Permissions.getActions | polls; markerset; posts; users; menu; meeting; infodiscs; ligh_poll; groups; blockset; notifications;​ content; permissions;​ agenda; wikitool | Risponde con la lista delle azioni definite nel modulo che chiama l'​evento | 
 +| Permissions.getObjects | polls; markerset; posts; users; menu; meeting; infodiscs; light_poll; groups; blockset; notifications;​ content; permissions;​ agenda; wikitool | Risponde con la lista delle istanze dei moduli ​su cui sono definiti i permessi | 
 +| Permissions.getRoles | polls; meeting; infodiscs; agenda; wikitool | Risponde con la lista dei ruoli attivi ​all'​interno dei moduli che chiamano l'evento ​| 
 +| Locations.showOnMap | posts; agenda | Risponde inviando le coordinate di localizzazione per l'​inserimento nella mappa |  
 +| Locations.legenda | posts; agenda | Risponde ritornando la legenda utile alla visualizzazione |  
 +| Users.delete | posts; infodiscs; light_poll | Risponde con la cancellazione di un utente |  
 +| Users.insert | posts; infodiscs; light_poll | Notifica l'​inserimento di un utente |  
 +| Agenda.callForTools | polls; meeting; infodiscs; lightpoll | Risponde con un array contenente ​le informazioni sul proprio strumento per permettere al modulo chiamante di operare |  
 +| Tools.whoIsMyParent | users; agenda | Risponde con un array contenente la tipologia del proprio strumento, il titolo e il path di riferimento |  
 +| Tools.whoAreMySiblings | agenda | Risponde con la lista di tutte le agende attive |  
 +| Tools.whoIsOfASpecies | agenda | Risponde con un array contenente ​la tipologia di ogni agenda attiva |  
 +| Notifications.info | posts; infodiscs| Risponde con le informazioni sulle notifiche fatte sul proprio modulo | 
 \\ \\
-    <​handlers>​ 
-    ... 
-    <handler name="​showLocationKml"​ event="​Location.showOnMapKml"/>​ 
-    ... 
-    </​handlers>​ 
 \\ \\
-Per poter visualizzare la mappa, e quindi per cercare tutti i dati in una sola volta, non rimane che scatenare l’evento //​Location.showOnMapKml//​ all’interno del controller principale della mappa attraverso la seguente notifica:\\ 
 \\ \\
-    ... 
-    $items = $this->​notify('​Location.showOnMapKml'​);​ 
-    ... 
 \\ \\
-A questo punto tutti i listener risponderanno a questo evento con un vettore contenente ​le locazioni ​e dati ulteriori che possiamo visualizzare immediatamente sulla mappa.\\+[[smarty, ​le viste e opendcn | indietro]] - [[le api | avanti]]
 \\ \\
----- 
 \\ \\
-**Elenco di tutti gli eventi sino ad ora registrati (v.1.5)**:​\\ 
 \\ \\
-^ EVENTO ^ MODULO ^ DESCRIZIONE ^ 
-| Menu.registerMenuItem | menu | Richiede gli oggetti presenti nel menu |  
-| Blockset.blocksMap | blocksets | |  
-| Permissions.getSubjects | permissions | |  
-| Permissions.getActions | permissions | |  
-| Permissions.getObjects | permissions | |  
-| Permissions.getRoles | permissions | |  
-| Locations.showOnMap | locations | |  
-| Locations.showOnMapKml | locations | |  
-| Locations.legenda | locations | |  
-| Users.delete | users | |  
-| Users.insert | users | |  
-| Users.edit | users | |  
-| Users.login | users | |  
-| Users.logout | users | |  
-| Agenda.callForTools | angendas | |  
-| Tools.whoIsMyParent | tools | |  
-| Tools.whoAreMySiblings | tools | |  
-| Tools.whoIsOfASpecies | tools | |  
-| Notifications.info | notifications | |  
gli_eventi.1273929840.txt.gz · Ultima modifica: 05/06/2013 17:08 (modifica esterna)

Strumenti Pagina

  • Mostra pagina
  • Revisioni precedenti
  • Puntano qui
  • Torna su
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è soggetto alla seguente licenza: CC Attribution-Noncommercial-Share Alike 3.0 Unported
CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki