gwusermanual:interface:action:libreria_di_azioni

Libreria di Azioni di utilizzo comune

Si premette che le anche API esposte qui, possono essere utilizzate all'interno dei vari tipi di gwAction creabili dall'utente configuratore, come documentato qui.


Esportazione in XLS dati di una classe

Consultare la guida per Import\Export dati


Esportazione in SHP dati di una classe geometrica

standardListSelectedAllAttributeExportToShp(parameterQueryList, grid);
Deprecata dalla versione 4.2.14. Vedi nuova funzione di esportazione Import\Export dati


Aggiornamento Cache (solo per classi gerarchizzate)

updateCache(grid,'nome_classe');

In Geoweb, il codici contenuti nei file groovy possono essere eseguiti anche attraverso alcune azioni eseguite lato javascript. Per fare questo, all'interno del codice dell'azione, devono essere richiamate delle specifiche function javascript, in base all'esigenza del caso. E' comodo in fase di configurazione, copiare i template della parte javascript e della parte groovy, per poi integrare modifcando secondo le necessità. Di seguito si riporta l'elenco delle funzioni disponibili di tipo groovyAction con i relativi parametri di input necessari alla corretta esecuzione:

E' la funzione più generale ed è anche la più semplice. Prende in input - in questo ordine - solo quattro variabili:

  • /*String*/ scriptName, required, ovvero una stringa con il nome del file groovy che deve essere lanciato (senza estensione .groovy)
  • /*Object*/ parameterMap, optional, cioè un oggetto js che può contenere eventuali parametri necessari all'esecuzione del Groovy (ospitati dentro una mappa, ed accessibili lato grooyvy tramite la notazione parameterMap.nome_parametro)
  • /*function*/ callback, optional, una function che viene eseguita dopo il groovy. E' in genere usata per notifiche all'utente o, ma si può eseguire qualunque operazione necessaria.
  • /*function*/ errorCallback, optional, una function che puo eventualmente essere eseguita in caso di errore. Normalmente, in caso di errore non gestito nell'ambito del groovy (errori di rete, timeout server) viene generato e notificato un un errore in maniera automatica. Questo parametro può essere usato per una gestione custom dell'eventuale errore.

Template js

Solo scriptName è obbligatorio. Si passa parameterMap per poi poterla usare nel groovy. La callback è qui usata per mostrare messaggi di notifica sia in caso di successo, sia in caso di errore gestito tramite groovy (nel senso di stop controllato dell'esito dell'operazione)

var scriptName = 'groovy_name';
var parameterMap = {
      p1_name: 'p1_value',
      p2_name: 2,
      p3_name: true
};
var callback = function(responseHashMap){
	var result = responseHashMap.result;
	var success = result.success;
	var message = result.message;
 
	if(success){
		var custom_object= result.custom_object;
		var title = notificationMessage;
		showOkDialog({ title: title, message: message, yesCallback: function(){}});
	}else{
		var title = notificationMessage;
		var params = { title: title, message: message };
		showErrorDialog(params);
	}  
};
var errorCallback = null;
groovyActionGeneric(scriptName, parameterMap, callback, errorCallback );

Template groovy

Verrà eseguito lato server il codice groovy presente nel file specificato. E' comodo ritornare i dati di output secondo il pattern del template. Bisogna assicurarsi di popolare coerentemente il flag success, ed eventualmente un message. Si può inoltre arricchire la mappa result con ogni oggetto si renda necessario utilizzare in seguito nella callback js lato client.

def result = [:];
 
def success = false;
def message = null;
 
try{
 
	//access incoming parameters retrieving from parameterMap
	var parameterValue = parameterMap.parameter_name;
 
	//TODO
	//result.custom_object = [a: 1];
	// . . .
	/*if(my_blocking_condition){
		success = false;
		message = 'KO';
	}*/
 
	//set success to true
	success = true;
	message = 'OK';
 
}catch(Exception e){
	//something goes wrong
	log.error(e.getMessage(), e); //log it
	success = false; //set flag to false
	message = 'ko';
}finally{
	result.success = success;
	result.message = message;
}
 
return result;

Permette di invocare l'esecuzione di codice groovy, avente in ingresso le informazioni di una determinata lista di record della classe in oggetto. E'una API js ad uso interno, invocata automaticamente per le gwAction del tipo Selezionati in Lista.

