Home pageInformazioni su dpmemailProdottiElastico 2004Elastico importElastico exportElastico officinaElastico designServiziElastico onlineRichiesta CD demoDownloadsDomande frequentiMailing list
Indice delle categorie

Visualizza la versione adatta alla stampa
DomandaElastico Bridge
Risposta

Introduzione

Elastico Bridge è nato per facilitare l'integrazione e l'utilizzo dei dati del database di Elastico 2004 da parte di applicazioni sviluppate da terze parti.

Quando è in esecuzione Elastico Bridge crea un vero e proprio ponte tra il database di Elastico 2004 e l'applicazione client, la quale tramite una connessione TCP/IP e utilizzando il protocollo di comunicazione di Elastico Bridge, può inviare uno o più comandi ad Elastico Bridge il quale provvederà ad eseguire i comandi e restituire i risultati utilizzando la stessa connessione TCP/IP.

Configurazione e avvio

Normalmente non è necessario configurare Elastico Bridge in quanto gli unici due valori che è possibile impostare, e cioè l'indirizzo IP e in numero di porta del server vengono già impostati su valori predefiniti automaticanente.In caso di necessità è comunque possibile modificarli ed Elastico Bridge memorizzarà l'ultima impostazione usata per riproporla come predefinita nelle esecuzioni successive.

Una volta impostati l'indirizzo IP e la porta è sufficiente cliccare sul tasto Avvia server ed Elastico Bridge sarà pronto per ricevere le richiesta da parte del client.

Finestra principale di Elastico Bridge

Protocollo di comunicazione

Tutte le comunicazioni tra Elastico Bridge e le applicazioni client sono suddivise in pacchetti.

Un pacchetto è un blocco di dati formato da 4 bytes di intestazione che contengono la lunghezza dei dati contenuti nel pacchetto. I quatto bytes di intestazione devone essere codificati secondo la convenzione Little Endian. Nonostante il valore massimo rappresentabile con quattro bytes sia 0xFFFFFFFF la lunghezza massima del pacchetto non può superare il valore 0x07FFFFFF.

Elastico Bridge è in grado di accettare solo richieste composte da un singolo pacchetto, ma può inviare al client risposte composte da un numero illimitato di pacchetti.
Un pacchetto contenente una richiesta da parte del client è sempre composto da 4 bytes Little Endian contenenti l'identificativo del comando da eseguire e da un numero variabile di bytes che dipende dal tipo di comando.

I comandi attualmente riconosciuti da Elastico Bridge sono:

BRIDGE_CMD_SETCURAZI (0x00000001)

Il comando BRIDGE_CMD_SETCURAZI seleziona l'azienda, e quindi il database, su cui verranno eseguiti tutti i comandi successivi.
Il server risponde a questo comando inviando un pacchetto di un byte che può valere 0x00 se l'azienda è stata aperta correttamente, oppure 0xFF se si è verificato un errore. In questo caso il server invierà un ulteriore pacchetto con il codice e la descrizione dell'errore separati da una virgola.

Esempio di comando BRIDGE_CMD_SETCURAZI

06 00 00 00                                           Lunghezza pacchetto
01 00 00 00 BRIDGE_CMD_SETCURAZI
44 4D DM

Risposta del server

01 00 00 00                                           Lunghezza pacchetto
00 Ok

BRIDGE_CMD_QUERY (0x00000002)

Il comando BRIDGE_CMD_QUERY permette di eseguire query che possono restituire un numero arbitrario di records, composti da un numero arbitrario di colonne.
Il protocollo prevede che la risposta sia articolata nel seguente modo:
Per prima cosa il server risponde con un pacchetto di un byte che può contenere 0xFF in caso di errore, oppure un numero compreso tra 0x01 e 0xFE che indica il numero di colonne di cui sono composti i records.
Nel primo caso il server invierà solamente un altro pacchetto con il codice e la descrizione dell'errore separati da virgola, altrimenti il server invierà una prima serie di pacchetti con le le informazioni sulle colonne, utilizzando un pacchetto per ogni colonna. Le informazioni su una colonna sono rappresentate da una serie di valori separati da virgola, secondo il seguente formato:

nome_tabella,nome_campo,tipo_dati,dimensione,attributi

Una volta inviate le informazioni sui campi il server invierà i dati veri e propri utilizzando un pacchetto per ogni colonna. Il compito di suddividere questi dati in records è affidato al client, il quale deve utilizzare il numero di campi per stabilire quando finisce un record e ne inizia un altro.
Nel caso di campi con valore NULL verrà inviato un pacchetto di un byte con valore 0x00. I valori numerici sia interi che decimali verranno inviati come stringa con il carattere punto usato come separatore per i decimali.
La fine dei dati viene segnalata con un pacchetto vuoto.

