Caso 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 task schedulati di Joomla? Mohamed Abdelaziz condivide con noi come ha costruito un sistema di automazione basato su Joomla.
Contesto
Il cliente è un centro di esamei linguistici, hanno un sistema un po 'complicato con i seguenti sottosistemi:
- Sito web Joomla, accessibile al pubblico in modo che gli studenti possano registrarsi alle sessioni d'esame e pagare le tasse di iscrizione.
- Istanza interna SuiteCRM per gestire clienti, contatti, fatture e seguire la frequenza dell'esame.
- Gateway di pagamento PayU per consentire i pagamenti con carta per le registrazioni.
- Fio sistema bancario per consentire pagamenti con bonifico bancario.
- Istanza FlexiBee per 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 verso 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.
Note dolenti
- 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 problemi, 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.

Come potete vedere,i task Cron Iverranno 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 le 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 la 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 da PayU a SuiteCRM flusso di lavoro è un processo per verificare se una fattura nello stato "non pagata" in SuiteCRM ha una conferma di pagamento in PayU , in caso affermativo devo cambiare lo stato del pagamento della fattaura in "pagato" e chiudere il task.
Anche i flussi di lavoro vengono utilizzati nel filtraggio dei registri.

Log
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 Web Cron Opzione piuttosto che l'opzione Pianificatore lazy 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 sito pubblico Joomla per gestire le iscrizioni agli esami , e avremmo potuto implementare la soluzione su quel sito, ho preferito implementarlo su un 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