In alcuni casi può essere usata direttamente dall'utente configuratore, popolando coerentemente l'oggetto queryParameter, al fine di ritrovarsi in ingresso al codice groovy la variabile List<Map<String,Object» items contenente i record selezionati. Parametri (ordinati) in ingresso alla function:

  • /*String*/ scriptName, required, ovvero una stringa con il nome del file groovy che deve essere lanciato (senza estensione .groovy)
  • /*Object*/ queryParameter , required, oggetto js contenente le informazioni per far si che venagno filtrati i record dati in input al codice groovy. L'unica proprietà dell'oggetto su cui l'utente configuratore dovrebbe agire è filters, un array ordinato contenente gli oggetti filter
    var queryParameter = {
          filters: [
                {condition: 'AND', columnName: 'status', operator: '=', filterType: 'STRING', value: 'CLO'},
                {condition: 'AND', columnName: 'type', operator: 'IN', filterType: 'INTEGER', value: [1,2,3,5,7]}
          ]
    };
  • /*dojox/EnhancedDatagrid | Object*/ grid, required, nell'uso automatico la griglia di geoweb. Puo essere sostituito con un oggetto javascript, contenenete il gwClassName, fatto cosi {gwClassName: 'gw_class_name'}
  • /*function*/ callback, optional, una function che viene eseguita dopo il groovy. E' in genere usata per notifiche all'utente o, ma si può eseguire qualunque operazione necessaria.
  • /*function*/ errorCallback, optional, una function che puo eventualmente essere eseguita in caso di errore. Normalmente, in caso di errore non gestito nell'ambito del groovy (errori di rete, timeout server) viene generato e notificato un un errore in maniera automatica. Questo parametro può essere usato per una gestione custom dell'eventuale errore.

Template js

Solo scriptName è obbligatorio. Si passa queryParameter al fine di permettere a Geoweb di eseguire la query di selezione record per noi, e darci direttamente la lista dei record selezionati nel groovy. La callback è qui usata per mostrare messaggi di notifica sia in caso di successo, sia in caso di errore gestito tramite groovy (nel senso di stop controllato dell'esito dell'operazione)

var scriptName = 'groovy_name';
var queryParameter = {
      filters: [
            {condition: 'AND', columnName: 'status', operator: '=', filterType: 'STRING', value: 'CLO'},
            {condition: 'AND', columnName: 'type', operator: 'IN', filterType: 'INTEGER', value: [1,2,3,5,7]}
      ]
};
var gwClassName = 'gw_class_name';
var callback = function(responseHashMap){
	var result = responseHashMap.result;
	var success = result.success;
	var message = result.message;
 
	if(success){
		var custom_object= result.custom_object;
		var title = notificationMessage;
		showOkDialog({ title: title, message: message, yesCallback: function(){}});
	}else{
		var title = notificationMessage;
		var params = { title: title, message: message };
		showErrorDialog(params);
	}  
};
var errorCallback = null;
groovyActionList(scriptName, queryParameter, {gwClassName: gwClassName}, callback, errorCallback );

Template groovy

Verrà eseguito lato server il codice groovy presente nel file specificato. La lista dei record derivanti dal filtro impostato nel javascript sarà ritornata sotto la variabile items (item sarà disponibile e conterrà solo il primo record). E' comodo ritornare i dati di output secondo il pattern del template. Bisogna assicurarsi di popolare coerentemente il flag success, ed eventualmente un message. Si può inoltre arricchire la mappa result con ogni oggetto si renda necessario utilizzare in seguito nella callback js lato client.

def result = [:];
 
def success = false;
def message = null;
 
try{
 
	//cycling items
	for(def item : items){
		var property_value = item .property_name;
		...
	}
 
	//access only the first incoming item trought items or item (with only the first element of List, for groovy detail compatibility)
	var property_value = items[0].property_name; 	//var property_value = item.property_name;
 
 
 
	//TODO
	//result.custom_object = [a: 1];
	// . . .
	/*if(my_blocking_condition){
		success = false;
		message = 'KO';
	}*/
 
	//set success to true
	success = true;
	message = 'OK';
 
}catch(Exception e){
	//something goes wrong
	log.error(e.getMessage(), e); //log it
	success = false; //set flag to false
	message = 'ko';
}finally{
	result.success = success;
	result.message = message;
}
 
return result;

