IntroduzioneElastico 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 avvioNormalmente 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. Protocollo di comunicazioneTutte 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 server01 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 serverPacchetto 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 server01 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: Valore | Immagine |
---|
ART | Scarica l'immagine associata ad un Articolo di magazzino | GRP | Scarica l'immagine associata ad un Gruppo articoli | AGE | Scarica l'immagine associata ad un Agente | AZI | Scarica 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: Valore | Descrizione |
---|
JPG | Scarica l'immagine in formato jpeg | BMP | Scarica 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 serverPacchetto 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 allegatiLa 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: Valore | Descrizione |
---|
ARTICO | Scarica un allegato associato ad un Articolo di magazzino | DATREG | Scarica un allegato associato ad una Registrazione di prima nota | ORCLIT | Scarica un allegato associato ad un Ordine cliente | ORCPRE | Scarica un allegato associato ad un Preventivo cliente | ORDFOT | Scarica un allegato associato ad un Ordine a fornitore | DOCVEN | Scarica un allegato associato ad un Documento di vendita | PRODTS | Scarica un allegato associato ad un Documento di produzione | CLIENT | Scarica un allegato associato ad un Cliente | FORNIT | Scarica un allegato associato ad un Fornitore | BILCEE | Scarica 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 serverPacchetto 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 serverPacchetto 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 server01 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 server01 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 server01 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
LimitazioniElastico 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 |