SlideShare a Scribd company logo
1 of 21
Download to read offline
Odoo Connector.
abstract per PyCon 2015franco.tampieri@abstract.it /
v 8.0.
Who am I?
Franco Tampieri
Professione:
Senior System Engineer
ERP Consultant
Cosa è Odoo Connector?
● Connette odoo a sistemi esterni.
● Permette la gestione e l’interscambio di
dati.
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
NUOVE Classi:
● Backend
● Event
● Job / Jobs Queue
● Worker
● Checkpoint
● Binding
Cosa ci offre Odoo Connector?
Backend
Rappresenta il riferimento verso il sistema
esterno.
Il Backend è definito da un Nome e una
Versione.
Backend
Es:
magento = Backend('magento')
magento1700 = Backend(parent=magento, version='1.7')
magento2000 = Backend(parent=magento, version='2.0')
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.
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)
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.
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
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
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.
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
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.
Chekpoint
Es.
from openerp.addons.connector.checkpoint import checkpoint
def add_checkpoint(session, model_name, record_id,
backend_id):
return checkpoint.add_checkpoint(session, model_name,
record_id,'nome.mio.backend', backend_id)
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.
Binding
https://www.odoo.com/documentation/8.0/reference/orm.html#inheritance-and-extension
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
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
Franco Tampieri
franco.tampieri@abstract.it

More Related Content

Similar to Odoo connector PyCon 2015

Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Filippo Matteo Riggio
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfFlorence Consulting
 
Confio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo DurighettoConfio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo DurighettoMiriade Spa
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloCodemotion
 
Hadoop [software architecture recovery]
Hadoop [software architecture recovery]Hadoop [software architecture recovery]
Hadoop [software architecture recovery]gioacchinolonardo
 
AreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàAreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàGiulio Destri
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerAlessandro Mascherin
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSAndrea Saltarello
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSergio Santoro
 

Similar to Odoo connector PyCon 2015 (20)

Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.
 
3DD 1e Reconfig
3DD 1e Reconfig3DD 1e Reconfig
3DD 1e Reconfig
 
Hardware e plugin
Hardware e pluginHardware e plugin
Hardware e plugin
 
introduzione a symfony 2
introduzione a symfony 2 introduzione a symfony 2
introduzione a symfony 2
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdf
 
Workflow e dintorni
Workflow e dintorniWorkflow e dintorni
Workflow e dintorni
 
Confio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo DurighettoConfio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo Durighetto
 
Logging
LoggingLogging
Logging
 
Notes for an Enterprise Scheduling Distributed Application
Notes for an Enterprise Scheduling Distributed ApplicationNotes for an Enterprise Scheduling Distributed Application
Notes for an Enterprise Scheduling Distributed Application
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non solo
 
Sist op
Sist opSist op
Sist op
 
Sistemi Operativi
Sistemi OperativiSistemi Operativi
Sistemi Operativi
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
Hadoop [software architecture recovery]
Hadoop [software architecture recovery]Hadoop [software architecture recovery]
Hadoop [software architecture recovery]
 
Hadoop SAR
Hadoop SARHadoop SAR
Hadoop SAR
 
AreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàAreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicità
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
 
Iec61499
Iec61499Iec61499
Iec61499
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven Development
 

Odoo connector PyCon 2015

  • 1. Odoo Connector. abstract per PyCon 2015franco.tampieri@abstract.it / v 8.0.
  • 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?
  • 6. Backend Rappresenta il riferimento verso il sistema esterno. Il Backend è definito da un Nome e una Versione.
  • 7. Backend Es: magento = Backend('magento') magento1700 = Backend(parent=magento, version='1.7') magento2000 = Backend(parent=magento, version='2.0')
  • 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.
  • 16. Chekpoint Es. from openerp.addons.connector.checkpoint import checkpoint def add_checkpoint(session, model_name, record_id, backend_id): return checkpoint.add_checkpoint(session, model_name, record_id,'nome.mio.backend', backend_id)
  • 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