Una variabile ESQL è un campo di dati
utilizzato per consentire di elaborare un messaggio.
E' necessario dichiarare una variabile e stabilirne il tipo prima di poter
utilizzarla. Un tipo di dati della variabile è fisso; se si crea un codice
ESQL che assegna un valore di un tipo diverso, viene implementata una
conversione implicita al tipo di dati della destinazione oppure viene
generata un'eccezione (se la conversione implicita non è supportata).
Per definire una variabile ed assegnare un nome, utilizzare
l'istruzione DECLARE.
Nota: I nomi delle variabili ESQL sono sensibili al
maiuscolo/minuscolo, per cui è importante utilizzare le lettere maiuscole o
minuscole corrette in ciascun punto. Il modo più semplice per garantire il rispetto di tale regola è quello di
definire sempre le variabili utilizzando nomi in maiuscolo.
Message Broker Toolkit indica le variabili non definite mediante dei
contrassegni di avvertenza. Rimuovere tali contrassegni di avvertenza prima di distribuire un flusso di
messaggi.
E' possibile
assegnare un valore iniziale alla variabile nell'istruzione DECLARE. Se non viene specificato un valore iniziale, le variabili scalari vengono
inizializzate con il valore speciale NULL mentre le variabili ROW vengono
inizializzate in uno stato vuoto. Successivamente, è possibile modificare il valore della variabile
utilizzando l'istruzione SET.
Sono disponibili tre tipi di nodi integrati che
possono contenere codice
ESQL e, quindi, supportare l'utilizzo delle variabili
ESQL:
Condivisione, durata ed ambito
della variabile
L'estensione e la durata della disponibilità di una particolare
variabile ESQL sono definite dall'ambito, dalla durata e dalla
condivisione della variabile:
L'ambito della variabile è una misurazione dell'intervallo di
visibilità della variabile. Nell'ambiente broker, l'ambito delle variabili è generalmente limitato al nodo.
La durata della variabile è l'intervallo di tempo durante il
quale la variabile conserva il proprio valore. Nell'ambiente broker, la durata di una variabile varia ma è generalmente
limitata alla durata di un thread all'interno di un nodo.
Le caratteristiche di condivisione della variabile
indicano se ciascun thread possiede una propria copia della variabile
oppure se la variabile è condivisa tra più thread. Nell'ambiente broker, generalmente le variabili non sono condivise.
Tipi di variabile
E' possibile
utilizzare l'
Istruzione DECLARE per definire tre tipi di
variabile:
- Esterna
- Le variabili esterne (definite con la parola chiave
EXTERNAL) sono dette anche
UPD (user-defined properties): consultare
UDP (User-defined property) in ESQL.
Esistono per l'intera durata di un flusso di messaggi e sono visibili per
tutti i messaggi che attraversano il flusso. Il valore iniziale (facoltativamente impostato dall'istruzione DECLARE) può
essere modificato, al momento della progettazione, mediante l'editor
Flusso di messaggi oppure, al momento della distribuzione, dall'editor di
BAR. I valori delle variabili non possono essere modificati da
ESQL.
- Normale
- Le variabili "normali" hanno la durata di un messaggio che
attraversa un nodo. Sono visibili solo per quel messaggio. Per definire una variabile
"normale", omettere le parole chiave
EXTERNAL e SHARED.
- Condivisa
- Le variabili condivise possono essere utilizzate per implementare una
cache in memoria nel flusso di messaggi. Consultare
Ottimizzazione dei tempi di riposta del flusso di messaggi. Le variabili condivise hanno una durata
elevata e sono visibili per più messaggi che attraversano un flusso;
consultare
Variabili a lunga durata. Esse esistono per la durata del processo
del gruppo di esecuzione, la durata del flusso o del nodo o la durata del
codice SQL del nodo che dichiara la variabile (qualunque sia la più breve).
Sono inizializzate quando il primo messaggio passa attraverso il flusso o il
nodo dopo l'avvio di ciascun broker.
Consultare anche l'opzione ATOMIC in
Istruzione BEGIN ... END. La struttura BEGIN ATOMIC è utile
quando è necessario apportare un numero di modifiche ad una variabile
condivisa ed è importante per evitare che altre istanze vedano gli stati
intermedi dei dati.
Per informazioni relative ai tipi di variabile specifici, consultare: