Meilleures pratiques pour la conception de règles métier

Les règles mal rédigées ont une incidence majeure sur tous les aspects d'une application. Des meilleures pratiques concernant la conception de vos règles métier sont présentées ci-dessous. Le fait de suivre les recommandations des meilleures pratiques peut apporter des avantages significatifs en matière de performances.

Suivez ces directives de conception clés pour les règles métier.

Les 10 principales meilleures pratiques pour les règles

Suivez ces recommandations de meilleures pratiques lors de la conception de vos règles métier. Ces directives peuvent apporter des avantages significatifs en matière de performances car des règles mal rédigées ont une incidence majeure sur tous les aspects d'une application.

  1. Suivez ces directives pour les commandes SET :

    • En haut de la règle, n'utilisez pas SET CREATEBLOCKONEQ ON et SET CREATENONMISSINGBLK ON.
    • N'utilisez pas de commandes de type administratif comme celle-ci dans les règles d'utilisateur final car cela exige une restructuration.
      SET CLEARBLOCK
                        EMPTY 
    • Evitez ou testez les règles à l'aide de SET CALCTASKDIMS. (Généralement, Oracle Essbase le fait automatiquement.)
    • La règle de copie des données doit inclure les éléments suivants pour empêcher de copier des blocs vides dans l'instruction FIX.
      SET COPYMISSINGBLOCK
                        OFF 
  2. La création de blocs doit être effectuée à l'aide de DATACOPY ou de l'affectation de membres dispersés. Les fonctions @createblockoneq et @createblock doivent être utilisées en dernier recours à l'intérieur d'une instruction FIX limitée.

  3. Evitez les références de dimension manquante dans une instruction FIX (dans la règle de copie de données par exemple). Cela peut faire perdre du temps de traitement, augmenter les conflits et créer des blocs inutiles pour tous les niveaux des dimensions manquantes.

  4. Enlevez le calcul parallèle dans les règles métier associées aux formulaires. Les commandes CALCPARALLEL ou FIXPARALLEL doivent être utilisées uniquement avec les règles administratives/de lot.

  5. Ne créez pas de zéros inutiles car cela entraîne une explosion des données et du bloc. Vérifiez attentivement la logique métier et ajoutez les conditions IF nécessaires pour rechercher les zéros. Convertissez les zéros en données #missing.

  6. Eliminez les passes multiples sur les mêmes blocs. Définissez plutôt une instruction FIX externe appropriée, et améliorez ou simplifiez le code si nécessaire. Combinez les instructions IF au lieu d'utiliser et de réutiliser IF sur les mêmes croisements.

  7. Evitez d'utiliser des références inter-dimensionnelles à gauche d'une équation. Cela peut nuire aux performances.

  8. Agrégez les dimensions par ordre de création du plus grand nombre de blocs au plus petit nombre de blocs dans le script. Par exemple : AGG (1re dimension avec le plus grand nombre de blocs, 2e dimension avec le plus grand nombre de blocs, 3e dimension avec le plus grand nombre de blocs). AGG est plus rapide que CALC DIM et est un mécanisme privilégié pour l'agrégation. L'agrégation à l'aide de @ancestors dans les règles d'utilisateur final vers le haut de la dimension peut entraîner des conflits de blocs.

  9. Utilisez des invites d'exécution au lieu de créer plusieurs règles avec la même logique sous-jacente. Plus de règles signifient plus de maintenance.

  10. Utilisez des modèles pour diviser et réutiliser la logique métier. Cependant, les modèles ne doivent pas être des règles entièrement fonctionnelles avec Fix, EndFix. La règle combinant divers modèles doit avoir une instruction FIX externe appropriée. Vous pouvez améliorer ou simplifier le code si nécessaire.

Ajout d'une logique métier à l'aide des calculs

Pour incorporer votre logique métier à votre application, vous pouvez créer des calculs à l'aide de Calculation Manager. Cela vous permet de créer, de valider, de déployer et d'administrer des calculs complexes qui résolvent des problèmes métier.

La création des règles et ensembles de règles métier permet généralement d'effectuer les opérations suivantes :

  • Effectuer une modélisation des revenus

  • Effectuer une modélisation des dépenses

  • Calculer les ICP

  • Effectuer des allocations

Calculation Manager contient les objets suivants :

  • Règles : contiennent des composants et des modèles

  • Composants : vous aident à créer des règles

  • Ensembles de règles : contiennent des règles qui peuvent être calculées simultanément ou séquentiellement

  • Modèles : incluent des modèles système qui effectuent des calculs et des modèles personnalisés qui peuvent être conçus par des administrateurs

  • Composant : vous aident à créer des règles

Pour en savoir plus sur la création de calculs, reportez-vous aux directives dans le guide Conception avec Calculation Manager pour Oracle Enterprise Performance Management Cloud.

Création d'agrégations

Les agrégations consolident votre application sur les membres de niveau récapitulatif de la dimension, comme Entité ou une autre dimension dispersée.

Calculation Manager contient des modèles destinés à vous aider à créer des agrégations. Des suggestions d'utilisation des modèles sont fournies ci-dessous :

Définition du point de vue

Lorsque le point de vue est défini, la règle est exécutée uniquement pour les membres sélectionnés. Grâce à l'utilisation d'une invite d'exécution pour les dimensions, les utilisateurs peuvent indiquer des valeurs de membres pour ces dimensions lorsqu'ils lancent la règle. Ainsi, ils peuvent lancer la règle plusieurs fois pour des années, des versions et des scénarios différents sans avoir à la modifier dans Calculation Manager.

