2. Who am I?
Franco Tampieri
Professione:
Senior System Engineer
ERP Consultant
3. Cosa è Odoo Connector?
● Connette odoo a sistemi esterni.
● Permette la gestione e l’interscambio di
dati.
4. Cosa NON è Odoo Connector?
● Un Middleware, Odoo Connector è un
modulo di Odoo
● Non è un servizio che rimane in ascolto
di altri sistemi, ma comunica
direttamente con altri sistemi
5. NUOVE Classi:
● Backend
● Event
● Job / Jobs Queue
● Worker
● Checkpoint
● Binding
Cosa ci offre Odoo Connector?
8. Event
Sono Hook in odoo dove è possibile
agganciare delle funzioni.
Gli eventi sono agganciati ad azioni come
on_record_create, on_record_write e
on_record_unlink.
9. Event
Es.
on_record_create = Event()
def fa_qualcosa(session, model_name, a, b):
print "Evento Attivato con i seguenti argomenti: %s,
%s" % (a, b)
# attivo su tutti i modelli
on_record_create.subscribe(fa_qualcosa)
10. Job / Jobs Queue
Rappresentano i processi di elaborazione dei dati.
Sono memorizzati in una coda (Jobs Queue) e vengono controllati dai
Worker.
I Jobs sono assegnati ad un Worker da un cron.
Se il Worker muore, i Jobs vengono congelati e possono essere riassegnati
ad un altro Worker.
11. Job / Jobs Queue
Es:
@job
def processa_qualche_cosa(session, model_name,
qualche_cosa):
# Processo
# Esportazione qualche_cosa
processa_qualche_cosa(session, 'a.model',
qualche_cosa_da_esportare)
# => Chiamata sincrona e normale esecuzione del processo
12. Job / Jobs Queue
Es:
processa_qualche_cosa.delay(session, 'a.model',
qualche_cosa_da_esportare)
# => Il processo sarà eseguito il prima possibile
processa_qualche_cosa.delay(session, 'a.model',
qualche_cosa_da_esportare, priority=30, eta=60*60*5)
# => Il processo sarà eseguito con priorità bassa e
ritardato di 5 ore da adesso
13. Worker
Rappresenta il processo incaricato
all’esecuzione dei jobs.
Ogni Worker ha un ulteriore
processo chiamato WorkerWatcher
che serve a verificare lo stato del
Worker stesso.
E’ possibile eseguire il worker
come processo singolo
(normalmente avviato allo start di
Odoo) ma anche in multiprocessing.
14. Multiprocessing Worker
Per eseguire il Worker in questa modalità è necessario lanciare
separatamente l’eseguibile openerp-connector-worker con l’opzione --
worker=n dove n indica il numero di processi che si vuole avviare.
Es:
PYTHONPATH=/path/to/server connector/openerp-connector-
worker --config /path/to/configfile --workers=2
15. Chekpoint
Rappresenta un record del connector.
checkpoint legato a un modello e un
record.
I Connettori possono utilizzare questa
funzionalità, per permettere all'utente
di esaminare determinati dati importati
che hanno generato determinate
eccezioni.
17. Binding
Rappresentano la relazione fra gli ID degli
oggetti Odoo e gli ID dei sistemi esterni.
Viene consigliato di utilizzare la relazione
_inherits fra il modello Odoo esistente il
nuovo modello con in campi
necessari per il sistema esterno.
19. Documentazione e Riferimenti
● Odoo
○ http://www.odoo.com
● Documentazione odoo
○ https://www.odoo.com/documentation/8.0/index.html
● Documentazione ufficiale Connettore
○ http://odoo-connector.com
● Repository Ufficiale
○ https://github.com/OCA/connector
● Repository base_import_async
○ https://github.com/OCA/connector-interfaces
20. Al Lavoro!
● Avviamo Odoo
● Installare Odoo Connettore
● Installare il modulo
base_import_async
● Analizzare base_import_async
● Avviamo i Worker in
multiprocessing
● Importiamo dei CSV di esempio