+ All Categories
Home > Technology > Odoo connector PyCon 2015

Odoo connector PyCon 2015

Date post: 16-Jul-2015
Category:
Upload: franco-tampieri
View: 144 times
Download: 0 times
Share this document with a friend
21
Odoo Connector. abstract per PyCon 2015 [email protected] / v 8.0.
Transcript

Odoo Connector.

abstract per PyCon [email protected] /

v 8.0.

Who am I?Franco Tampieri

Professione:Senior System EngineerERP 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?

BackendRappresenta il riferimento verso il sistema esterno.Il Backend è definito da un Nome e una Versione.

BackendEs:

magento = Backend('magento')

magento1700 = Backend(parent=magento, version='1.7')

magento2000 = Backend(parent=magento, version='2.0')

EventSono 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.

EventEs.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 modellion_record_create.subscribe(fa_qualcosa)

Job / Jobs QueueRappresentano 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 QueueEs:

@jobdef 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 QueueEs:

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

WorkerRappresenta 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

ChekpointRappresenta 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.

ChekpointEs.

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)

BindingRappresentano 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.

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 [email protected]


Recommended