Intégration de Liferay avec jBPM – Guide Complet

 Introduction

Les entreprises utilisent souvent Liferay comme une puissante plateforme de portail et de gestion de contenu, tandis que jBPM sert de moteur robuste de workflow et de gestion des processus métier (BPM).
Lorsqu’ils sont intégrés, Liferay peut agir comme le portail front-end, et jBPM comme le moteur de workflow, permettant des flux d’approbation, la gestion de cas, l’automatisation des décisions et l’orchestration métier.

Dans ce blog, nous allons explorer:

  • Pourquoi intégrer Liferay avec jBPM

  • L’architecture globale

  • Les approches d’intégration

  • Des cas d’utilisation réels

  • Les étapes d’intégration

  • Les bonnes pratiques


Pourquoi intégrer Liferay avec jBPM ?

Liferay gère l’interface utilisateur, les portails, les utilisateurs, les rôles, les permissions et le contenu, tandis que jBPM gère la logique des processus, les workflows, les règles et les décisions.

Avantages clés

  • Séparation des responsabilités : UI dans Liferay, workflows dans jBPM

  • Workflows basés sur BPMN 2.0

  • Intégration REST flexible

  • Automatisation des décisions via DMN

  • Architecture évolutive et faiblement couplée


Architecture de Haut Niveau


Flux d’exécution

  1. L’utilisateur effectue une action dans Liferay (ex. soumission d’un formulaire).

  2. Liferay appelle l’API REST de jBPM pour démarrer un processus.

  3. jBPM exécute le workflow BPMN.

  4. Des tâches humaines sont créées dans jBPM.

  5. Liferay récupère et affiche les tâches.

  6. L’utilisateur complète les tâches depuis l’interface Liferay.


Approches d’Intégration

1. Intégration via API REST (Recommandée)

jBPM expose des endpoints REST via le KIE Server.

APIs courantes :

  • Démarrer un processus

    POST /kie-server/services/rest/server/containers/{containerId}/processes/{processId}/instances
  • Récupérer les tâches

    GET /kie-server/services/rest/server/queries/tasks/instances/pot-owners/{userId}
  • Compléter une tâche

    PUT /kie-server/services/rest/server/containers/{containerId}/tasks/{taskId}/states/completed

2. Intégration via Client Java

Utiliser les bibliothèques kie-server-client dans un module de service Liferay.

Avantages :

  • Typage fort

  • Gestion simplifiée des payloads

Inconvénients :

  • Couplage plus fort

  • Problèmes de compatibilité de versions


3. Messagerie (Kafka / JMS) – Avancé

Utiliser une intégration asynchrone pour des workflows à fort volume.


Cas d’Utilisation – Workflow de Demande de Congé

Flux BPMN dans jBPM

DébutSoumettre DemandeApprobation ManagerApprobation RHFin

Flux UI dans Liferay

  1. L’employé soumet une demande de congé via un formulaire Liferay.

  2. Liferay démarre le processus jBPM.

  3. Le manager voit la tâche d’approbation dans son tableau de bord Liferay.

  4. Le manager approuve ou rejette.

  5. Le service RH reçoit la tâche finale.


Étapes d’Intégration

Étape 1 : Installer le KIE Server jBPM

  • Installer jBPM (WildFly / Spring Boot)

  • Déployer le processus BPMN

  • Exposer l’API REST du KIE Server


Étape 2 : Créer un Module de Service Liferay

Utiliser Liferay DXP 7.x avec un module de service.

Ajouter la dépendance REST client :

<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-client</artifactId> <version>7.74.1.Final</version> </dependency>

Étape 3 : Appeler l’API REST jBPM depuis Liferay

public void demarrerProcessus() throws Exception { String url = "http://localhost:8080/kie-server/services/rest/server/containers/MyContainer/processes/monProcessus/instances"; HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("user:password".getBytes())); conn.setDoOutput(true); String payload = "{\"employe\":\"Shikha\",\"jours\":3}"; conn.getOutputStream().write(payload.getBytes()); }

Étape 4 : Récupérer les Tâches Humaines

public String getTaches(String userId) throws Exception { String url = "http://localhost:8080/kie-server/services/rest/server/queries/tasks/instances/pot-owners/" + userId; HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("user:password".getBytes())); return new BufferedReader(new InputStreamReader(conn.getInputStream())) .lines().collect(Collectors.joining()); }

Étape 5 : Compléter une Tâche

public void completerTache(long taskId) throws Exception { String url = "http://localhost:8080/kie-server/services/rest/server/containers/MyContainer/tasks/" + taskId + "/states/completed"; HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); conn.setRequestMethod("PUT"); conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("user:password".getBytes())); }

Sécurité

  • Utiliser HTTPS

  • OAuth2 ou authentification par jeton

  • Mappage des rôles Liferay ↔ jBPM

  • Sécuriser les identifiants REST


Bonnes Pratiques

  • Privilégier REST plutôt que le couplage Java

  • Externaliser les identifiants KIE Server

  • Mettre en cache les listes de tâches

  • Utiliser DMN pour les décisions

  • Ajouter une logique de retry

  • Utiliser des clés de corrélation


Problèmes Courants

ProblèmeSolution
Mismatch des utilisateursSynchroniser les utilisateurs
Erreurs d’authentification RESTVérifier les identifiants
Tâches invisiblesVérifier les rôles
Sérialisation des variablesAligner les noms BPMN
Conflits de versionsAligner les versions

Conclusion

L’intégration de Liferay avec jBPM permet de créer une plateforme de workflow puissante et évolutive.
Liferay fournit l’expérience utilisateur, tandis que jBPM gère l’orchestration, les règles et les approbations.

Cette architecture est idéale pour :

  • Workflows RH

  • Gestion de cas

  • Systèmes d’approbation

  • Processus pilotés par les décisions


Vous voulez plus de contenu BPM ?

Explorez plus de tutoriels BPM sur :
https://shikhanirankari.blogspot.com

Et abonnez-vous à Learn IT with Shikha sur YouTube pour des tutoriels pas à pas sur jBPM, Camunda et BPM.


💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.

Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, CMS, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM), DMN/Drools.

📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium     


Comments

Popular posts from this blog

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained

jBPM Installation Guide: Step by Step Setup