Differenze tra le versioni di "Query nel database"
imported>Root |
imported>Root m (Root ha spostato la pagina WkfStateActionHelp.wkf.data handling.query a Query nel database) |
(Nessuna differenza)
|
Versione attuale delle 15:36, 21 ago 2015
Questa action permette di eseguire una query di lettura dal database. E' possibile eseguire query in linguaggio HQL oppure in linguaggio SQL (e' necessario inserire un discriminante, si veda successivamente).
Configurazione della action
La configurazione di questa action prevede l'inserimento di un testo che rappresenta la query HQL o SQL da eseguire.
Lettura dei dati
Il sistema analizza il testo e riconosce i componenti letti tramite il comando select, esponendoli nella sottostante parte di mapping per l'output. Una volta che sono stati definiti gli elementi da selezionare, è quindi possibile mapparne i valori su attributi di workflow per poterli utilizzare in successive operazioni di workflow.
Passaggio dei parametri
Il passaggio dei parametri alla query è potenzialmente delicato, in quanto alcuni tipi di dato (sopra a tutti i java.lang.Date
) hanno una notazione testuale che varia molto tra i differenti database, per cui inserire il valore dei parametri direttamente nel testo della query (tramite le formule) non è una soluzione molto robusta. Similmente per i java.lang.String
, che potrebbero contenere al loro interno apici '
e doppi apici "
, richiedendo complesse operazioni di escaping delle stringhe per garantirne l'esecuzione.
E' possibile invece definire dei bookmark per i parametri, scrivendo ove necessario un punto interrogativo ?
. Se la query contiene uno o più punti interrogativi l'interfaccia grafica farà comparire una tabella di mapping dove sarà possibile associare posizionalmente ad ogni punto di domanda il valore che dev'essere passato a runtime. Ad ogni carattere ?
inserito nella query corrisponderà una riga della tabella di mapping. Questo tipo di passaggio parametri funziona sia con valori statici che con valori prelevati dagli attributi di workflow.
In tal modo i parametri sono passati tramite un canale dedicato e non come codifica all'interno del testo, garantendo un funzionamento molto più robusto.
Numero massimo di righe lette
Di default la action è configurata per leggere una sola riga, anche a fronte di select che tornano piu' righe. Questo previene la saturazione delle tabelle interne del workflow a fronte di query che erroneamente tornino migliaia di elementi.
E' possibile impostare il numero massimo di righe che verranno lette ma si faccia attenzione a non alzare troppo il limite. Il workflow non è uno strumento progettato per gestire milioni di righe di dati, è uno strumento progettato per coordinare le attività.
Flag di comportamento
Il comportamento di default della action è di eseguire una lettura in linguaggio HQL. Se per qualche ragione si desidera effettuare una lettura SQL è sufficiente inserire nella prima riga lo switch --@sql
(il medesimo che si utilizza nel query tool). Quando è presente questo switch la action si aspetta una query SQL. Nulla cambia relativamente al passaggio dei parametri in input e alla lettura dei dati, a parte il fatto che i dati letti in SQL possono essere solo di tipo semplice e non oggetti java complessi (come i DAC).