Skip to main content

Caso di studio: Sistema di automazione basato su Joomla

20 Gennaio 2026
Tradotto da: Pietro Strada
Link originale: https://magazine.joomla.org/all-issues/march-2025/case-study-joomla-based-automation-system
Caso di studio: Sistema di automazione basato su Joomla

Probabilmente conosci strumenti di automazione come make.com, Zapier e IFTTT: strumenti no-code utilizzati per collegare sistemi diversi. Ma lo sapevi che puoi farlo con i compiti programmati di Joomla come cuore pulsante? Mohamed Abdelaziz condivide con noi come ha costruito un sistema di automazione basato su Joomla.

Contesto

Il cliente è un centro di esame di lingua, hanno un sistema un po 'complicato con i seguenti sottosistemi:

  1. Sito web Joomla, accessibile al pubblico in modo che gli studenti possano registrarsi alle sessioni d'esame e pagare le tasse di iscrizione.
  2. Istanza interna SuiteCRM per gestire clienti, contatti, fatture e seguire la frequenza dell'esame.
  3. Gateway di pagamento PayU per consentire i pagamenti con carta per le registrazioni.
  4. Fio sistema bancario per consentire pagamenti con bonifico bancario.
  5. Esempio interno FlexiBee a fini contabili.

La registrazione sta funzionando senza problemi sul sito web di Joomla, tuttavia ci sono alcuni problemi con le notifiche di pagamento da PayU e Fio che non vengono rispedite al sito web di Joomla per approvare il pagamento.

Ho sviluppato un plugin Joomla da integrare con SuiteCRM per sincronizzare le informazioni del registrante, ma c'è ancora un problema con il controllo dello stato del pagamento della fattura contro PayU e Fio che viene fatto manualmente, trasferendo di conseguenza i dati della fattura al FlexiBee.

A questo punto nasce la necessità di un sistema che funga da hub centrale per la gestione complessiva delle agende, integrando i quattro sistemi indipendenti attraverso le API.

Make.com è stato utilizzato per questo sistema, ma questo ha portato al seguente problema.

Punti di dolore

  • L'utilizzo di una piattaforma di automazione generica come Make.com ha avuto alcune insidie, come non ci sono moduli speciali da integrare con 3 dei 4 sistemi coinvolti in questo progetto, quindi l'automazione è piuttosto complicata per un progetto senza codice.
  • La sincronizzazione di dati sensibili come i pagamenti PayU e le transazioni bancarie Fio implica che questi dati siano accessibili a terze parti come Make.com, il che è molto rischioso per il cliente.

Analisi dei problemi

Mi è stato chiesto di suggerire una soluzione per risolvere questi punti dolenti, quindi ho condotto un'analisi degli scenari di Make.com e ho scoperto che:

Le API di SuiteCRM e PayU sono limitate nel filtrare record specifici, quindi non è semplice su Make.com sincronizzare uno stato specifico della fattura SuiteCRM con il suo stato di pagamento da PayU. È necessario utilizzare un modulo HTTP per recuperare un elenco di fatture SuiteCRM non pagate, quindi passarle in loop e verificare i pagamenti PayU.

L'API Fio restituisce solo un foglio di transazione all'interno di un intervallo di date specificato, quindi questo deve in qualche modo essere convertito in una struttura dati efficiente come un array o un elenco per essere in grado di trovare un pagamento con un numero di fattura.

Inutile dire quante operazioni Make.com sono necessarie per implementare questa logica, il che porta ad un aumento dei costi logaritmici poiché il numero delle operazioni richieste è in rapida crescita.

Sfide

  • La documentazione API del sistema bancario Fio è solo in lingua ceca, ma non conosco una sola parola ceca\! Il cliente ha fornito una copia PDF e sono stato in grado di tradurla con l'aiuto di un account ChatGPT plus (ricordo che questo è iniziato nell'aprile 2024, quando ChatGPT non aveva molto potere come ora nel 2025).
  • Anche testare un tale sistema è stato molto impegnativo perché integra 4 sistemi diversi, ogni sistema ha la propria implementazione API diversa, ecc.


Progettazione di soluzioni