Esempio di comando BRIDGE_CMD_QUERY

28 00 00 00                                           Lunghezza pacchetto
02 00 00 00 BRIDGE_CMD_QUERY
73 65 6c 65 63 74 20 65 6c 5f 63 6f 64 61 72 74 2c 65 select el_codart,e
6c 5f 64 65 73 63 20 66 72 6f 6d 20 61 72 74 69 63 6f l_desc from artico

Risposta del server

Pacchetto 1 - Numero di colonne
01 00 00 00                                           Lunghezza pacchetto
02 Numero di colonne

Pacchetto 2 - Informazioni colonna 1
18 00 00 00                                           Lunghezza pacchetto
61 72 74 69 63 6f 2c 65 6c 5f 63 6f 64 61 72 74 2c 31 artico,el_codart,1
30 2c 32 30 2c 30 0,20,0

Pacchetto 3 - Informazioni colonna 2
16 00 00 00                                           Lunghezza pacchetto
61 72 74 69 63 6f 2c 65 6c 5f 64 65 73 63 2c 31 30 2c artico,el_desc,10
34 30 2c 30 ,40,0

Pacchetto 4 - Record 1 - Colonna 1
04 00 00 00                                           Lunghezza pacchetto
30 30 30 31 0001

Pacchetto 5 - Record 1 - Colonna 2
12 00 00 00                                           Lunghezza pacchetto
4f 4c 49 56 45 54 54 49 20 50 48 49 4c 4f 53 20 33 33 OLIVETTI PHILOS 33

Pacchetto 6 - Record 2 - Colonna 1
04 00 00 00                                           Lunghezza pacchetto
30 30 32 33 0023

Pacchetto 7 - Record 2 - Colonna 2
15 00 00 00                                           Lunghezza pacchetto
43 52 45 4d 41 20 4e 49 4f 53 4f 4d 45 20 4c 41 4e 43 CREMA NIOSOME LANC
4f 4d 45 OME

Pacchetto 8 - Fine dei dati
00 00 00 00                                           Pacchetto vuoto

BRIDGE_CMD_EXECUTE (0x00000003)

Il comando BRIDGE_CMD_EXECUTE permette di eseguire una query di insermento di un nuovo record o di aggiornamento o cancellazione di record esistenti.
Il server risponde a questo comando inviando un pacchetto di un byte che può valere 0x00 se l'istruzione è stata eseguita correttamente, oppure 0xFF se si è verificato un errore. In questo caso il server invierà un ulteriore pacchetto con il codice e la descrizione dell'errore separati da una virgola.

Esempio di comando BRIDGE_CMD_EXECUTE

00 00 00 16                                           Lunghezza pacchetto
00 00 00 03 BRIDGE_CMD_EXECUTE
64 65 6c 65 74 65 20 66 72 6f 6d 20 61 72 74 69 63 6f delete from artico
Risposta del server

01 00 00 00                                           Lunghezza pacchetto
00 Ok

BRIDGE_CMD_GET_IMAGE (0x00000007)(dalla versione 1.1.0)

Il comando BRIDGE_CMD_GET_IMAGE permette di scaricare le immagini di:

  • Articoli
  • Gruppi articoli
  • Agenti
  • Logo dell'azienda

La richiesta dell'immagine deve essere effettuata secondo il seguente formato:

tipo_archivio,codice,formato_immagine[,dimensione_massima]

Il campo tipo_archivio può assumere uno dei seguenti valori:

ValoreImmagine
ARTScarica l'immagine associata ad un Articolo di magazzino
GRPScarica l'immagine associata ad un Gruppo articoli
AGEScarica l'immagine associata ad un Agente
AZIScarica il logo dell'azienda

Il campo codice deve contenere il codice interno dell'articolo,il codice del gruppo o il codice dell'agente, a seconda del contenuto del campo tipo_archivio.Nel caso del logo dell'azienda questo parametro verrà ignorato.

Il campo formato_immagine può assumere uno dei seguenti valori:

ValoreDescrizione
JPGScarica l'immagine in formato jpeg
BMPScarica l'immagine in formato bitmap

Il campo dimensione_massima indica al server che l'immagine deve essere ridimensionata matenendo le proporzioni e impostando il lato più lungo dell'immagine pari al numero di pixel indicati nel campo.
Questo campo è opzionale.

Il protocollo prevede che la risposta sia articolata nel seguente modo:
Per prima cosa il server risponde con un pacchetto di un byte che può contenere 0xFF in caso di errore, oppure 0x00 se l'immagine è stata trovata e sta per essere inviata.
Quindi viene inviato un pacchetto con il nome dell'immagine e infine un pacchetto con l'immagine vera e propria.