@Deprecated Permette di invocare l'esecuzione di codice groovy, avente in ingresso le informazioni di uno specifico record della classe in oggetto. Era una API js ad uso interno, invocata automaticamente per le gwAction di tipo del tipo Dettaglio. Non andrebbe utilizzata dall'utente configuratore Parametri (ordinati) in ingresso alla function:

  • /*String*/ scriptName, required, ovvero una stringa con il nome del file groovy che deve essere lanciato (senza estensione .groovy)
  • /*Object*/ item , optional, [non utilizzare] @Deprecated
  • /*Integer*/ rowIndex, optional, [non più usato] @Deprecated
  • /*dojox/EnhancedDatagrid*/ grid, optional, [non più usato] @Deprecated
  • /*Object*/ data, required, è un oggetto contenente dei parametri necessari all'esecuzione del groovy, tra cui varie informazioni sulla classe, come la variabile gwClassName con il nome della classe e il nome della colonna associata alla chiave primaria della relativa tabella
  • /*function*/ callback, optional, una function che viene eseguita dopo il groovy. E' in genere usata per notifiche all'utente o, ma si può eseguire qualunque operazione necessaria.
  • /*function*/ errorCallback, optional, una function che puo eventualmente essere eseguita in caso di errore. Normalmente, in caso di errore non gestito nell'ambito del groovy (errori di rete, timeout server) viene generato e notificato un un errore in maniera automatica. Questo parametro può essere usato per una gestione custom dell'eventuale errore.

Template js

Solo scriptName è obbligatorio. Si passa parameterMap per poi poterla usare nel groovy. La callback è qui usata per mostrare messaggi di notifica sia in caso di successo, sia in caso di errore gestito tramite groovy (nel senso di stop controllato dell'esito dell'operazione)

var scriptName = 'groovy_name';
var data= {
      gwClassName: 'gwClassName ',
      ..
};
var callback = function(responseHashMap){
	var result = responseHashMap.result;
	var success = result.success;
	var message = result.message;
 
	if(success){
		var custom_object= result.custom_object;
		var title = notificationMessage;
		showOkDialog({ title: title, message: message, yesCallback: function(){}});
	}else{
		var title = notificationMessage;
		var params = { title: title, message: message };
		showErrorDialog(params);
	}  
};
var errorCallback = null;
groovyActionDetail(scriptName, null, null, data, callback, errorCallback );

Template groovy

Verrà eseguito lato server il codice groovy presente nel file specificato. Il record in input sarò disponibile sotto la variabile item (o items[0], per compatibilità con i groovy di lista) E' comodo ritornare i dati di output secondo il pattern del template. Bisogna assicurarsi di popolare coerentemente il flag success, ed eventualmente un message. Si può inoltre arricchire la mappa result con ogni oggetto si renda necessario utilizzare in seguito nella callback js lato client.

def result = [:];
 
def success = false;
def message = null;
 
try{
 
	//access incoming item trough item or items (for groovy list compatibility)
	var property_value = item.property_name; 	//var property_value = item[0].property_name;
 
 
	//TODO
	//result.custom_object = [a: 1];
	// . . .
	/*if(my_blocking_condition){
		success = false;
		message = 'KO';
	}*/
 
	//set success to true
	success = true;
	message = 'OK';
 
}catch(Exception e){
	//something goes wrong
	log.error(e.getMessage(), e); //log it
	success = false; //set flag to false
	message = 'ko';
}finally{
	result.success = success;
	result.message = message;
}
 
return result;

Esempi

Di seguito sono riportati alcuni semplici esempi di azioni che possono essere utilizzate in Geoweb per l'esecuzione dei Groovy.

  • Azione di esecuzione generica con messaggio di callback: questo codice lancia l'esecuzione del Groovy 'import_csv_talentia' e, come risultato al client, mostra una finestra di dialogo con il messaggio restituito dalla funzione di callback.
var callback = function(responseHashMap){
       var result = responseHashMap.result;
       if(result.success == true){
               var title = 'Importazione CSV Talentia'; //optional
               var message = result.message; //optional
               var yesCallback = function(){};
               var params = { title: title, message: message, yesCallback: yesCallback};
               showOkDialog(params);
      }else{
             var title = 'Importazione CSV Talentia'; //optional
             var message = result.message; //optional
             var yesCallback = function(){};
             var params2 = { title: title, message: message, yesCallback: yesCallback};
             showOkDialog(params2);
      }  
};
 
var parameterMapGroovy = {};
groovyActionGeneric('import_csv_talentia', parameterMapGroovy, callback);
  • Azione di esecuzione generica con errorCallback per la gestione dell'errore 504 Gateway Timeout: questo codice fa eseguire un Groovy con nome 'testGroovy' e gestisce una finestra di dialogo con un messaggio (personalizzabile) nel caso in cui il server vada in errore di timeout.
