Accéder au contenu principal

Étude de cas: Système d'automatisation basé sur Joomla

Vous connaissez probablement les outils d'automatisation comme make.com, Zapier et IFTTT: outils sans code utilisés pour connecter différents systèmes. Mais saviez-vous que vous pouvez le faire avec les tâches planifiées de Joomla comme cœur battant? Mohamed Abdelaziz nous explique comment il a construit un système d'automatisation basé sur Joomla.

Contexte

Le client est un centre d'examen linguistique, ils ont un système quelque peu compliqué avec les sous-systèmes suivants:

  1. Site Web Joomla, accessible au public afin que les étudiants puissent s'inscrire aux sessions d'examen et payer les frais d'inscription.
  2. Instance SuiteCRM interne pour gérer les clients, les contacts, les factures et le suivi de la participation aux examens.
  3. Passerelle de paiement PayU pour permettre les paiements par carte pour les inscriptions.
  4. Système bancaire Fio pour permettre les paiements par virement bancaire.
  5. Exemple interne FlexiBee à des fins comptables.

L'enregistrement fonctionne bien sur le site Web de Joomla, mais il y a quelques problèmes avec les notifications de paiement de PayU et Fio qui ne sont pas renvoyées sur le site Web de Joomla pour approuver le paiement.

J'ai développé un plugin Joomla à intégrer avec SuiteCRM pour synchroniser les informations du déclarant, mais il y a toujours un problème avec la vérification de l'état de paiement de la facture par rapport à PayU et Fio, ce qui est fait manuellement, transférant par conséquent les données de la facture vers le FlexiBee.

À ce stade, le besoin se fait sentir d'un système qui fonctionne comme une plaque tournante pour la gestion globale des agendas, intégrant les quatre systèmes indépendants par le biais d'API.

Make.com a été utilisé pour ce système, mais cela a entraîné le problème suivant.

Points de douleur

  • L'utilisation d'une plate-forme d'automatisation générique comme Make.com a eu quelques pièges, comme il n'y a pas de modules spéciaux à intégrer avec 3 des 4 systèmes impliqués dans ce projet, donc l'automatisation est assez compliquée pour un projet sans code.
  • La synchronisation de données sensibles telles que les paiements PayU et les transactions bancaires Fio implique que ces données sont accessibles à un tiers comme Make.com, ce qui est très risqué pour le client.

Analyse des problèmes

On m'a demandé de suggérer une solution pour résoudre ces problèmes, alors j'ai effectué une analyse des scénarios Make.com et j'ai constaté que:

Les API de SuiteCRM et PayU sont limitées dans le filtrage d'enregistrements spécifiques, il n'est donc pas simple sur Make.com de synchroniser un statut de facture SuiteCRM spécifique avec son statut de paiement de PayU. Il est nécessaire d'utiliser un module HTTP pour récupérer une liste de factures SuiteCRM non payées, puis de les parcourir en boucle et de vérifier les paiements PayU.

L'API Fio ne renvoie qu'une feuille de transaction dans une plage de dates spécifiée, ce qui nécessite d'être converti en une structure de données efficace comme un tableau ou une liste pour pouvoir trouver un paiement avec un numéro de facture.

Inutile de dire combien d'opérations Make.com sont nécessaires pour mettre en œuvre cette logique, ce qui entraîne une augmentation des coûts logarithmiques à mesure que le nombre d'opérations requises augmente rapidement.

Défis

  • La documentation API du système bancaire Fio est uniquement en langue tchèque, mais je ne connais pas un seul mot tchèque\! Le client a fourni une copie PDF et j’ai pu la traduire à l’aide d’un compte ChatGPT plus (je me souviens que cela a commencé en avril 2024, lorsque ChatGPT n’avait pas beaucoup de pouvoir comme c’est le cas actuellement en 2025).
  • Tester un tel système était également très difficile car il intègre 4 systèmes différents, chaque système a sa propre implémentation d'API différente, etc.


Conception de solutions

Je crois que Joomla peut être utilisé pour construire ce genre de solution, alors j'ai commencé à savoir quel type d'extension peut faire quoi. Le «Tâches planifiéesLa fonctionnalité "" a été introduite dans Joomla 4.1, elle peut être utilisée pour automatiser des choses avec Joomla comme expliqué dans cet article: Automatisation avec les tâches planifiées Joomla.

Je pense que j'ai trouvé ma vocation, alors j'ai décidé de concevoir la solution avec le Tâches planifiées Pour automatiser les flux de travail de synchronisation, veuillez consulter le diagramme suivant.

Schéma montrant l'automatisation basée sur Joomla
Comme vous pouvez le voir, Cron Les emplois seront utilisés pour déclencher des tâches planifiées à temps en fonction des exigences de l'entreprise.

Je n’ai pas choisi AWS EC2 pour l'hébergement; le client l'avait déjà, nous l'avons donc utilisé pour économiser sur les coûts d'hébergement supplémentaires.