Esempio di comando BRIDGE_CMD_GET_IMAGE

0F 00 00 00                                           Lunghezza pacchetto
07 00 00 00 BRIDGE_CMD_GET_IMAGE
41 52 54 2c 31 2c 6a 70 67 2c 30 ART,1,jpg,64

Risposta del server

Pacchetto 1 - Risultato
01 00 00 00                                           Lunghezza pacchetto
00 Ok

Pacchetto 2 - Nome del file
0C 00 00 00                                           Lunghezza pacchetto
32 34 38 30 31 31 36 34 2e 6a 70 67 24801164.jpg

Pacchetto 3 - Immagine
A7 24 00 00                                           Lunghezza pacchetto
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx Dati immagine

BRIDGE_CMD_GET_ATTACHMENT (0x00000009)(dalla versione 1.1.0)

Il comando BRIDGE_CMD_GET_ATTACHMENT permette di scaricare gli allegati collegati a:

  • Articoli di magazzino
  • Registrazioni di prima nota
  • Ordini clienti
  • Preventivi clienti
  • Ordini fornitori
  • Documenti di vendita
  • Clienti
  • Fornitori
  • Documenti di produzione
  • Bilancio CEE

Ulteriori informazioni sugli allegati

La richiesta dell'allegato deve essere effettuata secondo il seguente formato:

tipo_archivio,codice,nome_file

Il campo tipo_archivio può assumere uno dei seguenti valori:

ValoreDescrizione
ARTICOScarica un allegato associato ad un Articolo di magazzino
DATREGScarica un allegato associato ad una Registrazione di prima nota
ORCLITScarica un allegato associato ad un Ordine cliente
ORCPREScarica un allegato associato ad un Preventivo cliente
ORDFOTScarica un allegato associato ad un Ordine a fornitore
DOCVENScarica un allegato associato ad un Documento di vendita
PRODTSScarica un allegato associato ad un Documento di produzione
CLIENTScarica un allegato associato ad un Cliente
FORNITScarica un allegato associato ad un Fornitore
BILCEEScarica un allegato associato ad un Bilancio CEE

Il campo codice deve contenere il codice interno dell'articolo,documento, ecc.a seconda del contenuto del campo tipo_archivio.

Il campo nome_file deve contenere il nome dell'allegato così come compare nella gestione Allegati di Elastico 2004.

Il protocollo prevede che la risposta sia articolata nel seguente modo:
Per prima cosa il server risponde con un pacchetto di un byte che può contenere 0xFF in caso di errore, oppure 0x00 se l'allegato è stata trovato e sta per essere inviato.
Quindi vengono inviati i seguenti pacchetti:

  • Nome dell'allegato (senza il percorso)
  • Tipo
  • Codice
  • Descrizione
  • Numero di riga dell'allegato in Elastico 2004
  • Contenuto del file

Esempio di comando BRIDGE_CMD_GET_ATTACHMENT

19 00 00 00                                           Lunghezza pacchetto
07 00 00 00 BRIDGE_CMD_GET_IMAGE
41 52 54 49 43 4f 2c 31 2c 64 65 70 6c 69 61 6e 74 2e ARTICO,1,depliant.
70 64 66 pdf

Risposta del server

Pacchetto 1 - Risultato
01 00 00 00                                           Lunghezza pacchetto
00 Ok

Pacchetto 2 - Nome del file
0C 00 00 00                                           Lunghezza pacchetto
64 65 70 6c 69 61 6e 74 2e 70 64 66 depliant.pdf

Pacchetto 3 - Tipo
06 00 00 00                                           Lunghezza pacchetto
41 52 54 49 43 4f ARTICO

Pacchetto 4 - Codice
01 00 00 00                                           Lunghezza pacchetto
31 1

Pacchetto 5 - Descrizione
14 00 00 00                                           Lunghezza pacchetto
44 65 70 6c 69 61 6e 74 20 69 6e 66 6f 72 6d 61 74 69 Depliant informati
76 6f vo

Pacchetto 6 - Numero riga
01 00 00 00                                           Lunghezza pacchetto
31 1

Pacchetto 3 - Contenuto del file
A7 24 00 00                                           Lunghezza pacchetto
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx Contenuto del file

Si ricorda che per ottenere una lista di tuttli gli allegati è necessario eseguire una query sulla tabella FILEXT contenuta nel database di una azienda di Elastico 2004.

BRIDGE_CMD_SERVER_INFO (0x00000008)(dalla versione 1.1.0)