Paramètres standard :

  • Agrégation dense complète : complétez cette section si les valeurs parent de vos dimensions denses ne sont pas définies sur le calcul dynamique. Généralement, cet onglet reste vide

  • Agrégation dispersée complète : sélectionnez la dimension dispersée qui doit être agrégée. L'ordre des dimensions sélectionnées n'a pas d'importance.

  • Agrégation de dimension partielle - Dense : complétez cette section si les valeurs parent de vos dimensions denses ne sont pas définies sur le calcul dynamique. Généralement, cet onglet reste vide

  • Agréger les données jusqu'à la devise locale : Non

  • Agréger les valeurs manquantes dans la base de données : Oui

  • Optimiser le calcul sur la dimension dispersée : Désactivé

  • Sélectionnez une valeur pour le cache du calculateur : Valeur par défaut

  • Voulez-vous activer le mode de débogage pour cet Assistant ? : Assistant de débogage activé ou Assistant de débogage désactivé. Sélectionnez Assistant de débogage ACTIVE si vous voulez voir un script généré pour afficher les sélections pour certaines des invites de conception de ce modèle.

Meilleures pratiques :

  • Utilisez des invites d'exécution pour les membres tels qu'Entité, Scénario et Version. Votre règle est ainsi dynamique et exécutée en fonction des entrées de l'utilisateur.

  • En général, il n'est pas nécessaire d'agréger les dimensions denses, telles que Compte et Période. Si tel est le cas, vous pouvez définir les membres parent sur le calcul dynamique. Toutefois, si des formules de membre de dimensions denses ne sont pas définies sur le calcul dynamique, une règle de dimension de calcul est requise.

Création de calculs détaillés

Vous utilisez Calculation Manager pour créer, valider, déployer et administrer des calculs qui résolvent des problèmes métier.

Calculation Manager peut calculer trois types d'objets :

  • Ensembles de règles : contiennent des règles qui peuvent être calculées simultanément ou séquentiellement

  • Règles : contiennent des composants et des modèles

  • Composants : contient des composants de formule, des composants de script, des composants de condition, des composants de plage et des composants de boucle fixe

Meilleures pratiques :

  • La première étape de la création de vos règles consiste à comprendre la logique métier, et les entités ou services auxquels la règle s'applique. Vous devez, par exemple, connaître les comptes impliqués dans la règle.

  • Veillez à connaître les comptes source et de destination.

  • Une fois que vous avez parfaitement compris les inducteurs du calcul, utilisez le composant d'objet ou le modèle correct pour créer la règle. Les composants et les modèles facilitent la sélection des membres afin de vous aider à déployer les règles.

  • L'utilisation d'invites d'exécution pour les membres tels qu'Entité, Scénario et Version rend vos règles dynamiques et permet de les exécuter à partir des entrées de l'utilisateur.

Diagnostics Calculation Manager

Exécutez les erreurs et les avertissements avant de déployer des règles. Vous pouvez alors accéder à des informations utiles, y compris :

  • Le nombre de passes via la base de données
  • Tout avertissement nécessaire
  • Des informations sur le nombre de blocs et si des dimensions sont manquantes
  • Toute règle devant être optimisée
  • Si l'un des composants du côté droit de l'équation contient un zéro, le membre dérivé sera 0. Ensuite, après l'agrégation, il existe beaucoup de 0.
  • Pour résoudre ce problème, la règle doit inclure une instruction IF indiquant if (<q>Earned Premium</q><>0). Ainsi, les zéros ne seront pas aussi nombreux dans l'application.

Exemples de problèmes de règle et solutions

Exemple 1 : règle effectuant plusieurs passes via la base de données

La règle suivante effectue 10 passes via la base de données pour les années et la période, la devise et les comptes.

Exemple de règle : plusieurs passes via la base de données

Exemple 2 : règle qui n'effectue qu'une seule passe via la base de données

La règle suivante n'effectue qu'une seule passe via la base de données. Il s'agit d'une réduction majeure du nombre total de cellules affectées.

Règle révisée : passe unique via la base de données

Exemple 3 : règle qui copie et crée des zéros

Dans cette règle, si l'un des composants du côté droit de l'équation contient un 0, le membre dérivé sera 0. Après l'agrégation, il y aura beaucoup de zéros. Pour résoudre ce problème, la règle doit inclure une instruction IF indiquant if ("Earned Premium"<>0). Ainsi, les zéros ne seront pas aussi nombreux dans l'application.

Exemple de règle qui copie et crée des zéros

Exemple 4 : suppression des zéros de cubes BSO

La formule suivante permet d'obtenir la valeur d'origine, ou si la valeur est 0, elle sera remplacée par #missing.

"DenseMbr" = "DenseMbr" * "DenseMbr"/"DenseMbr";

"SparseMbr" = "SparseMbr" * "SparseMbr"/"SparseMbr";

Pour résoudre ce problème, créez une règle utilisant la formule. Utilisez une dimension dispersée qui a le moins de membres (tels qu'Année, Scénario ou Version) car le calcul doit être fait pour chaque membre.

Fix(idescendants(Entity),@levmbrs(Accounts,0),@levmbrs(Period,0),@idescendants(Custom dimensions),
@levmbrs(Years,0),@levmbrs(Versions))
Actual=Actual*Actual/Actual;
   Fix("Actual")
      CLEARBLOCK EMPTY:
   Endfix
Endfix

N'oubliez pas de faire une restructuration après. Sinon, les blocs vides ne seront pas supprimés.