Oracle Forms 11G : Comment avancer dans la migration ?

En travaillant sur un projet de migration Forms récemment, j’ai trouvé que cette pratique n’est pas bien documentée sur le net alors j’ai décidé de vous faire une feuille de route avec le retour d’expérience que j’ai eu en se basant sur les documents que j’ai consulté.
Concernant l’outil en question, Oracle annonce qu’il compte bien poursuivre le developpement de Forms et Reports sur la plateforme Oracle fusion Middleware 12c:  http://www.bit.ly/OracleToolsSOD.
Avec quelques recommandations bien sûr de toujours passer à la dernière version pour avoir le support d’Oracle, sachant que le support pour Forms 11.1.2.X est valide jusqu’à Oct 2016 et extensible jusqu’à Oct 2017.

Architecture d’Oracle Forms 11g :
Depuis Janvier 2005, l’architecture tri-tiers (serveur d’application, serveur base de données et client) a fait son apparition avec Forms, le principe d’appel est simple :

  • Le client lance une application forms grâce à une URL sur le browser
  • http server envoie une requête au serveur weblogic qui renvoie directement au Forms servlet
  • Forms servlet retourne une page HTML qui contient l’applet Java destiné au client
  • Forms Listener Servlet démarre un Forms Runtime process

Ce descriptif résume l’appel d’un client à une application Forms sous weblogic.

Installation

Avançons maintenant sur les étapes d’installation de Forms 11g.
Il faut tout d’abord ’assurer de la bonne version en fonction de l’OS (32 ou 64 bits), sans oublier également le serveur Weblogic à installer en fonction de l’OS et de la matrice de certification de Forms 11g.
Pour finir, il faut voir si le serveur Weblogic est fourni avec une JVM/JDK et s’il faut prévoir une version adéquate de JVM/JDK à installer.
Après l’installation, nous aurons :

  • un Middleware Home (MW_HOME)
  • weblogic Home (MW_HOMEwlserver_10.3)
  • Oracle Forms Home (MW_HOMEORACLE_HOME)
  • Instance Oracle Home (MW_HOMEINSTFR)

Installation Forms

Cette installation se fait après avoir installé le serveur Weblogic. Lors de mon intervention, j’ai dû installer sur OS windows 2008 server 64 bits? Les étapes de l’installation des binaires sont assez simple ; en lançant le « setup.exe », Oracle Universal installer démarre.
Voici quelques étapes importantes du processus d’installation :
Troisième étape, nous avons le choix entre :

  1. Installer et configurer : à la fin de l’installation, les outils sont configurés et fonctionnels
  2. Installer le logiciel et ne pas configurer : la configuration se fera après en lançant un fichier de configuration mis dans le répertoire d’installation

Cinquième étape :
L’installer reconnait le chemin de weblogic et le répertoire du Middleware, à renseigner le nom du répertoire ORACLE_HOME, le nom de l’instance d’Oracle pour Forms.
Sixième étape :
Deux choix sont possibles, le premier est pour le déploiement, ce cas concerne le serveur de production en général, il permet de sélectionner par la suite le serveur Forms et Reports.
Par contre le deuxième choix est pour le développement, on le choisi pour un poste de développement ; il nous permettra d’installer Forms et Reports Builder.
Terminez l’installation, et vérifiez que votre environnement Forms est bien monté (OPMN managed component, et weblogic server). Les différents paramètres de l’install (ports utilisés, répertoires, etc…) peuvent être mis dans un fichier et sauvegardés.

Post-installation checks

A cette étape, on peut faire des tests sur la console Weblo, la forme de test Forms et Fusion Middleware control (si on a choisi « configured for deployment » à l’étape 6 de l’installation).

  • Le plus facile est de lancer dans un browser l’URL suivant « http://serverhost:7001/forms/frmservlet » en considérant que le port 7001 est le port d’écoute configuré, une image va alors apparaitre pour confirmer la bonne installation
  • Lancer la console weblogic « http://serverhost:7001/console » en considérant que le port 7001 est le port d’écoute configuré
  • Accéder au EM console (Middleware control) « http://serverhost:7001/em » (si on a choisi « configured for deployment » à l’étape 6 de l’install)

Configuration de l’environnement d’Oracle Forms 11g

