SUDDIVISIONE IN DOMINIO SHARED E USER IN JSUP (BOZZA) ------------------------------------------------------------------------------ Indice Argomenti 1. Dominio Shared 2. Dominio User Un'[applicazione JSup] viene suddivisa, per supportare la multi-utenza, in due diversi domini: * Shared: la parte comune, di sistema dell'applicazione; in altre parole è la parte che non dipende dall'utente e che deve funzionare anche in assenza dell'utente (si veda [modalità di esecuzione]). Per un'applicazione JSup in esecuzione viene creata un'unica istanza del dominio shared. * User: la parte specifica del singolo utente. Per ogni utente che si collega all'applicazione JSup viene creata una sua propria istanza del dominio User, con logica e valori dei [tag] indipendenti dagli altri utenti. Per ciascun dominio si può definire del [codice] valido per l'intero dominio: * On startup: un [JavaCode] che viene eseguito all'avvio del dominio (dell'applicazione nel caso del dominio shared, alla connessione utente nel caso del dominio user). * While active: un [JavaCode] che viene eseguito periodicamente mentre il dominio è attivo (deprecato, meglio usare codice Triggered/timed). * On shutdown: un [JavaCode] che viene eseguito all'arresto del dominio (dell'applicazione nel caso del dominio shared, alla disconnessione utente nel caso del dominio user). * Condition: codice associato ad una condizione (a sua volta un [codice] che ritorna vero/falso), alla condizione si può specificare cosa fare quando diventa vera la condizione, mentre la condizione è vera (con periodo di esecuzione indicato), quando la condizione diventa false e mentre la condizione è false (con periodo di esecuzione indicato). * Triggered / Timed: codice che può essere eseguito sia quando cambia il valore (o viene forzato) di uno o più tag, oppure periodicamente ogni tot millisecondi, oppure può essere schedulato a livello di applicazione (in modalità edit) oppure può essere reso disponibile per la [schedulazione] da parte dell'utente (a runtime). Queste varie modalità di esecuzione non sono mutualmente esclusive. * JavaCode function: funzioni scritte in [JavaCode] che possono accettare dei parametri, possono ritornare un valore (e anche lanciare eccezioni) e possono essere richiamate da codice JavaCode del medesimo dominio (ma le JavaCode function del dominio Shared possono essere rese disponibili anche per il dominio User) o anche da [Math code]. Possono essere richiamate anche da parte di [Math code] embedded in stringhe, per esempio descrizioni di allarmi o [Tag I/O item] [calcolati]. * Key code: disponibile solo per dominio User, permette di associare (globalmente in tutta l'applicazione e non per una singola [finestra]) la pressione di un tasto (o una combinazione di tasti) all'esecuzione di un codice ([JavaCode] tipicamente. * JavaCode common: Codice Java che permette di definire campi statici globali o anche metodi statici, anche se è meglio, quando è possibile, utilizzare delle JavaCode function a questo scopo. 1. Dominio Shared Il dominio condiviso (di sistema) comprende: * i [tag] shared del database delle variabili: Tools / Tag database; * la comunicazione con i dispositivi esterni (per i [tag] shared per i quali vengono definiti degli [I/O hook]); * la logica shared: File / Application properties / Edit SHARED code; * la [gestione degli allarmi]; * la gestione della storicizzazione delle variabili, degli allarmi e degli eventi: si veda [JSup historian]; * l'istanza shared dello [schedulatore di JSup]; * la gestione delle [sezioni critiche di JSup] (utilizzabili da [JavaCode] per sincronizzare l'accesso ad alcune risorse o operazioni da parte dei vari utenti connessi e/o della logica shared). 2. Dominio User Il dominio user è specifico di ogni utente connesso all'applicazione JSup, nel senso che, se ci sono più utenti connessi, ogni utente dispone di un'istanza privata del dominio user indipendente da quella degli altri utenti. Quindi la scrittura di un [tag] user da parte di un utente non ha alcun effetto sul valore del medesimo [tag] per gli altri utenti. Il dominio user comprende: * i [tag] user del database delle variabili: Tools / Tag database; * la logica user: File / Application properties / Edit USER code; * le [finestre grafiche] con la relativa logica: Window / Window properties; * l'istanza user dello [schedulatore di JSup] (il cui utilizzo è possibile, ma non comune). L'utilizzo del dominio user è utile per implementare l'interfaccia utente. Si veda, ad esempio: [Programmazione settimanale utenze con JSup e PLC].