Bonjour, Je découvre Alfresco et je cherche à évaluer les possibilités de customisation. J'ai donc parcouru le "Developer Guide" (http://wiki.alfresco.com/wiki/Developer_Guide) et j'ai quelques questions: En terme de custo, j'ai donc vu que l'on pouvait: - definir de nouveaux "content model" (http://wiki.alfresco.com/wiki/Step-By-Step:_Creating_A_Custom_Model), par extension du content de standard ("cm:content"): celà consiste à ajouter de nouvelles metadonnées sur des documents - définir de nouveaux "content types" (http://wiki.alfresco.com/wiki/Data_Dictionary_Guide#Step_2:_Create_a_new_Content_Type😞 celà consiste à ajouter de nouvelles metadonnées sur des documents, à définir de nouveaux aspects, et de nouvelles associations Q1: déjà, j'ai l'impression que ces 2 items se ressemblent fortement mais j'ai l'impression que les 2 pages du wiki ne sont pas liées (je ne sais pas trop par quel chemin je suis arrivée à la première) Q2: le nouveau "content type" va-t-il se concretiser par une nouvelle classe Java et une nouvelle table en base de données ? Sinon, ou seront stockés les nouveaux attributs ? Q3: Est-il possible de définir de nouveaux objets qui ne sont pas des "content" ? Par exemple pour développer une nouvelle fonction (exemple un wiki) dans alfresco qui a besoin de persister ses propres objets et de faire référence à des documents d'alfresco ?
R1 : Oui les 2 sont liés. Sur l'article step_by_step il y a d'ailleurs un lien vers le Data Dictionnary Guide. Les custom types se déclarent dans un custom model. Par contre le point d'extension le plus important est les Aspects. C'est par exemple à travers se mecanisme qu'Alfresco gère le versionning. Les Custom Aspects se déclarent également dans un custom model.
R2 : Ni classe, ni table. Chaque objet créé dans Alfresco (une personne, un fichier, un folder, …) sont des nodes et sont stockés dans des tables génériques (ALF_NODE, ALF_NODE_PROPERTIES,…)
R3 : Alfresco propose des types Forums space, Forums. Il existe également un projet d'extension dans la forge wikispacemodule http://forge.alfresco.com/projects/wikispacemodule ,… . Donc oui il est possible de gerer autre chose que des fichiers.
Merci Alexis pour cette réponse. J'essaie d'aller un peu plus loin dans ma compréhension du modèle de données et je comprend que : - la custo se fait uniquement (vous confirmez ?) à travers le fichier xml de description d'un modèle mais que toutes les données vont bien dans les mêmes tables en base de données. J'imagine qu'il en est de même pour les metadonnées gérées par les "aspects" (qui vont sans doute dans la table avm_aspects. - on peut étendre autre chose que "cm:content" et notamment "sys:base" qui semble être la racine de l'arbre d'héritage. - il n'y a pas de classe java générée pour chaque "content type" (mais il est sans doute possible de s'en créer une à la main). Le fait de stocker tous les objets dans quelques tables n'est-il pas risqué en terme de performance lorsqu'on pas en production ?
En parcourant les forums, je suis tombé sur le topic suivant: http://forums.alfresco.com/viewtopic.php?t=1444 Il semblerait donc que des objets serialisés soient stockés directement en base (vous confirmez ?), ce qui rend la recherche sur les attributs de ces objets difficile. Quand je vois le commentaire final de "dbevacqua" je me dis qu'il aurait peut-être mieux de re-développer son appli "from scratch" … Ce post date de Juillet 2006. Ce qu'il contient est-il toujours d'actualité sur la dernière version ? Si oui, ne serait-il pas judicieux que tous ces développements génériques effectués par "dbevacqua" (ou sa société) se retrouvent dans le produit standard afin de simplifier la vie de toute la communauté Alfresco ?
En fait je pense que le post cité est le résultat d'une incompréhension (plusieurs pour être exact). Ce n'est pas parce qu'on stocke une partie des informations dans une base de données qu'il faut essayer de se raccrocher au modèle relationnel. Ce n'est juste pas transposable tel quel dans Alfresco.
En général les problèmes de performances arrivent plutôt chez les gens qui veulent rajouter des tables dans la base trop rapidement (c'est du vécu).
Mais je ne doute pas que d'autres viennent en parler bien mieux que moi