Mise en œuvre

Connexions

J'ai d'abord conçu la base de données, puis j'ai commencé à développer la Connexions partie du composant, car il est fondamental pour les autres parties.

Comme vous le savez peut-être, chaque système externe a sa propre logique d'authentification API et ses propres informations d'identification. Pour encapsuler les détails de chaque connexion API dans un seul champ, j'ai décidé de stocker les informations d'identification de connexion en tant que JSON chaîne, semblable à la params champ en Joomla articles. J'ai aussi ajouté un Essai bouton vers le Connexion modifier le formulaire pour confirmer que les informations de connexion saisies sont correctes et fonctionnent.

Flux de travail

Le flux de travail est un processus de synchronisation entre 2 systèmes, par exemple le PayU À SuiteCRM flux de travail est un processus pour vérifier si le non payé SuiteCRM facture a une confirmation PayU paiement, si oui, il change le paiement de la facture à Payé et le ferme.

Des workflows sont également utilisés dans le filtrage des journaux.

Journaux

Il s'agit d'informations détaillées sur les éléments synchronisés des deux systèmes en cours de synchronisation. Il est utile à des fins d'audit et de dépannage, car vous pouvez trouver les identifiants d'élément pertinents et l'heure à laquelle la synchronisation a été effectuée.

Tâches planifiées

J'ai créé un plugin de tâches planifiées pour chaque flux de travail afin de permettre au client de planifier l'exécution/déclenchement des flux de travail en fonction de ses besoins métier.

J'ai utilisé le Web Cron l'option plutôt que l'option Planificateur paresseux option parce que le client veut déclencher les tâches sur un timing spécifique.

Déploiement

La solution a été déployée de manière autonome Joomla site Web ainsi que le Hub d'automatisation composant et les plugins de tâches planifiées.

Nous avons créé un Cron job pour chaque plugin de tâche pour déclencher le flux de travail correspondant en fonction des exigences de l'entreprise cliente.

Bien que le client ait un public Joomla site Web pour gérer les inscriptions aux examens et nous pourrions déployer la solution sur ce site, j'ai préféré le déployer en tant que site Web privé autonome pour éviter le risque d'exposer les données de la banque et de la passerelle de paiement au public.

À la fin, il s'agit d'une composante de back office, il n'est donc pas nécessaire qu'elle soit accessible au public.

Impact sur la productivité et l'efficacité

  • Les gains de temps dans la gestion de l'enregistrement et de l'enregistrement dépassent 95%.
  • La gestion des ordres du jour liés à la facturation a été réduite d'environ 85 %.
  • La vérification des transactions par carte et des dates d'échéance des factures a permis de gagner environ 95 % de temps.
  • Le taux d'erreur a été réduit d'environ 85 % (les erreurs actuelles sont de nature différente).
  • Les économies de ressources humaines s'élèvent à 33%.
  • Le coût opérationnel a été réduit à près de zéro par rapport au coût annuel prévu de 2 000 dollars sur Make.com. Le site web du centre d’automatisation est déployé sur le serveur client pour lequel il paie déjà pour héberger d’autres sites web, c’est-à-dire qu’il ne paie pas un centime supplémentaire pour héberger la solution du centre d’automatisation.

Certains articles publiés sur le Joomla Community Magazine représentent l'opinion personnelle ou l'expérience de l'auteur sur le sujet spécifique et peuvent ne pas être alignés sur la position officielle du projet Joomla.

1
2
3
4
5
6
7
EventSchedule
February Customize Backend
February Email Template
February Joomla Academy
February Mywoodlot
February Recover Article
February Web Development II
February Write Tutorial
February JQuery 2
Gets SiteView
JCB
JCB1 Custom Admin View
JCB2 Basis
January Components
January Connecting Third Party Libraries
January Floating Labels
January Happy 2025
January Web Development
March Blog Joomla
March Case Study
March Disaster
MySqlTab
SitViewCodeSuggestions
TutorialKing
Admin Tabs Custom Code
Article Menu Item
ClassDescriptionGitea
Diagram Selection Process
Joomla Extension Changlog View
Menu Templates
Selection Process Current
Starttime
EventSchedule3
Chrome OvkmdodwV6
Dashboard 01 Custom Css Example
Dashboard 02 Disable Core Extensions
Dashboard 03 Edit Layout
Dashboard 04 Images
Dashboard 05 User Dashboard
Dashboard 06 Custom Quick Icons
Dashboard 07 Admin Checklist
Fimage1
Fimage10
Fimage11
Fimage12
Fimage13
Fimage2
Fimage3
Fimage4
Fimage5
Fimage6
Fimage7
Fimage8
Fimage9
Image 20250114112645473
Image1
Image10
Image11
Image12
Image13
Image1a
Image2
Image3
Image4
Image4a
Image5 1
Image5
Image5a
Image6
Image6a
Image7
Image8
Image9
Junction Table