===== Variabili in sessione =====
In Geoweb sono presenti delle variabili in sessione, che possono essere utilizzate per stabilire comportamenti e basare ACL autorizzativi sui dati.
Le variabili in sessione, sono richiamabili nei seguenti contesti:
* **interfacce client**, tramite la configurazione negli xml dei widget di classe e nelle pagine delle DACL
* **groovy**, in tutti i codici di file groovy eseguiti in contesti non legati ad una specifica sessione utente (quindi non nei Trigger Applicativi di classe)
* **reportistiche di Jasper**, passate come parametri della report
* **codice javascript**, disponibili nel namespace globale
==== Utente Corrente ====
Si tratta del nome dell'utente attualmente connesso al sistema.
La variabile è richiamabile dalle seguenti posizioni:
=== groovy ===
gw_activeUser
@Deprecated from 4.4.0
activeUser
=== Widget e DACL ===
#{gw_activeUser}
IMPORTANTE: nelle espressioni SQL, non mettere gli apici anche se il valore che viene restituito o confrontato è una stringa. Gli apici vengono applicati in automatico da Geoweb nel momento della sostituzione del valore.
Esempio:
select cod_service_category,descr_service_category,icon_file from gwd_service_categorycod_service_owner=(select ambito1 from gwd_user_map where username=#{gw_activeUser})
=== reportistiche di Jasper ===
$P{gw_activeUser}
=== javascript ===
gwActiveUser
==== Gruppo corrente ====
Si tratta del nome del Gruppo con cui si è connesso l'utente corrente.
La variabile è richiamabile dalle seguenti posizioni:
=== groovy ===
gw_activeGroup
@Deprecated from 4.4.0
activeGroup
=== Widget e DACL ===
#{gw_activeGroup}
IMPORTANTE: nelle espressioni SQL, non mettere gli apici anche se il valore che viene restituito o confrontato è una stringa. Gli apici vengono applicati in automatico da Geoweb nel momento della sostituzione del valore.
=== reportistiche di Jasper ===
$P{gw_activeGroup}
=== javascript ===
gwActiveGroup
==== Ambito Corrente ====
Si tratta del valore di Ambito con cui si è connesso l'utente corrente.
Essendo possibile configurare più di una Categoria di Ambito, in generale occorre indicare nel parametro il nome della Categoria di ambito di cui si vuole conoscere il valore corrente.
La variabile è richiamabile dalle seguenti posizioni:
=== groovy ===
gw_activeScopeList è una lista di mappe, ognuna contenente come chiavi 'gwScopeDefinition' and 'gwScopeValue', e come valori stringhe human readable.
gw_activeScopeList
E' una lista di oggetti fatta cosi:
[
{gwScopeDefinition: "nome_categoria_ambito_1", gwScopeValue: "valore_ambito_1"},
{gwScopeDefinition: "nome_categoria_ambito_2", gwScopeValue: "valore_ambito_2"},
..
]
Esempio di utilizzo. Recupero il valore d'ambito (scopeValue) conoscendo il nome della categoria d'ambito.
String scopeValue = null;
String gwScopeDefinitionName = "nome_categoria_ambito_2";
for(def gw_activeScopeInfo: gw_activeScopeList){
if(gwScopeDefinitionName.euqals(gw_activeScopeInfo.gwScopeDefinition)) scopeValue = gw_activeScopeInfo.gwScopeValue
}
=== Widget e DACL ===
#{gw_activeScopeValue('ScopeDefinitionName')}
IMPORTANTE: nelle espressioni SQL, non mettere gli apici anche se il valore che viene restituito o confrontato è una stringa. Gli apici vengono applicati in automatico da Geoweb nel momento della sostituzione del valore.
=== reportistiche di Jasper ===
DA RIVEDERE??
$P{gw_activeScopeValue('ScopeDefinitionName')}
=== javascript ===
gwActiveScopesMap
E' un oggetto fatto cosi:
{
: {
scopeDefinitionDescription: "Categoria Ambito 1",
scopeDescription: "Categoria Ambito 1",
scopeName: "Nome ambito della cat 1",
scopeValue: "Valore d'ambito della cat 1"
},
: {
scopeDefinitionDescription: "Categoria Ambito 2",
scopeDescription: "Categoria Ambito 2",
scopeName: "Nome ambito della cat 2",
scopeValue: "Valore d'ambito della cat 2"
},
...
}
Esempio di utilizzo, se devo recuperare scopeValue il valore d'ambito corrente conoscendo la che per esempio vale 'Commessa':
var scopeValue = gwActiveScopesMap.Commessa.scopeValue;
==== Variabili Utente ====
Sono variabili con nomi definibili dall'utente e che vengono messe in sessione allo scopo di essere recuperate e utilizzate tra le diverse tipologie di meccanismi (profili applicativi, report, ACL, ecc..).
La variabile è definibile nelle seguenti modalità:
=== groovy ===
Solo per i contesti dove è disponibile il **sessionObject** (groovy eseguiti all'apertura del Progetto Geoweb)
sessionObject.addSessionParameter(key, value);
=== javascript ===
Vedi le api
* [[:custom:api_js_session_parameters#addGwSessionParameter()|addGwSessionParameter()]]
* [[:custom:api_js_session_parameters#addGwSessionParameters()|addGwSessionParameters()]]
La variabile è richiamabile dalle seguenti posizioni:
=== groovy ===
session_parameter_name
=== Widget e DACL ===
#{session_parameter_name}
IMPORTANTE: nelle espressioni SQL, non mettere gli apici anche se il valore che viene restituito o confrontato è una stringa. Gli apici vengono applicati in automatico da Geoweb nel momento della sostituzione del valore.
=== reportistiche di Jasper ===
TODO
=== javascript ===
Vedi il dettaglio della API [[:custom:api_js_session_parameters#addGwSessionParameter()|getGwSessionParameters()]].
var detailContainer = null;
..
var callback = function(sessionParameters){
var code = sessionParameters.var_cod_commessa;
var widget = detailContainer.getGwWidget({name: 'cod_service_catalog'});
if(widget && code!=null) widget.setValue(code);
}
var errorCallback = function(e){showErrorDialog(e.toString());}
getGwSessionParameters({callback: callback, errorCallback: errorCallback});
==== CODICE SOLUZIONE ====
Solo nel caso di modello dati con pagine di accesso: si tratta del codice della soluzione commerciale installata.
La variabile è richiamabile dalle seguenti posizioni:
=== groovy ===
gw_solutionCode
=== Widget e DACL ===
#{gw_solutionCode}
IMPORTANTE: nelle espressioni SQL, non mettere gli apici anche se il valore che viene restituito o confrontato è una stringa. Gli apici vengono applicati in automatico da Geoweb nel momento della sostituzione del valore.
Esempio:
select cod_func from gwa_func_profilecod_macro_func in (select cod_macro_func from gwa_macro_func where cod_macro_func_grouper in (select cod_macro_func_grouper from gwa_macro_func_grouper where cod_solution=#{gw_solutionCode}))