Débutez avec le Designer de Business Objects

Adrien Artero

Ce tutoriel, destiné aux débutants, a pour objectif d'initier au Designer de Business Objects et de créer facilement les premiers Univers.

- Titre : Débutez avec le Designer de Business Objects

- Auteur : Adrien Artero

- Parution : 13 mai 2008

- Mise à jour : 24 mai 2020

- Licence : Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- Introduction

- I. Connexion à la base de données

- II. Conception du MCD

- II-A. Sélection des tables

- II-B. Liaisons entre les tables

- II-C. Gestion des contextes

- II-D. Gestion des Alias

- II-E. Gestion des erreurs

- III. Création des objets

- IV. Création des conditions

- Conclusion

- Liens utiles

- Remerciements

Introduction

Un univers est une orientation métier de la base de données. En effet, cette dernière est souvent bien volumineuse et la majorité des tables et champs ne serviront pas à chaque utilisateur de Business Objects. Chaque univers créé sera donc destiné à un métier de l'entreprise ou domaine d'activité (ventes, achats, comptabilité, etc.).

Nous allons voir au cours de ce tutoriel comment créer un Univers avec le Designer de Business Objects. Puis nous verrons pas à pas, comment se connecter à une base de données, sélectionner des tables, les relier et de vérifier la cohérence. Nous verrons enfin comment créer des classes et des variables qui seront reprises dans Business Objects afin de concevoir les états.

Nous nous connecterons à la base club qui est une des deux bases de données démo livrées avec la suite Business Objects.

Ce tutoriel est réalisé avec la version 6.1 du Designer.

I - Connexion à la base de données

Nous venons d'ouvrir le Designer de Business Objects et nous souhaitons nous connecter à une base de données.
Nous cliquons donc sur Nouveau afin de pouvoir définir les paramètres de l'univers.
Nous nommerons pour ce tutoriel notre univers Univers_DVP.

Nous allons alors cliquer sur le bouton Nouveau sous le cartouche de connexion afin d'utiliser des drivers ODBC comme couche réseau, et de se connecter à la base de données.

Il nous faut maintenant nommer notre connexion. Pour cet exemple, nous prenons Connexion_DVP. Nous choisirons comme moteur SGBDR MS Access 2000 qui a permis de créer notre base de données. Il ne nous reste plus qu'à prendre la source de données club afin de bien définir notre connexion. Il peut être nécessaire de mettre un nom d'utilisateur et un mot de passe.

Le bouton Tester à droite du cartouche de connexion permet de tester si la connexion est valide, notamment lors de l'utilisation d'identifiants.
Nous cliquons alors dessus pour tester notre connexion.

Notre connexion étant valide, nous pouvons alors cliquer sur OK.
Il est possible d'ajouter une description de notre Univers ou de définir des paramètres avancés de l'univers.
Nous verrons ces paramètres plus avancés dans un autre tutoriel.

Il ne nous reste plus qu'à cliquer sur OK pour commencer à concevoir notre éditeur.

II - Conception du MCD

II-A - Sélection des tables

Nous venons d'arriver dans l'espace de création de l'univers.
Pour le moment, tout est vide.

Afin de pouvoir créer l'univers, il va falloir sélectionner les tables qui nous serviront.
Pour cela, il suffit de faire un clic droit sur la page blanche, et de sélectionner Tables.

Une fenêtre s'ouvre alors avec la liste des tables, tables qui nous seront pour créer notre univers.

La petite croix à côté de chaque table nous permet d'afficher les champs qu'elle contient.
Un clic droit sur un champ puis Afficher nous permet de visualiser les données qu'il contient.

Pour ce tutoriel, nous avons choisi d'utiliser la base de données de démonstration fournie avec le logiciel.

Ceci est une toute petite base de données et nous pouvons prendre toutes les tables.

Dans un cas réel d'entreprise, il sera bon d'analyser les besoins réels afin de ne pas sélectionner un grand nombre de tables et donc d'alourdir inutilement l'univers.

Pour sélectionner une table, un double clic sur celle-ci suffit. Sachant que nous devons prendre toutes les tables, cette opération est à appliquer sur toute notre liste.

Le Designer a placé toutes les tables les unes à côté des autres. Ceci n'est pas pratique pour avoir une bonne visibilité de l'ensemble des tables.
Nous réorganisons alors les tables en cliquant dans la barre des tâches sur Affichage / Réorganiser les tables.

Nous avons maintenant une visualisation d'ensemble des tables de notre univers.

Nous avons sélectionné les tables qui vont nous servir.
Voyons voir maintenant comment les relier correctement.

