Comprendre la gestion de la concurrence après la migration d’Oracle Forms vers Java avec ORMIT™-OpenJava

Comprendre la gestion de la concurence après la migration d'Oracle Forms vers Java avec ORMIT™-Op

Comprendre la gestion de la concurrence après la migration d’Oracle Forms vers Java avec ORMIT™-OpenJava

La migration d’Oracle Forms vers ORMIT™-OpenJava™ remplace le modèle traditionnel de session stateful avec verrouillage automatique par une architecture stateless orientée services. Chaque interaction utilise des appels RESTful via JDBC, ce qui signifie que la gestion de la concurrence est assurée par la base de données, avec des règles métier additionnelles si nécessaire (comme le verrouillage optimiste). Ce modèle moderne garantit une compatibilité cloud, une mise à l’échelle horizontale, et une maintenance simplifiée, positionnant ORMIT™-OpenJava™ comme la solution idéale pour la modernisation des applications Oracle Forms.

Titleimage

ORMIT™-Open Java: Un outil de migration automatisées de Oracle Forms vers Angular ou React qui change tout!

Gestion de la Concurrence dans Oracle Forms

Dans les applications Oracle Forms traditionnelles, la gestion de la concurrence repose fortement sur une connexion persistante entre chaque session utilisateur et la base de données Oracle. Chaque session maintient une connexion dédiée et continue avec la base de données, permettant à Oracle Forms de gérer automatiquement :

  • Verrouillage des enregistrements : Verrouillage automatique au niveau des lignes dès qu’un enregistrement est chargé pour modification.
  • Gestion de l’état de session : Le contexte transactionnel est maintenu tant que la session utilisateur reste ouverte.
  • Gestion intégrée des conflits : Oracle Forms détecte automatiquement les conflits lorsque plusieurs utilisateurs modifient le même enregistrement, et peut avertir ou bloquer les modifications concurrentes.

Gestion de la Concurrence dans ORMIT™-OpenJava

Après une migration avec ORMIT™-OpenJava™, l’architecture de l’application évolue vers un modèle stateless basé sur des services web. Toute interaction entre le frontend (React, Angular ou toute autre technologie moderne) et le backend passe désormais par des API RESTful. Le backend se connecte à la base de données via JDBC, mais le modèle de session persistante disparaît au profit de cycles de requêtes indépendantes.

Cette architecture modernisée entraîne un changement fondamental dans la gestion de la concurrence :

  • Chaque opération sur la base de données (lecture, écriture, mise à jour) est contenue dans une seule requête REST.
  • Il n’y a plus de connexion persistante par utilisateur. Chaque requête obtient une connexion depuis un pool JDBC (HikariCP), exécute l’action requise, effectue un commit ou un rollback, puis libère la connexion.
  • La base de données elle-même applique les règles de concurrence physique (verrouillage des lignes, contraintes, etc.), sans aucune conscience de session côté application.

Où la Concurrence est-elle Gérée Après Migration ?

1. Au Niveau de la Base de Données

La base de données applique directement les règles de concurrence, par exemple en empêchant deux utilisateurs d’insérer la même clé primaire ou de modifier simultanément un même enregistrement. C’est le même mécanisme utilisé par toute application web moderne connectée à une base relationnelle.

2. Au Niveau de l’Application

Pour reproduire certaines règles métiers spécifiques que les développeurs Oracle Forms utilisaient (comme détecter si un enregistrement a été modifié depuis son chargement), les services backend peuvent implémenter :

  • Verrouillage optimiste : Chaque table peut inclure une colonne @version. Lorsqu’un utilisateur modifie un enregistrement, la requête PUT inclut cette version. Si la version a changé entre-temps, le backend détecte le conflit et rejette la mise à jour.
  • Verrouillage pessimiste : Cette approche garantit l’intégrité des données dans les environnements à forte concurrence. Lorsqu’une transaction verrouille une ligne, les autres transactions doivent attendre que le verrou soit libéré avant de pouvoir lire ou modifier les mêmes données.
  • Application des règles métier : Certaines règles, comme « aucun utilisateur ne peut approuver une transaction déjà validée » ou « empêcher la soumission concurrente de la même facture », peuvent être explicitement codées dans la couche service, en utilisant notamment l’annotation @Transactional pour garantir l’atomicité (ACID).
  • Niveaux d’isolation : Il est possible de configurer différents niveaux d’isolation transactionnelle comme READ_COMMITTED, REPEATABLE_READ ou SERIALIZABLE, selon les besoins fonctionnels.
  • Exceptions personnalisées : Le backend peut retourner des messages d’erreur clairs à l’utilisateur, comme « Cet enregistrement a été modifié par un autre utilisateur », assurant ainsi une expérience utilisateur fluide.

 

Tableau Comparatif

Composant Oracle Forms ORMIT-OpenJava
Type de Connexion Persistante (stateful) Pool HikariCP (stateless)
Durée de la session longue durée par transaction
Verrouillage Automatique (niveau enregistrement) Base de données + logique applicative (optionnelle)
Détection de Concurrence Intégrée dans le runtime Forms Personnalisée via verrouillage optimiste (optionnel)
Mise en vigeur du vérou Base de données Base de données

 

Avantages de Cette Approche

✅ Compatibilité totale avec les déploiements cloud et conteneurisés
✅ Support natif de la mise à l’échelle horizontale, chaque nœud applicatif pouvant gérer n’importe quelle requête utilisateur
✅ Séparation complète entre le frontend et le backend, permettant une plus grande flexibilité technologique
✅ Alignement avec les bonnes pratiques de développement web moderne, garantissant une maintenance simplifiée

En combinant la gestion de la concurrence au niveau de la base de données avec des contrôles métiers optionnels dans la couche applicative, ORMIT™-OpenJava™ assure que l’application migrée est fiable, scalable, compatible cloud, tout en préservant les mécanismes critiques de gestion de la concurrence indispensables à vos processus d’affaires.

 

Envie d’en savoir plus sur la manière dont ORMIT™-OpenJava™ gère les autres fonctionnalités d’Oracle Forms ? Contactez RENAPS pour planifier une démonstration technique.

 

Return to Blog