Petit retour sur la surface de Jackrabbit, dans le cadre de Coselmar
Hoyo, Grâce à Ben, j'ai passé un peu de temps à regarder Jackrabbit pour voir si ça pouvait être utile dans le projet ou à défaut s'il y avait des idées à en retenir. J'admets qu'après une rapide lecture en diagonale, je me suis demandé si ça valait le coup de continuer : j'avais l'impression qu'il y avait trop de chose, et un peu trop de complexité pour une application comme Coselmar. Après une bonne journée à jouer avec la librairie et à lire la doc, je me pose toujours des questions, mais avec un regard plus positif sur la chose. Pour vulgariser (je pense pas utile d'aller dans le détail, au final, la doc de Jackrabbit est pas si mal quand on se fait à son style, et les tutos aident bien à l'appréhender), JackRabbit, appelons le Jack, est un Content Repository : il permet de "stocker" des fichiers et leurs metadatas et de faire des opérations comme de la recherche dessus. Cette gestion passe par des "Noeux" qui sont utilisé pour le chemin vers le fichier, et les metadatas ('/node1/node2/{node qui serait le document}/{jcr:content (node qui contient les medatas en propriétés)}'). La recherche se fait grâce à une indexation Lucene, à partir des metadatas. Le petit plus, c'est un module supplémentaire, qui se base sur Apache Tika, qui permet d'analyser également le contenu des documents pour l'indexation. Et parce que c'est pas fini, modulo l'implem d'un SynonymProvider, il est possible d'avoir sur Lucene une recherche par synonymie. Ce qui fait que, d'un point de vue gestion des documents dans Coselmar, et des demandes futures déjà envisagées, l'utilisation de Jack pourrait permette de s'abstraire d'une indexation Lucene qui deviendra vite nécessaire ainsi que de la recherche dans le texte des documents. Jack peut également s'appuyer sur une gestion d'utilisateurs et de groupes, et permettre de gérer les accès aux noeux. Dans le cadre de Coselmar, cela peut donc permettre de gérer les accès aux documents. Mais plus loin que cela, je me suis allé à envisager un stockage purement basé sur le repository de Jack. Un peu à la sauce unix, tout deviendrait "fichier", ou plutot Node dans le cas présent, notamment grâce aux metadata que l'on peut donner à chaque node. Nous pourrions alors voir les questions comme des nodes, avec les limitations par utilisateurs/groupes : avec la création d'une question, un groupe serait créé pour avoir l'unique accès au node de la question. Dans ce groupe serait placé les experts "participants" à la question. Le même principe serait utilisé pour le dépot des documents à accès restreint. L'arborescence des documents seraient du genre : [relatifs aux questions] : /root/questions/:questionId/:document [hors question] : /root/coselmar/:userId/:document J'ai pas été en profondeur dans Jack, il y a surement des choses que je n'ai pas vu, des problématiques peut être, ou mêmes des choses que j'ai pu rater avec Coselmar (ce serait embêtant ça :/). L'aspect configuration de Jack entre autre est un sujet que je n'ai pas réussi à bien appréhender, j'ai l'impression qu'il n'est pas possible de faire une config "dans le code" et qu'il est nécessaire de passer par l'écriture d'un fichier (xml) de configuration pour la réaliser. Dans mes tests, j'ai utilisé la config par défaut, j'ai juste foutu en *option de la VM* le path de mon repository (sinon c'était dans le code un System.setProperty) pour éviter d'avoir à la racine de mon appli le répertoire du repo. Merci pour la lecture :) -- Yannick Martel Code Lutin <http://www.codelutin.com/> +33 2 40 50 29 28
participants (1)
-
Yannick Martel