Developpement:Modèle et langage -2

De Wiki1000
Version du 13 mai 2008 à 11:43 par Syfre (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Sommaire

Modification dans le modèle métier.

Nouveaux types de données.

Type de données « Entier long » et « Chaîne Unicode »

Entier long 64 bits signés bigint numeric(20,0)
Chaîne unicode Chaîne de longueur variable nvarchar() nvarchar2()


Ces types ont été introduits pour faciliter le support de classe SQL mappé sur des tables relationnelles utilisant ces types, il n’est pas conseillé de les utiliser dans des classes métiers car ils n’apportent aucun avantage sauf si vous avez réellement besoin de manipuler des entiers 64 bits.


Le support des « chaînes Unicode » est limité aux entrées sorties avec la base de données ; en fait une données de type chaine Unicode est équivalente à une données de type chaîne. La seule différence est dans le type de données SQL utilisé pour stocker le contenu dans la base de données. Notamment les chaînes Unicode ne sont pas supportées dans l’interface utilisateur ni dans les requêtes.


Type de données XML

Le type de données XML permet de gérer des documents ou des fragments XML. Les attributs techniques disponibles sur un type de données XML sont :

AsString Contenu du document sous forme chaîne de caractère.
AsVariant Equivalent à AsString
Document Document XML de type TxmlDocument


Le code métier peut utiliser l’attribut technique « Document » pour manipuler le contenu du document :


Type

SQLORA_MaClasseXML = Class(TdbObject)

public

oid: string;

Caption: string;

data: TxmlDocumentDataType;

unCode: string;

Procedure MethodName;

end;

Implementation

{SQLORA_MaClasseXML}

Procedure SQLORA_MaClasseXML.MethodName;

//Procedure MethodName;

var idx:Integer; itm:TxmlItem;

begin

for idx:=0 to data.Document.Count-1 do

begin

itm := data.Document.Items[idx];

showMessage(itm.ItemName);

end;

end;

Stockage des types XML

Le stockage des types XML se fait dans des colonnes typées XML si ce type est disponible sur le moteur de base de données, ceci peut avoir les conséquences suivantes :

Le moteur peut vérifier la validité du contenu du champ, une erreur SQL peut être déclenchée si le contenu xml n’est pas valide.

Le moteur peut reformater le contenu du champ, par exemple SQLServer normalise le contenu texte en supprimant les nœuds textes ne contenant que des blancs (au sens xml ce qui inclus les retours chariot et les retours à la ligne).

Moteur de base de données Stockage
SQL Server 2005 Colonne de type XML
SQL Server 2000 Colonne mémo
Sage SQL et Oracle Colonne mémo


Type de données XSL

Le type de données XSL est un descendant du type de données XML ; il permet de gérer des feuilles de style XSL.

Les attributs techniques disponibles sur un type de données XML sont :

Document Document XSL de type TxslDocument

Exemple d’utilisation des attributs XML.

Cet exemple utilise une classe contenant un attribut XML et un attribut XSL pour construire un contenu HTML. Il utilise le nouveau contrôle TSyntaxEdtor pour afficher les documents XML.

La classe utilisée :

unit TestSQLORA

interface

Type

SQLORA_MaClasseXML = Class(TdbObject)

private

textResult: TMemoDataType;

public

Caption: string;

unCode: string;

xmlData: TxmlDocumentDataType;

xslData: TxslDocumentDataType;

Procedure Transformer;

end;

Implementation

{SQLORA_MaClasseXML}

Procedure SQLORA_MaClasseXML.Transformer;

//Procedure Transformer;

begin

textResult.AsString := xslData.Document.TransformToString(xmlData.Document);

end;

L’attribut textResult est une variable dont le contenu est créé par la méthode « Transformer » ; celle-ci utilise la méthode TransformToString du document XSL de l’attribut xslData.

La vue des données XML :

image4.png

La vue de la feuille de style

image5.png

Après exécution de la méthode de transformation, la vue du résultat HTML :

image6.png


image7.png Il existe une méthode plus directe pour afficher le résultat en utilisant le nouveau contrôle ThtmlDIV orienté XML ; voir le document sur l’Interface utilisateur pour un exemple.


Modèle relationnel des classes persistantes

Préfixes de classe.

Auparavant les classes métiers devaient être préfixées avec « T » et les interfaces avec « I », cette limitation a été supprimée. Toutefois le dialogue de création de classe impose toujours l’utilisation de ces préfixes pour ces stéréotypes de classe.

Nom des table SQL

Auparavant le nom des tables SQL étaient systématiquement en majuscule, cette limitation a été supprimée. Toutefois lors de la création de classe persistante le nom SQL par défaut est en majuscule.

Stéréotype de paquet

Les paquets peuvent être stéréotypés suivant le contenu du paquet. Les stéréotypes définis sont :

Les paquets de classes métiers

Ce sont les paquets contenant du métier ligne 1000.

Les paquets de classes datamart.

Ce sont les paquets contenant des classes datamart destinés à alimenter des info-centres.

Lors de la création d’un paquet vous pouvez sélectionner le stéréotype adéquat.

image8.png

Classes et procédures de service et procédures distantes

Les procédures de service sont contenues dans des classes services locales et sont publiable en Web Service.

Les procédures distantes sont contenues dans des classes de services distants et sont appelables à travers l’invocation de Web Service.

Voir le document consacré au Web Service.

Classes sql et classes datamart.

Une classe SQL est une classe mappée sur une table relationnelle SQL. Une classe SQL utilise la clé primaire de la table SQL pour identifier une instance d’objet, un tuple en SQL, à la place des identifiants d’objets (oid). Les classes SQL ne sont pas « objets » et ne permettent pas d’utiliser les fonctionnalités du framework liées à la méthodologie objet, comme par exemple l’héritage de classe.

Une classe Datamart est une classe SQL utilisée dans le contexte d’opération ETL. Elle ajoute la notion d’agrégats utilisés dans les systèmes décisionnels.

Importation de modèle relationnel

L’assistant d’importation de modèle relationnel permet de créer un modèle objet à partir d’un modèle relationnel existant. Le modèle peut utiliser soit des classes objets persistantes soit des classes SQL.

En général un modèle basé sur des classes objets ne permettra pas de fonctionner sur des données existantes mais pourra être enrichi de fonctionnalités objets alors qu’un modèle basée sur des classes SQL fonctionnera sur des données existantes mais ne pourra pas utiliser les fonctionnalités objets.

Les limitations

Les classes SQL ne peuvent gérer que des clés primaires mono-colonne.

Les rôles des classes SQL ne peuvent gérer que des clés étrangères mono-colonne.

Les rôles utilisables sont les références et les listes.

La concurrence d’accès ne peut être que « super optimiste » ; les modes « optimistes » (basé sur les timestamp) et pessimiste (basé sur des verrous sur les oid) ne peuvent pas fonctionner.

Les types de données du framework, basés sur des objets et stockés dans la base de données sur des structures SQL complexes, ne peuvent pas être utilisés.

Seul un sous ensemble des types de données SQL est utilisable

Les types de données

La ligne 1000 ne gère qu’un sous ensemble des types de données SQL existants, il est donc possible que certain types de données des tables SQL ne soient pas supportés. Dans ce cas l’assistant propose le type de données supporté le plus approprié. Lorsqu’aucun type n’est proposable la colonne est marqué à ignorer.

Les types de données nativement supportés sont :

Type SQL Server Oracle
Chaîne varchar CHAR, VARCHAR2
OID TOID CHAR(32)
Entier (32 bits) int NUMBER(10,0)
Flottant (15 chiffres, 8 octets) float NUMBER, FLOAT
Monétaire (8 octets) money NUMBER(20,4)
Date et heure datetime DATE
Logique int NUMBER(10,0)
Texte text CLOB
Binaire image BLOB


L’assistant d’importation de modèle relationnel.

Pour importer un modèle relationnel contenu dans une base de données :

Enregistrer la base de données dans l’administrateur, cela exécutera les scripts lignes 1000 permettant au framework 1000 de fonctionner. Ceci ne modifie en aucune façon les tables existantes.

Créer une nouvelle application contenant le module système et un module métier vide. Associer le module métier à la base de données.

Créer une nouvelle société utilisant cette application et cette société.

Entrez dans la société, ouvrez le concepteur de modèle et sur la racine des paquets appelez l’assistant d’importation de modèle relationnel.

L’assistant d’importation créera un paquet métier que vous associerez à votre module métier.

image9.png


Vous sélectionnez d’abord le type d’importation :

image10.png

Le comportement de la génération dépend du mode choisi :

Importation en classes orientées SQL

L’ensemble des colonnes sera intégrés, excepté celles exclues par l’utilisateur.

Importation en classes persistantes

Les colonnes primaires ne seront pas intégrées puisqu’elles sont remplacées par le mécanisme basé sur les oids.

L’assistant présente ensuite les tables existantes dans la base de données :

image11.png

Seule les tables pour lesquelles il n’existe pas de classe sont présentées ; après sélection des tables souhaités une vue en modèle est présentée :

image12.png

Sur cette vue vous pouvez contrôler certain éléments de la génération :

Sur une classe :

image13.png

image14.png

Vous pouvez modifier le nom de la classe qui sera importé, notez que le nom de table ne peut pas être modifié.

Lorsque vous importez une table en classe SQL il est possible que vous ne souhaitiez pas synchroniser le modèle de données, par exemple si certaines colonnes sont exclues ou importer avec un type non natif.

Sur une colonne :

image15.png


image16.png

Indique que le type de donnée de la colonne est nativement supporté. Lorsque le type de données n’est pas natif l’assistant propose un type de données le plus approprié, cependant il est possible que des limitations en découle ; par exemple un type bigint (64 bits) sera proposé en int (32 bits) mais il est clair que l’étendu du type sera limité

image17.png

Ces cases à cochés vous renseigne sur l’usage de la colonne.

image18.png

Vous pouvez modifier le type de données qui sera affecté à la colonne ; il est déconseillé de modifier ce type pour les colonnes dont le type est nativement supporté.

image19.png

Vous pouvez décider de ne pas importer une colonne ; les colonnes dont les types de données ne sont pas supportés et ne peuvent pas être reconnus sont exclus par défaut. C’est, par exemple, le cas avec SQL 2005 qui présente des colonnes dont le type de données n’est pas présent dans la table systypes des types.


Sur un rôle :

image20.png

image21.png

Par défaut l’assistant crée un rôle liste réciproque pour chaque référence (c'est-à-dire pour chaque clé étrangère).

L’assistant crée systématiquement un paquet pour un import, vous devez donc renseigner les informations de paquet. Notez que vous pouvez ajouter un préfix de paquet.

image22.png

Que vous associez ensuite à un module de votre application :

image23.png

Avant de générer le paquet :

image24.png

Modèle de datamart

Les modèles de datamart sont des paquets contenant des classes datamart destinées à alimenter des infocentres. Le but des modèles de datamart est donc de présenter vos données métiers suivant des vues facilement exploitables par les outils décisionnels ; en général ces modèles sont fortement dé-normalisés afin d’obtenir les performances désirées lors de l’exécution des requêtes décisionnelles.

La démarche pour créer un nouvel infocentre est la suivante :

Créer une nouvelle base de données pilotée dans l’administrateur; cette base sera votre infocentre.

Créer un module vide et associé le à la base infocentre.

Ajouter cette base infocentre à votre société.

Entrez dans votre société, dans le concepteur de modèle ajouter un paquet et sélectionné le stéréotype « Paquet de classes datamart » ; associé le au module associé à la base infocentre.

Vous pouvez maintenant ajouter des classes datamart à votre paquet.

L’intérêt des classes datamart est que vous pouvez créer des requêtes ETL pour alimenter ces classes. Une requête ETL est une requête, réalisée avec l’outil de construction de requête, capable d’être exécuter en insertion, modification ou suppression. Un requête ETL est construite à partir d’une classe métier et alimente une classe datamart. Vous pouvez ensuite regrouper ces requêtes dans des groupes de requête ETL et insérer ces groupes dans des tâche ETL de l’automate afin d’automatiser la mise à jour de votre infocentre.

Notez que les fonctionnalités liées au datamart et aux requêtes ETL ne sont pas lié à un système décisionnel particulier. Toutefois les bases de données pilotées ont un type particulier dans l’administrateur car elles peuvent être associées à des serveurs et des univers « Business Objects ».

Outils personnels