Aujourd’hui j’ai eu l’occasion de voir deux sessions très
intéressantes sur les technologies « M » et « Quadrant ».
La première session se focalise sur Quadrant et la deuxième sur M. Je ne
connaissait pas ses deux technologies et j’avoue avoir été impressionné.
Langage
« M »
Sous ce nom de code se cache un langage dédié à la
modélisation au sens large. Le langage M est capable de modéliser des données
mais peut servir aussi à modéliser des langages dynamiques. En effet il propose
de définir sa propre grammaire et ainsi le coupler au moteur d’exécution de
langage dynamique du Framework 4.
Ø
Modélisation
de donnée
La première utilisation de M est pour la modélisation de
donnée. Il est possible de décrire un modèle objet très complexe mais
générique (entendre par là pouvant se créer sur n’importe quelle base de données
comme Oracle ou par défaut SQL Server) et en un click générer à la fois la base
dans une instance SQL Server mais aussi les classes Entity Framework qui lui
sont associés.
Là où ca devient très puissant, c’est que l’on peut par
exemple écrire avec M que deux colonnes ne peuvent pas avoir la même donnée sur
une même ligne. M va donc, au moment de la génération de la base, créer une
procédure stockée qui va contrôler cette règle de modélisation. On a donc, avec
un seul fichier de définition, la possibilité de contrôler la structure de sa
base, intégrité incluse, et sa DAL via Entity Framework.
Il est aussi possible au niveau de la configuration du
projet d’une assembly, de définir un fichier M (embarqué en ressource) pour que
celui-ci déploie la base au moment de l’exécution de l’assembly si celle-ci
n’existe pas.
Ø
Langage
dynamique
La possibilité de définir avec M un langage custom, permet
de créer une grammaire propre à son application. Par exemple, à l’instar des
macros VBA, on peut donc proposer aux utilisateurs de son logiciel, un langage
dédié entièrement à celui-ci mais totalement contrôlé.
La façon de décrire le langage est étonnamment facile et
puissant, de plus l’interface Quadrant permet de voir en temps réel si notre
grammaire répond à ce que l’on veut implémenter, mais possède aussi
l’IntelliSense pour une plus grande facilité d’utilisation.
Outil
« Quadrant »
Ce nouvel outil peut s’apparenter à SQL Manager, une
interface permettant de visionner ses données, mais aussi de gérer ses fichiers
écrits en M.
Ø
Interface
et navigation
La première chose qui interpelle avec Quadrant, c’est son
interface, sobre et épuré. Il faut imaginer une fenêtre totalement vide ou l’on
crée de petite fenêtre (des vues). Là où les choses sortent de l’ordinaire,
c’est que sa zone de host des vues peut se déplacer dans tous les sens, comme
si une caméra parcourait une surface infinie. Il y a aussi la possibilité de
faire des zooms et l’interface sauvegarde tout après la fermeture du programme.
Tout est en WPF et permet une fluidité exemplaire. Un très bel outil.
Ø
Visualisation
des données
Une fois connecté à une base de données, il est possible de
visualiser le contenu en un click. Mais la différence avec SQL Manager est la
façon de présenter les données. Par exemple, si une table possède une référence
vers une autre table (clé étrangère), Quadrant va proposer l’affichage des
données en arbre afin de pouvoir avancer dans la hiérarchie.
De plus, une fois une vue sur une table faite, on peu
customiser cette vue en changeant la couleur de fond, les colonnes affichées ou
leurs noms. Tout ceci se fait avec … M !! En un click on extrait la
définition de la vue en M et on peut la modifier et la sauvegarder pour la
réutiliser plus tard. C’est simple et efficace.
Quadrant permet une multitude de présentation des
données : en liste, présenté de façon plus ordonnées ou même filtrées. On
sent bien à l’utilisation de l’outil que tout a été fait pour faciliter la
visualisation et la recherche.
Pour ce qui est du filtrage des données dans une vue, là
encore on fait appel a M qui permet d’écrire des requêtes, exit donc le SQL, M
est beaucoup plus simple d’accès.
Ø
Gestion de
la mise à jour des données
Quadrant fait un pas en avant en ce qui concerne la gestion
concurrentielle des données dans sa base. Imaginons le cas ou vous ouvrez une
vue sur une table avec Quadrant, puis que dans cette table vous modifiez une
donnée. Dans Quadrant tout est transactionnel, il faut donc faire CTRL+S pour
valider vos modifications. Sauf que pendant se temps une personne modifie la
même donnée mais avec une valeur différente (par exemple avec SQL Manager). Au
moment de la validation coté Quadrant, un conflit et détecté, il vous affiche
donc une fenêtre avec la valeur d’origine, la valeur actuelle et la valeur que
vous voulez affecter, a vous de choisir quoi faire.
Il en va de même pour toute action sur la base, une
modification met un astérisque devant la ligne, un conflit met un point
d’exclamation et un point d’interrogation si une donnée a été changée entre
temps et que votre vue n’est donc plus à jour.
Et c’est là que Quadrant fait fort, chaque visualisation ou
modification se fait dans un DataSet spéciale qui fait un snapshot au moment de
l’ouverture d’une table ou de l’exécution d’un filtre. Cela lui permet de
d’avoir une vision « déconnecté » des données et de tracer les
évolutions de celle-ci.
Conclusion
Le langage « M » et l’outil « Quadrant »
sont pour moi une réelle avancée, déjà car cela simplifie énormément le
modeling, mais aussi la façon d’accéder aux données. Les possibilités sont
énormes, surtout avec la possibilité de créer ses propres grammaires. L’outil
et le langage sont actuellement en CTP, mais je vais suivre cela de très prêt.
Tags:
pdc
Catégories:
Divers