Description
Innesco di polling enterprise che firma un nuovo run del workflow ogni volta che compare un nuovo record in un modello Odoo specificato — sostituisce l'assenza di webhook nativi del core Odoo Community (su Enterprise esiste il modulo automation ma richiede l'installazione e setup non sempre fattibile in tenant cliente). Architettura: il trigger scheduler del runtime FlowForge invoca questo trigger ogni pollIntervalSec (default 60s, range 15s-3600s in base alla criticità — 15s per ordini e-commerce, 5min per nuovi lead, 1h per anagrafica), autentica via /xmlrpc/2/common, esegue search_read sul modello configurato con domain filter dell'utente + un cursor implicito [("id", ">", lastSeenId)] che garantisce EXACTLY-ONCE delivery anche in presenza di crash del runtime, recovery, network blip o spostamento di container tra host (lastSeenId è persisto nello state store del trigger, non in memoria volatile). Per ogni nuovo record trovato, parte un singolo run del workflow con il record completo come trigger input — i tuoi nodi downstream possono leggere fields["name"], fields["email"], ecc. direttamente. Dopo ogni batch processato, lastSeenId è aggiornato al MAX(id) del batch in un'unica transazione atomica per evitare race-condition tra polling overlap (es. polling interval più breve della latency del run). Edge case: se un workflow downstream è lento (es. fa LLM call), un nuovo polling parte comunque (non c'è mutex globale sul trigger) ma il cursor protegge da duplicate processing — la peggiore cosa che può succedere è una micro-latency extra sul DB Odoo, non un duplicate run. Rispetta i record rules dell'utente di login (che vede solo i record permessi dalla sua security group), quindi creare un utente Odoo dedicato "Workflow Bot FlowForge" con accessi minimi è raccomandato per limitare l'esposizione. Esempi tipici di modelli pollati: crm.lead per nuovi lead da form web Odoo (alimenta sales sequence), mail.message per nuovi messaggi nel chatter (utile per audit di interazioni cliente), res.partner per nuove anagrafiche aggiunte manualmente da segreteria (sincronizza con MailChimp/HubSpot), sale.order per nuovi ordini in stato draft (revisione automatica), helpdesk.ticket per nuovi ticket assegnati da frontoffice (alerting whatsapp al team tecnico), account.move per fatture appena emesse (export verso gestionale esterno o sistema banca per anticipo fattura). Use case operativi: studio commercialista polleha crm.lead ogni 5min — ogni nuovo lead da Google Ads form lancia un workflow che fa scoring, manda email benvenuto e crea attività su mail.activity per il junior; e-commerce wine.it polleha sale.order ogni 60s — nuovo ordine triggera workflow di verifica giacenza magazzino + email conferma + creazione spedizione GLS; SaaS B2B polleha res.partner solo dei contatti creati negli ultimi 7gg per active_customer_rank > 0 — sync verso HubSpot CRM per il team marketing.