Credo che Joomla possa essere utilizzato per costruire questo tipo di soluzione, quindi ho iniziato a scoprire quale tipo di estensione può fare cosa. Il “Attività programmateLa funzione " è stata introdotta in Joomla 4.1 e può essere utilizzata per automatizzare le cose con Joomla, come spiegato in questo articolo: Automatizzazione con le attività pianificate di Joomla.

Penso di aver trovato la mia vocazione, così ho deciso di progettare la soluzione con il Attività programmate Al suo centro per automatizzare i flussi di lavoro di sincronizzazione, si prega di guardare il seguente diagramma.

Diagramma che mostra l'automazione basata su Joomla
Come potete vedere, Cron I lavori verranno utilizzati per attivare le attività pianificate in base al tempo in base ai requisiti aziendali.

Non ho scelto AWS EC2 per l'hosting; il cliente lo aveva già, quindi lo abbiamo usato per risparmiare sui costi di hosting aggiuntivi.

Attuazione

Connessioni

Ho progettato prima il database, poi ho iniziato a sviluppare il Connessioni parte del componente, in quanto è fondamentale per le altre parti.

Come forse saprai, ogni sistema esterno ha la propria logica di autenticazione API e le proprie credenziali. Per incapsulare i dettagli di ogni connessione API in un singolo campo, ho deciso di memorizzare le credenziali di connessione come JSON stringa, simile alla params campo in Joomla articoli. Ho anche aggiunto un Prova Pulsante per il Connessione modificare il modulo per confermare che i dettagli di connessione inseriti siano corretti e funzionanti.

Flussi di lavoro

Il flusso di lavoro è un processo di sincronizzazione tra 2 sistemi, ad esempio il PayU A SuiteCRM flusso di lavoro è un processo per verificare se il Non pagato SuiteCRM fattura ha una conferma PayU pagamento, in caso affermativo cambia il pagamento della fattura in Pagato e lo chiude.

Anche i flussi di lavoro vengono utilizzati nel filtraggio dei registri.

Registri

Si tratta di informazioni dettagliate sugli elementi sincronizzati da entrambi i sistemi in fase di sincronizzazione. È utile ai fini dell'auditing e della risoluzione dei problemi, in quanto è possibile trovare gli ID degli elementi pertinenti e l'ora in cui è stata eseguita la sincronizzazione.

Attività programmate

Ho creato un plugin per le attività pianificate per ogni flusso di lavoro per consentire al cliente di pianificare l'esecuzione / l'attivazione dei flussi di lavoro in base alle sue esigenze aziendali.

Ho usato il Web Cron Opzione piuttosto che il Pianificatore pigro opzione perché il cliente vuole attivare le attività su tempi specifici.

Implementazione

La soluzione è stata implementata come standalone Joomla sito web insieme al Hub di automazione componente e i plugin delle attività pianificate.

Abbiamo creato un Cron lavoro per ogni plug-in di attività per attivare il flusso di lavoro corrispondente in base ai requisiti aziendali del cliente.

Anche se il cliente ha un pubblico Joomla sito web per gestire le iscrizioni agli esami e abbiamo potuto implementare la soluzione a quel sito, ho preferito implementarlo come sito web privato autonomo per evitare il rischio di esporre al pubblico i dati della banca e del gateway di pagamento.

Alla fine è un componente di back office, quindi non è necessario che sia accessibile al pubblico.

Impatto sulla produttività e sull'efficienza

  • I risparmi di tempo nella gestione del check-in e della registrazione superano il 95%.
  • La gestione dell'agenda relativa alla fatturazione è stata ridotta di circa l'85%.
  • Il controllo delle transazioni con carta e delle date di scadenza delle fatture ha comportato un risparmio di tempo di circa il 95%.
  • Il tasso di errore è stato ridotto di circa l'85% (gli errori attuali sono di natura diversa rispetto a prima).
  • Il risparmio di risorse umane è pari al 33%.
  • Il costo operativo è stato ridotto a quasi 0 rispetto al costo annuale previsto di 2 000 USD su Make.com. Il sito web dell'hub di automazione è installato sul server client per il quale sta già pagando per ospitare altri siti web, ossia non paga alcun centesimo in più per ospitare la soluzione dell'hub di automazione.

Alcuni articoli pubblicati sul Joomla Community Magazine rappresentano l'opinione personale o l'esperienza dell'Autore sul tema specifico e potrebbero non essere allineati alla posizione ufficiale del Progetto Joomla