II-B - Liaisons entre les tables

Pour relier les tables, il va falloir établir les liaisons entre elles et définir quelles sont les cardinalités.

Commençons par un exemple simple.
Nous prenons la table Country et la table Region.

Le seul champ en commun à ces deux tables est country_id.
je propose nous sélectionnons country_id qu'il nous faut glisser-déposer sur country_id de la table Region.

Nous venons de créer la liaison entre ces deux tables, mais nous n'avons pas encore défini quelles devaient être les cardinalités.
Pour cela, il suffit de double-cliquer sur la liaison. S'ouvre alors cette fenêtre :

Le Designer permet de définir automatiquement les cardinalités. Je suggère toutefois que nous les fassions nous-même, car il est possible que nous ne soyons pas d'accord avec ce qui est proposé.

Si l'on réfléchit, un pays a plusieurs régions, et une région ne fait partie que d'un seul pays.
Nous n'aurons donc qu'un seul pays et plusieurs régions pour cette liaison.
Il faut donc cliquer sur 1 du côté Country et sur n du côté région.

Le Designer nous traduit la relation « avec des mots », ce qui nous permet de vérifier que l'on ne s'est pas trompé.

Nous pouvons alors continuer à relier nos tables les unes aux autres.
Le plus simple est de partir d'une table et continuer le cheminement.

Nous allons maintenant voir le cas d'une liaison un peu plus complexe qu'une simple cardinalité.
Prenons la table Age_group. Elle contient quatre champs :

- age_group_id ;

- age_min ;

- age_max ;

- age_range.

Dans la table Customer, nous ne disposons que d'un champ age.
Nous allons donc déterminer pour la liaison entre ces deux tables que l'âge du client se situe entre l'âge minimum et l'âge maximum d'un groupe.

Nous lions simplement les deux tables, par exemple de age à age_min puis nous éditons la jointure.
Regardons en bas de la fenêtre d'édition de jointure, l'expression de liaison :

Cette expression ne nous convenant pas nous allons appuyer sur le bouton Editer afin de la modifier.
À l'aide des opérateurs fournis, nous précisons que l'âge du client se situe entre l'âge mini et l'âge maxi.

Pour s'assurer de la validité de cette expression, nous pouvons ici encore cliquer sur le bouton vérifier :

Voyons alors la fenêtre d'édition de la jointure :

Nous venons de finir toutes nos liaisons.

Nous allons maintenant voir comment définir les contextes de ce MCD.

II-C - Gestion des contextes

En reliant nos tables, nous avons été contraints de créer plusieurs chemins différents, une sorte de boucle qui ne doit pas exister dans un MCD.

Nous allons devoir définir des contextes, c'est-à-dire définir les chemins différents possibles pour le flux de données.
Il suffit pour cela de faire dans la barre des tâches Outils / Détecter les contextes.

Regardons attentivement ce qui se passe alors.

Une fenêtre Contextes candidats s'ouvre avec trois contextes candidats.
Le contexte sélectionné est Age_group et s'il l'on regarde le MCD, on voit un chemin en bleu.
Toutes les liaisons de ce contexte s'affichent en bleu. Le chemin passe bien par les ID des tables.
Ce contexte ne représente pas grand-chose pour nous, car il ne passe pas par « notre boucle ».

Nous pouvons donc cliquer sur le bouton Ajouter afin d'ajouter le contexte.

Le contexte suivant devient plus intéressant : Invoice_Line.
On remarque que le chemin ne passe que d'un côté de la boucle. Automatiquement, le Designer a exclu deux tables afin de ne pas « brouiller » le cheminement des données.

Nous pouvons donc ajouter ce contexte et regarder le dernier Reservation_Line.
Cette fois-ci, le contexte reprend également toutes les tables, mais en passant par l'autre chemin de la boucle.

Nous ajoutons alors ce contexte. Comme le dit l'expression, la boucle est bouclée et nous pouvons appuyer sur OK afin de valider nos contextes.
Désormais, juste au-dessus du MCD, apparaît un encart qui définit nos contextes.

À gauche, nous avons la liste des tables.
Au milieu, nous avons la liste des jointures. En bleu, apparaissent les jointures qui servent au contexte en cours.
À droite, nous avons la liste des contextes. Quand on se positionne sur l'un, les jointures du bleu changent afin que l'on voie lesquelles servent au contexte.

Nous avons vu la définition de nos contextes, regardons à présent comment créer un Alias.

II-D - Gestion des Alias

