Variabili condivise

Le variabili condivise vengono utilizzate per salvare lo stato, sia a livello di modulo che per la durata di un job.

Utilizzando variabili condivise, è possibile condividere i dati tra le istanze di processo associati a un modulo o a un job. Un’ istanza di processo può leggere o aggiornare i dati memorizzati in una variabile condivisa. I dati di variabili condivisi aggiornati da un’ istanza di processo sono accessibili da altre istanze di processo di un Modulo o job.

Ci sono due tipi di variabili condivise: variabili condivise dal modulo e variabili condivise dal job. Sia le variabili condivise di modulo che quelle di job sono definite a livello di modulo e sono accessibili da un processo utilizzando le activity Set Shared Variable e Get Shared Variable.

Modulo Variabili condivise

Le variabili condivise dei moduli sono utilizzate per condividere lo stato a livello di modulo e sono visibili a tutte le istanze di processo create dai processi che si trovano all’ interno di un modulo. Le variabili condivise del modulo possono essere lette e aggiornate dalle istanze di processo durante l’ esecuzione. Una volta aggiornato il valore, il nuovo valore è disponibile per tutte le istanze di processo create dai processi che si trovano all’ interno del modulo.
Consideriamo un esempio in cui i tassi di cambio sono aggiornati quotidianamente e i tassi di cambio aggiornati dovrebbero essere accessibili a tutti i processi di un modulo. È possibile creare una variabile condivisa di modulo per mantenere il tasso di cambio e utilizzare un processo nel modulo per aggiornare il tasso di cambio. Tutti gli altri processi del modulo che richiedono il tasso di cambio possono recuperare il valore corrente attraverso la variabile condivisa dal modulo.

Variabile Condivisa Persistente di Modulo

Lo stato corrente di una variabile condivisa di un modulo viene memorizzato in memoria di default e lo stato della variabile condivisa del modulo viene perso nel caso in cui il sistema ActiveMatrix BusinessWorks (o l’ AppNode) si arresti. Tuttavia, per mantenere lo stato attuale in caso di errore, è possibile configurare la variabile condivisa del modulo come persistente. Quando una variabile condivisa di un modulo è configurata come persistente, il suo stato corrente viene scritto nel database del sistema e al riavvio del sistema viene ripristinato lo stato della variabile condivisa del modulo.

Condivisione di variabili condivise di modulo tra più sistemi (AppNodes)

Uno stato di una variabile condivisa di modulo può essere accessibile attraverso più sistemi se la modalità persistente del sistema (bw.engine.peristentMode) è impostata su “group” e la variabile condivisa del modulo è configurata per essere persistente. Utilizzando l’ opzione persistenza, le stesse applicazioni di ActiveMatrix BusinessWorks con più sistemi (AppNodes) che fanno parte dello stesso gruppo di sistema possono leggere o aggiornare lo stato della variabile condivisa del modulo. Una volta aggiornato il valore, il nuovo valore è disponibile per tutti i sistemi (AppNodes) che stanno eseguendo la stessa applicazione.

Variabili di lavoro Condivisa

Le variabili condivise sono utilizzate per condividere lo stato a livello di job per la durata di un job. Una copia della variabile condivisa del job viene creata per ogni nuovo lavoro ed è accessibile a tutte le istanze di processo associate al job. Le variabili condivise possono essere utilizzate per condividere i dati tra tutte le istanze di processo di un job senza creare uno schema di input o output per il processo chiamato. Possono anche essere impostati in moduli condivisi e accessibili dai moduli applicativi dopo aver impostato le dipendenze sul modulo condiviso.

Condivisione di variabili condivise tra processi in linea e non in linea

I sottoprocessi in linea vengono eseguiti come parte dei job di processo del chiamante e quindi il valore corrente della variabile condivisa del job viene trasferito dal processo del chiamante al sottoprocesso in linea. Sottoprocessi di servizio non in linea, e sottoprocessi diretti che sono stati generati, hanno generato un nuovo thread e non vengono eseguiti sullo stesso processo del chiamante. Quindi sottoprocesso non in linea e sottoprocessi diretti che sono stati generati, ottengono una copia della variabile condivisa di job e non ottengono il valore corrente della variabile condivisa di job dal processo del chiamante.

Al momento dell’ esecuzione, il sistema assegna una nuova variabile condivisa per ogni nuovo job e il valore di tale variabile è visibile solo per quel job. L’ opzione Persistenza non è disponibile per le variabili di lavoro condivise.

Sincronizzazione variabile condivisa

Più istanze di processo possono potenzialmente accedere o aggiornare contemporaneamente una variabile condivisa. Ad esempio, è possibile accedere contemporaneamente a una variabile condivisa da più job. Senza un meccanismo di sincronizzazione, un’ istanza di processo potrebbe aggiornare il valore di una variabile condivisa mentre un’ altra istanza di processo sta tentando di leggere il valore. Ciò potrebbe comportare un valore imprevedibile per la variabile condivisa.

I gruppi di sezioni critiche possono essere utilizzati per sincronizzare l’ accesso alle variabili condivise. Un gruppo di sezioni critiche permette a una sola istanza di processo di eseguire il gruppo di sezioni critiche e i suoi contenuti in qualsiasi momento. Per sincronizzare le variabili condivise, utilizzare un gruppo di sezioni critiche per contenere le activity che accedono alle variabili condivise (Set Shared Variable e Get Shared Variable). Una volta che un’ istanza del processo inizia ad eseguire un gruppo di sezioni critiche, altre istanze del processo contemporaneamente in esecuzione associate a quel gruppo di sezioni critiche attendono all’inizio del gruppo finché l’ istanza del processo attualmente in corso non esce dal gruppo di sezioni critiche.

Questo assicura che il valore della variabile condivisa non venga modificato mentre un’ altra istanza di processo sta accedendo ad essa. Per sincronizzare più gruppi di sezioni critiche, utilizzare un blocco condiviso. un blocco condiviso può essere definito utilizzando un modulo o una variabile di lavoro condivisa.