var errorCallback = function(error){ 
	if (error.response!=null && error.response!=undefined 
              && error.response.status!=null && error.response.status!=undefined 
              && error.response.status == 504){
		  var params = {
                         title: notificationMessage,    //optional
			 message: "Attenzione: lo svolgimento dell'azione proseguirà in background."    //customizable
			        };
	          showOkDialog(params);
	}else{
	          gwServerErrorManagement(error);
	}
};
var parameterMapGroovy = {};
var callback = function(){};
groovyActionGeneric('groovyTest', parameterMapGroovy, callback, errorCallback);

Il codice specifico per la configurazione dell'azione di multipleUpdate è il seguente:

if(grid!=null && grid.query!=null) queryParameter.staticFilters = clone(grid.query.query.staticFilters);
var detailLayoutName = '[inserire nome Layout]';
var options = {
                 openingDetailMode: 'floatingPane'
              };
openGwClassDetailMultiple(gwClassName, detailLayoutName, queryParameter, options);

NOTA: l'unico parametro che lo sviluppatore deve impostare autonomamente è il detailLayoutName, che DEVE essere relativo ad un layout creato ad-hoc per la modifica multipla.


ATTENZIONE! Non per tutti gli widget è consentita la modifica multipla. Alcuni sono stati bloccati e non possono accedervi. Ogni attributo java corrispondente ad un widget è dotato di una proprietà chiamata “allowMultipleEdit()”, tale proprietà definisce se sia possibile o meno utilizzare in modifica multipla tale widget.

Di seguito è esposta una lista di quali possono essere utilizzati e quali non possono, nominati sia per il nome dell'attributo lato java che per il nome del widget corrispondente lato framework.

Nome AttributoNome Widget
ActiveGroupWidgetACTIVE_GROUP_WIDGET
ActiveUserWidgetACTIVE_USER_WIDGET
CheckBoxCHECKBOX
ClassificationCLASSIFICATION
ClassificationReference
ColorPickerCOLORPICKER
ComboBoxCOMBOBOX
CronExpGeneratorWidgetCRON_EXP_GENERATOR_WIDGET
DateDATE
DBComboBoxDBCOMBOBOX
DBImageComboBoxDBIMAGECOMBOBOX
DBSuggestBoxDBSUGGESTBOX
DBWindowListDBWINDOWLIST
DomainDOMAIN
ExternalTableEXTERNALTABLE
FilterSelectionWidgetFILTER_SELECTION_WIDGET
LabelLABEL
LabelValuesXmlWidgetLABEL_VALUES_WIDGET
Layout2DWidgetLAYOUT_2D_WIDGET
MnemonicCodeSelectionWidgetMNEMONIC_CODE_SELECTION_WIDGET
MnemonicCodeWidgetMNEMONIC_CODE_WIDGET
NumberBoxNUMBERBOX
PositionWidgetPOSITION_WIDGET
Position2WidgetPOSITION2_WIDGET
ScopeValueWidgetSCOPE_VALUE_WIDGET
SelectionListWidgetSELECTION_LIST_WIDGET
SelectionList2WidgetSELECTION_LIST2_WIDGET
TextBoxTEXTBOX
TimeTIME
VariableAttributesVARIABLEATTRIBUTES
WidgetBaseNORMAL
WidgetBaseAbs
Nome AttributoNome Widget
ActionWidgetACTION_WIDGET
AttachmentsATTACHMENTS
BlobObject
ChildListCHILDLIST
CmisDocumentWidgetCMIS_DOCUMENT_WIDGET
DataRange
DocumentDOCUMENT
EventObjectListEVENT_OBJECT_LIST
ExternalLinkEXTERNALLINK
FinalBalanceJobsWidgetFINAL_BALANCE_JOBS_WIDGET
Geocoding
HtmlHTML
ImageIMAGE
ImgPathGalleryIMG_PATH_GALLERY
IncludePage
InsertUserWidgetINSERT_USER_WIDGET
Link
LinkListLINKLIST
LinkListNamLINKLISTNAM
PointPOINT
PolygonPOLYGON
PolylinePOLYLINE
RelationWidgetRELATION_WIDGET
SpLink
SpLista
TextareaTEXTAREA
ThreeDZoomWidget3D_ZOOM_WIDGET
VirtualWidgetVIRTUAL_WIDGET
  • gwusermanual/interface/action/libreria_di_azioni.txt
  • Ultima modifica: 2023/08/16 11:50
  • da giorgio.scali