Il comando BRIDGE_CMD_SERVER_INFO può essere utilizzato per ottenere informazioni sul server.
Il server risponde a questo comando inviando un pacchetto di un byte che può valere 0x00 se le informazioni sono disponibile e stanno per essere inviate, oppure 0xFF se si è verificato un errore. In questo caso il server invierà un ulteriore pacchetto con il codice e la descrizione dell'errore separati da una virgola.

In caso di successo le informazioni saranno inviate in pacchetti separati.Attualmente le informazioni inviate dal server sono:

  • Versione del server di Elastico Bridge nel formato xx.yy.zz
  • Versione di Elastico 2004 nel formato xx.yy.zz
  • La data e l'ora del server nel formato dd/mm/yyyy hh:mm:ss

Esempio di comando BRIDGE_CMD_SERVER_INFO

00 00 00 04                                           Lunghezza pacchetto
00 00 00 04 BRIDGE_CMD_BEGINTRANS
Risposta del server

Pacchetto 1 - Versione Elastico Bridge
05 00 00 00                                           Lunghezza pacchetto
31 2e 31 2e 30 1.1.0

Pacchetto 2 - Versione Elastico 2004
16 00 00 00                                           Lunghezza pacchetto
36 2e 32 2e 31 6.2.1

Pacchetto 3 - Data e ora del server
13 00 00 00                                           Lunghezza pacchetto
32 34 2f 31 31 2f 32 30 30 35 20 31 37 3a 33 32 2e 32 24/11/2005 17:32.2
33 3

BRIDGE_CMD_BEGINTRANS (0x00000004)

Il comando BRIDGE_CMD_BEGINTRANS avvia una transazione sul database selezionato.
Il server risponde a questo comando inviando un pacchetto di un byte che può valere 0x00 se la transazione è stata aperta correttamente, oppure 0xFF se si è verificato un errore. In questo caso il server invierà un ulteriore pacchetto con il codice e la descrizione dell'errore separati da una virgola.

Esempio di comando BRIDGE_CMD_BEGINTRANS

00 00 00 04                                           Lunghezza pacchetto
00 00 00 04 BRIDGE_CMD_BEGINTRANS
Risposta del server

01 00 00 00                                           Lunghezza pacchetto
00 Ok

BRIDGE_CMD_COMMITTRANS (0x00000005)

Il comando BRIDGE_CMD_COMMITTRANS conferma tutte le modifiche effettuate dopo l'ultimo comando BRIDGE_CMD_BEGINTRANS
Il server risponde a questo comando inviando un pacchetto di un byte che può valere 0x00 se la transazione è stata confermata correttamente, oppure 0xFF se si è verificato un errore. In questo caso il server invierà un ulteriore pacchetto con il codice e la descrizione dell'errore separati da una virgola.

Esempio di comando BRIDGE_CMD_COMMITTRANS

00 00 00 04                                           Lunghezza pacchetto
00 00 00 05 BRIDGE_CMD_COMMITTRANS
Risposta del server

01 00 00 00                                           Lunghezza pacchetto
00 Ok

BRIDGE_CMD_ROLLBACKTRANS (0x00000006)

Il comando BRIDGE_CMD_ROLLBACKTRANS annulla tutte le modifiche effettuate dopo l'ultimo comando BRIDGE_CMD_BEGINTRANS
Il server risponde a questo comando inviando un pacchetto di un byte che può valere 0x00 se la transazione è stata annullata correttamente, oppure 0xFF se si è verificato un errore. In questo caso il server invierà un ulteriore pacchetto con il codice e la descrizione dell'errore separati da una virgola.

Esempio di comando BRIDGE_CMD_ROLLBACKTRANS

00 00 00 04                                           Lunghezza pacchetto
00 00 00 06 BRIDGE_CMD_ROLLBACKTRANS
Risposta del server

01 00 00 00                                           Lunghezza pacchetto
00 Ok

BRIDGE_CMD_DISCONNECT (0x00FFFFFF)

Il comando BRIDGE_CMD_DISCONNECT chiude la connessione
Questo comando non prevede nessuna risposta da parte del server.

Esempio di comando BRIDGE_CMD_DISCONNECT

00 00 00 04                                           Lunghezza pacchetto
00 FF FF FF BRIDGE_CMD_DISCONNECT

Limitazioni

Elastico Bridge non può gestire connessioni provenienti da più client contemporaneamente, tuttavia, anche questo limite non dovrebbe costituire un problema, nel caso si abbia la necessità di più connessioni contemporanee è possibile lanciare più istanze di Elastico Bridge e assegnare una porta diversa per ognuna.

Downloads

 Aggiornata il 28/11/2005 13:03
Indice delle categorie