Titolo: Lanciare una stored in 4d 2004 *
Categoria: Tecniche |
|
Ultimo Aggiornamento: 26/09/09 |
Nella versione 11 è possibile impostare un flag per cui un metodo verrà lanciato in automatico sul server (dove in alcune condizioni le cose sono molto più veloci); il processo resterà in attesa del metodo e ne userà il risultato.
Per ottenere la stessa cosa in 2004 dobbiamo fare in modo che il client attenda la fine del processo sul server per leggere la risposta e la stored invece invece alla fine dell'esecuzione deve prima di chiudersi aspettare che il client abbia la risposta.
Ecco un metodo che si può usare come base di lavoro:
=== SUL CLIENT:
C_BLOB(blob_risposta)
$id:=
Execute on server("metodo_suserver";128*1024;"metodo")
nexus_stored("attendi";$id)
` ... qui posso usare la risposta
=== SUL SERVER:
nexus_stored("start")
` ... qui va il tuo codice che scrive la risposta in un blob, ad esempio
nexus_stored("stop")
=== ECCO IL METODO BASE:
` Method nexus_stored
` Nexus srl, www.nexusonline.it
Case of : ($1="start") ` === startup del processo
If (Application type=4D Server )
C_BOOLEAN(stored_finito;client_letto)
stored_finito:=
False client_letto:=
False C_BLOB(blob_risposta)
SET BLOB SIZE(blob_risposta;0)
End if : ($1="stop") ` === chiusura processo
If (Application type=4D Server )
client_letto:=
False stored_finito:=
True $start:=Milliseconds
While (Not(client_letto) & ((Milliseconds-$start)<30000))
DELAY PROCESS(Current process;1)
End while End if : ($1="attendi") ` === legge la risposta dalla stored e la chiude
C_BOOLEAN(stored_finito;processo_finito;client_letto)
C_TEXT(currentProgressStatus)
$pid:=$2
processo_finito:=
False Repeat DELAY PROCESS(Current process;10)
GET PROCESS VARIABLE($pid;stored_finito;processo_finito)
Until (processo_finito)
GET PROCESS VARIABLE($pid; blob_risposta; blob_risposta)
client_letto:=
True SET PROCESS VARIABLE($pid;client_letto;client_letto)
End case
Inviato da: Umberto Migliore |
|
Visite: 11618 |
Se accedi con utente e password, puoi aggiungere dei commenti.