Formsweb.cfg
Il spécifie les paramètres Runtime de Forms, il se trouve dans : $DOMAIN_HOME/config/frmwconfig/servers/WLS_FORMS/applications/formsapp_11.1.2/config
On peux utiliser une section pour chaque application, tous les paramètres peuvent être mis dans la section [default]
Lors du lancement d’une application, et si on choisi une configuration d’environnement distincte, Forms Runtime utilise alors les paramètres de la section adéquate pour cette application.
L’appel à une section particulière [exemple_sec] se fait sur l’url en saisissant dans le browser : « http://serverhost:7001/forms/frmservlet?config=exemple_sec »
default.env
Il spécifie les variables d’environnement Runtime de Forms, il se trouve dans : $DOMAIN_HOME/config/frmwconfig/servers/WLS_FORMS/applications/formsapp_11.1.2/config.
Chaque application peut avoir son propre fichier d’environnement en fonction des sections définies dans formsweb.cfg en rajoutant l’entrée envFile. Pour notre cas, on rajoute un fichier d’environnement exemple_sec.env et on met dans la section [exemple_sec] envFile=exemple_sec.env
Dans ce fichier d’environnement, on peut spécifier FORMS_PATH, ORACLE_HOME, ORACLE_INSTANCE, etc…
forms.conf
En 11g, c’est l’ORACLE http listener configuration file si OHS n’est pas installé, il se trouve dans : $INSTANCE_HOME/config/FormsComponent/forms/server. Il peut inclure tous les chemins virtuels utilisés
Registry.dat
Contient les polices et les icônes par défaut, il se trouve dans : $DOMAIN_HOME/config/frmwconfig/servers/WLS_FORMS/applications/formsapp_11.1.2/config/forms/registry/oracle/forms/registry.
Il peut être modifié en utilisant la console Middleware control.
Processus de migration vers Forms 11g:

  • Migration de Formes réalisées avec une version antérieure à Forms 4.5 :

Pas possible directement, il faut d’abord migrer vers la version 4.5, ensuite à la version 6i, ensuite à la version 11g

  • Migration de Formes réalisées avec une version Forms 4.5 ou 5.0 :

Pas possible directement, il faut d’abord migrer vers la version 6i, ensuite à la version 11g

Etapes de migration

  1. Forms Builder : ouvrir la forme, compiler, corriger les erreurs, générer le fmx et fermer
  2. Forms Compiler (batch) : créer un fichier batch et executer en lot la migration, les erreurs vont être traiter à part, un exemple d’un fichier que j’ai utilisé sous Windows :
cd E:u10Formsmigreraes_webforms
for %%f in (*.pll) do frmcmp.exe userid=aes/passwd@gest_an11 module=%%f module_type=LIBRARY batch=yes window_state=minimize compile_all=yes
cd E:u10Formsmigreraes_webforms
for %%f IN (*.fmb) do frmcmp.exe userid=aes/passwd@gest_an11 module=%%f batch=yes module_type=form compile_all=yes window_state=minimize
cd E:u10Formsmigreraes_webforms
for %%f IN (*.mmb) do frmcmp.exe userid=aes/passwd@gest_an11 module=%%f batch=yes module_type=menu compile_all=yes window_state=minimize
cd E:u10Formsmigreraes_webreports
for %%f IN (*.rdf) do E:u10webcenterv01installMiddlewareOracle_FR1BINrwconverter.exe userid=aes/passwd@gest_an11 source=%%f dest=%%f stype=rdffile DTYPE=REPFILE OVERWRITE=yes batch=yes
ECHO FINISHED COMPILING
  1. Forms API : ce sont des API écrites en JAVA, un exemple de fichier :
import java.io.*;
import oracle.forms.jdapi.*;
public class compilation
{
static FormModule fmd;
public static void main(String[] args)
{
System.out.println("USAGE");
Jdapi.connectToDatabase(args[1]);
fmd = FormModule.open(args[0]);
fmd.compile();
Jdapi.shutdown();
}
}
  1. Migration Assistant : c’est un utilitaire fourni avec Forms en ligne de commande ou en GUI mode, il se trouve dans « <MiddleWare_HOME>/<Instance_home>/BIN/frmplsqlconv.bat », il permet de détecter et éventuellement modifier les fonctions obsolètes et de sauvegarder par la suite les formes au format forms 11g.

Quelques fonctions non supportées sous la 11g :

  • Mouse Triggers
  • Icones (*.ico) doivent être converties en gif ou jpg et éventuellement rassemblées en fichier jar
  • OLE container…

Quelques liens utiles :
Oracle Forms 11g page :
http://www.oracle.com/technetwork/developer-tools/forms/overview/index.html
Oracle Forms 11g documentation:
http://docs.oracle.com/cd/E24269_01/index.htm
Oracle Forms 11g demo pack:
http://fr.slideshare.net/oracle_imc_team/upgrade-oracle-forms-to-11g
Une documentation plus détaillé en anglais se trouve dans :
http://docs.oracle.com/cd/E24269_01/doc.11120/e24477.pdf