Un alias est une duplication d'une table quand les informations peuvent servir à plusieurs enregistrements.
Dans notre exemple, nous avons une table Pays Country avec deux champs : Country_id et Country.
Nous avons relié cette table à la table client pour sortir le nom du pays où réside le client, au lieu de l'identifiant du pays.
Nous avons également dans cet exemple, une table Resort avec un champ Country_id qui définira le lieu de vacances.

Le pays de résidence du client sera certainement souvent différent du pays de lieu de vacances.
Si l'on souhaite afficher également le nom du pays des vacances, nous allons devoir dupliquer la table Country pour la relier à Resort.
Cela nous permettra d'afficher deux noms de pays différents pour une seule ligne de rapport tandis qu'il y a deux enregistrements dans la table Country.

Pour cela, il nous suffit de cliquer droit sur la table Country puis de choisir Alias.

Il nous faut maintenant donner un nouveau nom de table pour cet alias.
Il faut choisir un nom qui nous permettra de distinguer rapidement les deux tables, donc ici : Country_resort.

Une fois l'alias créé, il n'y a plus qu'à le relier à la table Resort comme vu précédemment.

Nous avons fini notre MCD. Il serait cependant prétentieux d'être assuré de l'avoir réalisé sans erreur. Nous allons donc voir comment les gérer.

II-E - Gestion des erreurs

Nous venons de relier des tables, déterminer des cardinalités, définir des contextes, etc.
Avant de continuer quoi que ce soit, il est préférable de vérifier la cohérence de nos actes.

Le Designer permet de vérifier automatiquement l'intégrité de ce que l'on a fait.
Pour cela, il faut cliquer dans la barre des tâches sur Outils / Vérifier l'intégrité.

Nous avons accès ensuite à une fenêtre d'invite avec ce dont on souhaite tester ou non l'intégrité.
Par précaution, je préconise de tout le temps cocher la case Vérifier tout. Cela coche automatiquement toutes les cases.
Même si nous n'avons pas créé encore d'objets, le fait que cette case soit cochée n'est pas dérangeant, mais nous pouvons bien évidemment la décocher.

Nous pouvons alors appuyer sur OK afin de lancer la vérification.
Nous obtenons une fenêtre des résultats du test.

La structure est OK, nous avons bien conçu dans l'ensemble notre MCD.
L'analyse des objets est OK, mais il n'y avait pas d'objets à tester.
Nous avons une erreur de jointure. Cliquer sur la petite croix nous permet alors de visualiser l'erreur :

Nous voyons donc que nous avons une erreur entre la table Reservation_Line et la table Service.
Nous allons donc voir sur le MCD ce qu'il se passe :

Nous pouvons constater que nous avons relié le champ Service.service à Reservation_Line.service_id.
La liaison correcte passe en effet par service_id dans les deux tables. Il nous faut corriger cette liaison.

Si nous relançons la vérification avant de continuer, il y a un problème de cardinalité en moins.
Notre problème de jointure corrigé, le problème de cardinalités disparaît.
Regardons les divergences :

Les divergences de cardinalités ne sont pas de réelles erreurs. Si nous sommes sûrs de ce que l'on a fait, on peut passer outre mesure et ne pas s'en soucier.
Il ne nous reste plus qu'à regarder les deux erreurs de contextes :

Les boucles de contextes OK.
Les erreurs viennent de jointures isolées :

Resort_country et Country : nous avons créé l'alias après avoir défini les contextes. Il est donc normal que cette liaison soit isolée. Il nous fait donc la réinsérer dans le contexte ;

Reservation_Line et Service : nous avons modifié suite à une erreur cette jointure. Elle n'appartient donc plus à un contexte et il faut la réinsérer également.

Lorsque les erreurs ont été corrigées, nous pouvons faire une première sauvegarde de notre univers.

Le Designer ne permet que huit caractères dans le nom de fichier pour l'univers.

Nous allons prendre un nom « simple » pour l'univers : UniversD

Intéressons-nous maintenant aux créations d'objets.

III - Création des objets

Pour comprendre ce que sont et à quoi servent les objets, je vous suggère de lire cette Q/R de la FAQ BO par Bruno2r. Je rajouterai toutefois que nous allons classer ces trois types d'objets en classes.

Nous allons créer des dimensions qui serviront d'axes d'analyse dans les rapports Business Objects.
Nous allons regrouper ces dimensions dans des classes afin de mieux les organiser.

Avant de commencer la création, il est toujours de bon augure de réfléchir aux besoins.
Pour notre exemple, nous allons créer cinq classes :

- Clients (qui regroupera les informations sur le client) ;

- Ventes ;

- Réservations ;

- Lieux de séjour ;

