Author: bpoussin Date: 2010-10-27 11:06:35 +0200 (Wed, 27 Oct 2010) New Revision: 454 Url: http://nuiton.org/repositories/revision/wikitty/454 Log: add some concept documentation Modified: trunk/src/site/rst/index.rst Modified: trunk/src/site/rst/index.rst =================================================================== --- trunk/src/site/rst/index.rst 2010-10-27 09:05:10 UTC (rev 453) +++ trunk/src/site/rst/index.rst 2010-10-27 09:06:35 UTC (rev 454) @@ -26,3 +26,91 @@ ======= Wikitty est un système de stockage et de recherche de type clé/valeur. + +Concept métier +============== + +Un objet java ou une table relationnelle sont des choses figées au moment de +l'écriture du code ou la création de la base de données. Pour les faire évoluer +par la suite, il faut donc retourner dans le code, prévoir la migration, +etc. + +Il est aussi difficile de maintenir un code cohérent lorsque l'on veut +développer la même application pour des besoins semblable mais qui ont +chacun de petites spécificités qui rend le code difficile à maintenir sur le +long terme, entre le code commun et le code spécifique. + +Wikitty essaie de répondre à ces différentes problèmatiques en apportant une +solution technique simple à mettre en oeuvre et à utiliser. + +Un objet n'a pas de champs prédéfini, mais seulement un identifiant unique. +Pour connaître les champs disponibles sur un objet, il faut regarder les +extensions qui lui ont été ajoutées. Une extension est la définition d'un +ensemble de champs. Par exemple nous pouvons définir l'extension Personne et +l'extension Employer et les utiliser sur le même objet. L'objet aura donc +tous les champs Personne et tous les champs Employer il portera donc les +deux notions en même temps. Si pour le projet est utilisé par une société +qui à besoin de champs complémentaire à Employer, il n'y a pas besoin de +modifier les extensions existantes ou modifier le schéma de la base. Il faut +simplement créer une extension spécifique que l'on ajoutera à Employer et +que l'on pourra utilisé pour la visualisation de l'Employer. Si le projet +principale évolue, cela n'a aucun impact sur l'extension spécifique de cette +société. Il n'y a donc aucun effort à faire pour maintenir des extensions +spécifiques. Les développeurs du coeur de l'application n'ont pas besoin de +se soucier de chose spécifique qui aurait pu être développer. De la même +façon, il n'y a pas de surcoût de maintenance pour les personnes ayant fait +des extensions spécifiques, ces extensions sont réutilisables de version en +version sans modification ou maintenance. + +Le coeur de Wikitty apporte les services de base: + +- génération de Bean métier pour une utilisation simple par le développeur +- une classe WikittyProxy qui masque les objets Wikitty et manipule les Bean + métier généré +- Création, sauvegarde, restoration des Entités +- Recherche des entités (fulltext, facette, ...) +- notion d'arbre + +Les services additionnels existants: + +- notion de label (pour étiqueter des objets) +- sécurité: authentification et autorisation +- cache +- notification (synchronisation de deux serveurs, notification en + client/serveur, listener sur les modifications) +- import/export + +Concept technique +================= + +Le concept est d'avoir un coeur le plus simple possible avec quelques methodes +(une vingtaine). +- lecture +- ecriture +- recherche +- login/logout +- check de droit (read, write, delete) + +Les nouveaux services (cache, securite, notification, ...) s'intercale en +couche au dessus du coeur pour founir les services. + +Le coeur delegue le travail à trois services qui peuvent être implanté avec +des techologies différentes: +- stockage des extensions (memoire, jdbc, hbase, jpa, ...) +- stockage des données (memoire, jdbc, hbase, jpa, ...) +- indexation et recherhce (memoire, SolR, ...) + +Il est donc possible d'ajouter de nouveau service de haut niveau, ou +d'ajouter de nouvelle façon de stocker l'information. + +La partie cliente des applications ne travail qu'avec le WikittyProxy qui +masque la notion d'objet Wikitty pour retourner des beans metiers facilement +manipulable par le développeur. + +Service haut niveau +=================== + +Un service de haut niveau peut contenir: +- des extensions spécifiques +- une couche de service specifiques +- une classe Helper
participants (1)
-
bpoussin@users.nuiton.org