Aller au contenu

Planisware : erreur sur l’évaluation du FORMULA_CACHE

Erreurs de formules au démarrage après une montée de version : purger la table FORMULA_CACHE.

Sommaire

Plus de contenu Planisware

Lors d’une montée de version applicative sous Planisware (standard Processes ou paramétrage spécifique) on a parfois des erreurs d’évaluation de formules au démarrage. En effet, si l’on a par exemple modifié le format des arguments d’une fonction et que celle-ce a déjà été évaluée et stockée dans la table FORMULA_CACHE, on aura à chaque démarrage des erreurs dans les logs.

Exemple d’erreur :

{{< highlight java >}} [02/01/2015 10:08:35.296] – Main process – Formule incorrecte: GetCurrentDashboardClass() = « DATASET » de type BOOLEAN sur l’entité Rapport, erreur: Mauvais nombre d’arguments à l’appel de la fonction GETCURRENTDASHBOARDCLASS{{< /highlight >}}

Dans cet exemple c’est la modification des arguments de la fonction GetCurrentDashboardClass() entre Processes 5.3.2.7 et 5.3.2.10 qui est à l’origine de cette erreur. Ce genre d’erreur apparait lorsque Planisware charge le contenu de la table FORMULA_CACHE.

En 5.3.2.7 on avait :

{{< highlight java >}} GetCurrentDashboardClass(){ get(< wbr />GetCurrentDashboardId()); if(CurrentDashboard InstanceOf OpxDashboard){ var Dashboard_Class = CurrentDashboard.Object_class; <span + Dashboard_Class; return OpxDashboard_Class.findclass()< wbr />.Name.ToString(); } } <span );{{< /highlight >}}

Et en 5.3.2.10 on est passé à :

{{< highlight java >}} GetCurrentDashboardClass(void)< wbr />{ get(< wbr />GetCurrentDashboardId()); if(CurrentDashboard InstanceOf OpxDashboard){ var Dashboard_Class = CurrentDashboard.Object_class; <span + Dashboard_Class; return OpxDashboard_Class.findclass()< wbr />.Name.ToString(); } } <span );{{< /highlight >}}

Comme cette fonction est utilisée dans des formules qui ont été évaluées en 5.3.2.7 et stockées dans le FORMULA_CACHE une fois passé en 5.3.2.10 on aura donc des erreurs au démarrage comme indiqué plus haut.

Solution proposée​

La solution qui nous semble la plus simple est celle consistant à prévoir une purge de la table FORMULA_CACHE après chaque montée de version, application arrêtée et avant de redémarrer les services.

Sous Oracle, cette purge peut être réalisée dans le schéma de base de données de l’application Planisware via la commande suivante :

{{< highlight java >}} SQL> truncate table FORMULA_CACHE;{{< /highlight >}}

Elle aura pour effet de supprimer le cache d’évaluation des formules qui sera reconstitué automatiquement au démarrage et au cours de l’utilisation de l’application.

Remarque :

Cette solution ne remplace bien entendu pas la purge du cache Planisware qui est impérative lorsque l’on modifie le paramétrage et/ou le noyau Planisware.

Bloom PPM, votre partenaire Planisware Enterprise et Orchestra

Bloom PPM, partenaire officiel Planisware, vous accompagne sur Planisware Enterprise et Planisware Orchestra, intégration, migration, maintenance, audit et formation. De l’entreprise de taille moyenne à la multinationale, nous adaptons chaque solution à vos besoins réels. Vos besoins, notre expertise.

2017
partenaire Planisware depuis
8+ ans
d'expérience Planisware en moyenne dans nos équipes
ETI → grands comptes
clients accompagnés