- Indicateurs d'activité (nous reprendrons ici des champs calculés).

Pour créer une classe, il faut commencer par cliquer sur le bouton prévu à cet effet :

Nous renommons alors la classe. Nous saisissons donc Clients.
Il est possible de mettre une désignation à la classe.
Nous validons par OK.

Nous voyons que nous avons bien créé la classe Clients.

Nous créons ensuite les quatre autres classes. Nous pourrons ainsi nous occuper des objets.

Nos classes étant créées, nous allons d'abord créer les éléments de la classe Clients.

Nous allons reprendre les différentes informations concernant les clients qui pourront être utiles dans le rapport Business Objects.
Pour créer les dimensions, nous pouvons concaténer plusieurs champs, renommer les champs de la table dont les noms peuvent sembler barbares pour les utilisateurs Lambda qui ne connaissent pas les bases de données.
Et nous allons bien sûr déterminer s'il s'agit d'une dimension, d'un indicateur (résultant d'un calcul) ou une information.

Nous allons d'abord créer la dimension Client où nous allons concaténer le prénom et le nom du client.
Pour cela, il nous suffit de cliquer droit sur la classe Clients puis de cliquer sur Objets.

Une fenêtre s'ouvre alors où nous pouvons nommer notre objet, indiquer son type (alphanumérique, numérique, date, etc.) lui donner une description, déterminer le Select ou le Where.
Pour déterminer les clauses Select et Where, des boutons sur la droite nous permettront d'ouvrir une autre fenêtre d'invite où les champs disponibles de l'univers seront sélectionnables.

Nous pouvons donc nommer notre objet Client. Ainsi, dans le rapport Business Objects, l'utilisateur lambda verra ce nom.
Le type est évidemment Alphanumérique.
Nous précisons dans la désignation, à quoi va correspondre cette dimension.
Puis nous allons cliquer, sur le bouton de la clause Select afin de la déterminer.

Nous devons concaténer le prénom et le nom. Et il faut bien sûr ajouter un espace entre les deux.
Sous le cartouche de saisie, l'encart Tables et colonnes nous permet de sélectionner le ou les champs désirés.

Nous choisissons alors les deux champs first_name et last_name de la table Customer.
Pour concaténer des champs, il faut les séparer par l'opérateur +. Comme nous voulons ajouter un espace entre les deux champs, nous allons le mettre entre simples quotes :

Nous pouvons alors Valider par OK pour revenir à la fenêtre d'édition de l'objet :

Nous n'avons pas de clause Where à déterminer. Nous allons cependant voir l'onglet Propriétés.

C'est ici que nous allons déterminer le type de chaque objet. Ici, nous n'avons le choix qu'entre Dimension et Indicateur. En effet, ceci est le premier objet que nous créons, et un objet de type Information doit être rattaché à une Dimension.
Notre Nom de client n'est pas un indicateur, nous pouvons donc laisser ainsi.

Nous pouvons créer d'autres dimensions à rattacher à notre classe Clients, comme la ville, la région, le pays ou la tranche d'âge.
Ces dimensions nous permettront d'affiner les rapports Business Objects.

Une fois ces créations finies, nous n'avons plus à nous soucier des dimensions de la classe Clients. Nous pouvons bien sûr y revenir si besoin.

Nous allons maintenant créer des informations. Dans le rapport, nous n'analyserons pas selon ces axes, ces objets sont donc bien à caractère informatif.
Commençons alors par le numéro de téléphone.

Nous créons l'objet Téléphone normalement et nous allons dans l'onglet Propriétés.
Cette fois-ci, il est possible de sélectionner Informations :

En sélectionnant le type Informations, une liste déroulante s'affiche afin que l'on choisisse la dimension à laquelle rattacher l'information.
Nous choisissons Nom :

On constate que le téléphone s'est bien rattaché au nom du client :

Nous pouvons également créer un objet Age. Nous analyserons dans le rapport selon une tranche d'âge et non un âge seul. Nous pouvons donc le mettre en informations.
Il faut bien penser à mettre l'âge en type numérique.

Après avoir créé d'autres objets, nous décidons de pouvoir analyser les ventes selon leur année.
Il va pour cela falloir extraire l'année de la vente qui est dans la date.

Nous créons donc dans la classe Ventes, un objet Année.
Il va nous falloir, dans la clause Select, formater la date pour juste ressortir l'année :

Il nous est possible de vérifier que notre objet renverra des valeurs cohérentes.
Pour cela, avant de valider l'objet, il est possible de cliquer sur Appliquer, puis, dans l'onglet Propriétés, de cliquer sur Afficher.
Cela nous permet d'afficher les données contenues par la dimension :

On constate alors qu'il nous renvoie bien les différentes années des ventes :

Nous créons également une dimension Trimestre.
2000 ou 2001, c'est assez parlant, on voit bien que l'on parle d'une année.
Pour le trimestre, afficher 1, 2, 3 ou 4 peut légèrement pertuber. Nous allons donc afficher devant la lettre T :

Nous faisons de même pour les mois. Il est possible de créer une dimension Libellé mois où nous allons reprendre le Nom du mois, ce qui permet une meilleure lisibilité du rapport par la suite.

Dans l'éditeur de la clause Select, nous allons nous servir de la fonction Case et de la dimension Ventes/Mois.
Nous déterminons simplement que lorsque cette dimension et égale à 1 alors Libellé mois doit renvoyer Janvier, etc.

Nous pouvons prendre pour la classe Lieux de séjour, le pays de séjour par exemple.

Il est possible de créer un grand nombre d'éléments dans la mesure où ils serviront d'axes d'analyses dans le rapport Business Objects.
Pour la classe Réservations, nous pouvons également comme pour la classe Ventes faire ressortir les périodes.

Nous venons de tout créer pour les classes sauf pour Indicateurs d'activités.

Nous allons créer maintenant nos différents indicateurs.
Nous avons opté ici pour tous les mettre dans une même classe, mais nous aurions également pu mettre des indicateurs dans chaque classe.

Nous allons commencer par le chiffre d'affaires.
Il s'agit de calculer le coût et d'en faire la somme.
Nous créons donc un objet Chiffres d'affaires :

Il ne faut pas oublier d'aller dans l'onglet Propriétés pour stipuler que cet objet est un indicateur.
Par défaut, la fonction de l'indicateur se met automatiquement à somme.

Nous pouvons également créer des indicateurs du nombre de clients, ou du nombre prévisionnel de clients.

Nous venons de finir la création de nos objets.
Nous avons vu comment créer une classe, une dimension, une information ou un indicateur.

Voyons maintenant comment créer des conditions.

IV - Création des conditions

Les conditions sont très pratiques dans la création des rapports Business Objects.
Cela va permettre à l'utilisateur de ne sélectionner dans son rapport que les éléments que nous aurons conditionnés dans le Designer.

Pour accéder aux conditions, il faut cliquer sur l'entonnoir jaune en bas à gauche de l'écran.

Nous retrouvons ainsi toutes nos classes créées précédemment. Néanmoins, nous n'avons plus les dimensions. C'est là que nous allons créer nos conditions.

Nous allons commencer par créer une condition Année de vente = 1998. Ainsi, dans le rapport, l'utilisateur utilisera cette condition et n'aura que les ventes de 1998.
Pour créer cette condition, nous cliquons droit sur la classe Ventes et nous choisissons Conditions.

Nous nommons notre condition et nous lui donnons une description.
Il nous faut ensuite aller dans l'éditeur de la clause Where.

À côté des tables et des colonnes, nous pouvons choisir notre dimension pour créer la condition. Comme nous partons d'une donnée où nous avions fait une formule, il est bien plus pratique de se servir de la dimension plutôt que de tout ressaisir.

Nous n'avons qu'à déterminer que cette dimension est égale à 1998. Il faut mettre l'année entre simples quotes.

Nous pouvons créer une condition Jeune client si celui-ci à moins de trente ans :

Nous pouvons créer une condition Client français si celui-ci réside en France :

Dans le rapport, il est fortement déconseillé d'utiliser deux conditions différentes sur une même classe. Il faut donc créer une troisième condition si nous souhaitons les jeunes clients français.

Nous pouvons maintenant créer diverses conditions comme les lieux de séjour, l'année de réservation, etc.

Il faut bien évidemment relancer l'outil de vérification de l'intégrité afin de s'assurer que nos classes et conditions sont correctes.

Tout est OK, notre univers est fini, il peut servir à la création de rapports.

Conclusion

Nous venons de voir les points essentiels de la création d'un univers.
Ce tutoriel est destiné aux débutants et lors de la création de vos univers en entreprise, il faudra bien faire attention aux orientations métier.

Nous verrons dans un prochain tutoriel comment créer les rapports avec Business Objects.

Liens utiles

- Le forum d'entraide Business Objects

- La FAQ Business Objects

Remerciements

Pour la réalisation de ce tutoriel, je tiens à remercier Fleur-Anne Blain (lisez ses tutoriels) pour ses remarques constructives et les corrections qu'elle m'a apportées.