Ce document présente, de manière simple si possible, les évolutions planifiées dans le cadre des développements freedom 3.0 . Freedom est une boîte à outils EIM permettant de construire rapidement toute application basée sur la production, le partage, la circulation d'information. Il permet de définir le modèle de données, le modèle de droit, les processus et au final les interfaces utilisateur de ces applications.
En tant que « boîte à outils », freedom offre des mécanismes de haut niveau, intégrant la partie technique nécessaire à la réalisation de ce type d'application. La démonstration de ce qu'est freedom ne peut s'appréhender qu'au travers de projets concrets refletant un besoin particulier. C'est pourquoi, il n'existe pas, pour l'instant de briques fonctionnelles métier directement associée à freedom. Cependant, l'organisation du projet freedom et de la forge communautaire associée doit permettre la création et la mise à disposition, de manière simple de tout élément fonctionnel développés dans le cadre de projets.
Freedom 3.X utilise le coeur de freedom sans modification des concepts qui ont été mis en place dès la version 1.X et ont été améliorés et enrichis ensuite sur la version 2.X. La principale modification apportée est la fourniture d'API permettant de dissocier davantage le contenu et le rendu des éléments freedom. Ceci permettant d'envisager tout type de client (client lourd, RIA javascript , Adobe AIR,….).
Une illustration de cette architecture est reflètée au travers d'un nouveau module freedom : freedom-ecm. Ce module propose à l'utilisateur un bureau, en mode web, permettant l'accès, la modification, la collaboration autour de tout type de document freedom. L'utilisation de freedom en mode 2.X, au travers d'un modèle MVC reste toujours accessible, cependant, tous les mécanismes ergonomiques disponibles en interface type 2.X sont repris au travers d'objets graphiques intégrés à ce bureau Web. Ces objets sont développés sur la base du framework javascript extjs. Ce même framework permet aussi de développer l'ensemble des interfaces d'administration des applications développées avec freedom, regroupant ainsi les différentes fonctions d'administration présentes dans différents modules 2.X . De même, un outil d'installation, de mise à jour et d'exploitation de freedom est développé sur la même technologie pour faciliter le déploiement d'applications freedom. Freedom permet des gains de productivité notables par rapport à un développement web « from scratch » basé sur un framework, quelque soit le language ou le framework utilisé. Le développement de freedom 3.X comprend, dans ce sens, un atelier de développement basé sur eclipse permettant d'encadrer encore davantage ces développements et facilitant le travail de production/mise au point de solution.
Si le développement d'une nouvelle application freedom peut tirer avantage de cet environnement de développement (nommé freedom-factory), toutes les opérations de développement et de maintenance d'application freedom peuvent aussi être réalisées au travers de l'interface d'administration freedom.
Les modules freedom-ecm, freedom-admin, freedom-wiff reposent sur le framework extjs, cependant, toutes les fonctions implémentées sont directement accessible sur l'API freedom, côté client ou côté serveur. L'utilisation d'un autre framework de construction d'application cliente telle que GWT, Adobe Air, .net reste donc possible.
Le coeur de freedom repose sur la production de code et de structures de données à partir d'une spécification de famille de document, de droits, de processus, de vues, de valeurs initiales et de valeurs par défaut. Tout document dans freedom bénéficie des mécanismes de base de traçabilité, de gestion de version, d'hyperliens inter-document, de multi-vue, de recherche simple ou avancée, entre autre. La spécification de ces éléments se fait jusqu'à la version 2.X au travers de fichier de définition basés sur un modèle OpenOffice Calc. Ce mécanisme restera accessible sur freedom 3.X jusqu'à ce que la chaine de production intègre un format de définition XML conforme à une DTD (un schéma XML) produite par freedom. Il ne s'agit là que du format de définition des structures freedom. Cette définition sert à alimenter freedom pour initialiser ou maintenir une application. Les définitions réalisées au travers d'OpenOffice pourront être exportée au format XML et maintenue ensuite dans ce format. Il n'y aura donc aucun travail de redesign d'éléments de spécification, simplement un changement de format. Ainsi, des objets métiers développés sous freedom 2.X restent utilisables en freedom 3.X, avec leurs interfaces utilisateurs spécifiques développées en technologie MVC. Une application compatible 2.X restera compatible 3.X. Les développeurs de l'application auront la possibilité, s'ils le souhaitent, d'utiliser alors les IHM 3.X pour reconstruire les vues applicatives et bénéficier d'un environnement graphique et d'une ergonomie plus récente.
Une grande majorité des applications existantes utilisent une représentation « par famille » des informations gérées par freedom. Cette fonction sera directement accessible au travers de widget composite permettant le regroupement d'ensemble de familles de document au sein d'un module fonctionnel. La vue de consultation et d'édition du document sera elle très proche de la vue 2.X, les principales modifications concerneront les menus portés par les documents qui seront « remontés » au niveau de la fenêtre du document.
L'approche normative sur la définition des strucures de document est reprise pour la définition des workflow. Actuellement, les workflow sont implémentés sous forme de structure PHP. Freedom 3.X integrera la norme XPDL Pour la définition de processus. Les workflows pourront être défini et maintenu dans le module freedom-admin et dans le module freedom-factory, mais pourront tout aussi bien être importé depuis tout outil compatible avec cette norme.
Les interfaces 2.X existantes sont toujours disponibles, notamment le calcul de vue et le mécanisme d'applications/actions permettant de construire des applications en mode MVC classique. Freedom 3.X permet de construire des interfaces riches dans différents environnements graphiques (framework javascript ou autre). Dans le cadre de développement d'interfaces riches, le module freedom-data permet l'utilisation de l'API freedom en javascript directement sur le navigateur et le module freedom-extui offre lui des widget de représentation et de manipulation des documents, des collections, des recherches.
L'interface par défaut devient « freedom-ecm », voir plus loin….
Un changement important intervient par rapport aux interfaces 2.X par défaut. Sur du 2.X, tout était ouvert, possible, même ce qui ne servait pas ou était incompréhensible du point de vue utilisateur. Sur 3.X, seules les fonctions utilisateurs sont accessibles, les fonctions d'administration sont regroupée dans le module freedom-admin.
Les collections sont utilisées pour représenter un ensemble de documents, soit sous forme de liste, soit sous forme d'arbre. Ainsi les collections permettent de visualiser le contenu d'un dossier, le résultat d'une recherche, le contenu de tout document conteneur. La collection permet la manipulation de plusieurs documents soit pour des fonctions de déplacement, de copie, de lien soit pour toute action collective disponibles en standard ou développées dans le cadre d'une application. Les actions collectives peuvent être :
Ces widgets sont décrits et des exemples d'utilisation sont fournis 'ici'. [AJOUTER DES CAPTURES]
La représentation de collection sous forme de liste permet le choix des colonnes affichées en fonction des familles de document présente dans la collection, chaque colonne peut être utilisée comme critère de tri sur la collection et chaque colonne peut être filtrée en fonction de son type.
En freedom 2.X, on distinguait la recherche simple, la recherche avancée et le rapport. En freedom 3.X, la recherche avancée et le rapport sont fusionnés en « recherche avancée ». Le comportement des recherche est identique à celui de freedom 2.X, la recherche avancée sur freedom 3.X permet l'utilisation de connecteurs (et/ou/sauf) et l'imbrication de critères de recherche (utilisation du parenthésage) pour des recherches plus pertinentes. [AJOUTER DES CAPTURES].
Le document est bien l'élément essentiel de freedom. En 3.X tout comme en 2.X, le document a une représentation par défaut (une vue) et peut être agrémenté de plusieurs vues complémentaires. De manière basique, la représentation standard d'un document est similaire à la représentation 2.X. La seule différence se situe au niveau des fonctions associées au document qui remontent dans la barre de menu de la fenêtre. Si un document a plusieurs vue, celles-ci sont accessible directement par un mécanisme d'onglet sur le document. Grace à ce mécanisme de multi-vue, les documents conteneur (type classeur) présentent ainsi une vue documentaire classique pour leurs attributs et un onglets de type collection pour l'ensemble des documents insérés. Il devient ainsi possible, en freedom 3.X d'associer des documents par simple drag'n drop entre différentes collections. La relation entre document dans freedom est sémantique, elle est nommée et le type de document lié est défini. Sur freedom 2.X, seule une relation de type « fait référence à » est disponible. En freedom 3.X, une relation de type « est composé de » permettra de construire un document composé de n sous-document en maintenant une dépendance entre les sous-document et le document maitre. Un sous document relié par une relation de type « est composé de » ne pourra être référencé que par un document maitre. Ce type de relation est important dans les applications de production d'informations composites ou plusieurs acteurs participent à la production d'un document principal mais pour lequel on souhaite gérer finement les versions, voire les processus de production des sous-documents. [AJOUTER DES CAPTURES]
En relation avec la fonction de workflow, les utilisateurs habilités ont accès à une interface de reporting leur permettant, workflow par workflow de consulter les éléments suivants (insérer ma spec de reporting workflow). Ces éléments ne sont pas des fonctions « administrateurs » mais bien des fonctions utilisateur.
[INSERER DES CAPTURES]
Freedom-ecm devient l'interface utilisateur « par défaut ». En l'absence d'interfaces spécifiques métier, l'utilisateur utilise freedom-ecm, l'accès par espace/arbre ou espace/famille pour produire/rechercher/consulter l'information associée à son application. Plus « libre » qu'une interface dédiée, l'interface freedom-ecm peut ne pas convenir à des applications très contraintes car elle offre à l'utilisateur un espace ouvert dans lequel il peut créer, inventer de nouveaux documents, de nouveaux rapports, créer des arborescences d'information en fonction des droits qui lui sont conférés. Par contre dans un esprit d'intranet collaboratifs dans lequel cohabitent des éléments très structurants et normalisés et des éléments libres, freedom-ecm peut être retenu comme interface principale d'accès à l'information. Pour illustrer le propos, voici une interface freedom-ecm et une interface contrainte construite avec les objets « métier ». Les objets métiers, les documents sont bien sûr totalement indépendant des l'applications (générique ou spécifique) au travers desquelles ils ont été créés/modifiés/approuvés et il est possible de faire cohabiter plusieurs interfaces métiers autour d'un même socle informationnel. Un utilisateur peut avoir accès en fonction de ses droits à une ou plusieurs de ces interfaces métier et à l'interface « par défaut » freedom-ecm. [ A FAIRE ]
Les interfaces d'administration freedom 3.X reprennent les fonctions d'administration 2.X avec deux objectifs :
Tous ces éléments sont regroupés au sein d'un module unique : freedom-admin.
[INSERER LA MAQUETTE GENERALE]
Sur l'interface d'administration, tous les éléments ayant servi à réaliser l'application finale sont disponibles. Et il est donc possible de créer/maintenir toute application développée avec freedom. En ce sens, freedom-admin embarque des éditeurs xml/php/javascript et les outils de publication d'application freedom.
Le développeur dispose d'un environnement de définition des familles de document, de développement des surcharges sur ces familles (comportement/actions spécifiques), de définition des profils d'accès, des workflows, des droits, des vues sur les documents. L'environnement de production s'appuie sur eclipse, lui permet d'initialiser une structure projet cohérente pour un projet vide, intégrant une arborescence d'éléments à produire, une chaine de publication de l'application produite et un environnement de test/mise au point directement accessible sur son poste de travail. L'éditeur syntaxique apporte une aide pour la définition des familles, des styles, des workflows (contrôle de conformité par rapport aux schémas xml) et pour le codage php et javascript de son application. Une analyse sémantique permettra, dans le code php et/ou javascript de maintenir une cohérence entre les objets manipulés et les attributs disponibles (lié à la définition de la famille associée ou au workflow utilisé).
l'environnement de développement s'appelle freedom-factory