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.
Suivez ces directives pour les commandes SET :
SET CREATEBLOCKONEQ ON
et SET CREATENONMISSINGBLK ON
.SET CLEARBLOCK EMPTY
SET CALCTASKDIMS
. (Généralement, Oracle Essbase le fait automatiquement.)SET COPYMISSINGBLOCK OFF
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.
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.
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.
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
.
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.
Evitez d'utiliser des références inter-dimensionnelles à gauche d'une équation. Cela peut nuire aux performances.
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.
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.
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 :
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 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.
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 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.