A travers cet article, nous allons étudier le fonctionnement de la partie Web Content Management d'Alfresco. Comme tout CMS, le WCM offre les fonctionnalités suivantes :

  • plusieurs personnes peuvent travailler sur un docuement
  • il existe une chaîne de publication
  • il y a un versioning des documents publiés
  • les opérations de gestion de forme et de contenu sont séparées

Le principe de fonctionnement du WCM est le suivant: un site internet peut-être enrichi de contenu grâce à l'utilisation de formulaires web classiques facilement utilisables pour des non-informaticiens et permettant de générer un résultat dans une multitude de formats (HTML, Texte, OpenOffice, PDF etc...).

D'un point de vue technique, le formulaire va générer un fichier XML et des templates seront chargés d'aller récupérer les informations qu'il contient pour créer l'affichage. Ces templates peuvent être codés en XSL, en XSL-FO ou bien en Freemarker.

Avant de se lancer dans la réalisation d'un site internet via Alfresco, il est nécessaire de répondre au moins à ces 3 questions :

  • Quel sera en détails le contenu du site internet, les rubriques à enrichir par des articles, des fiches etc...
  • Sous quels formats ces informations seront-elles disponibles ?
  • Quelles seront les personnes chargées d'écrire, de publier et de valider ces articles ?

Pour illustrer le fonctionnement, nous utiliserons un site web J2EE qui nous permettra de poster des informations puis nous verrons comment créer un formulaire web Alfresco et comment lier ces éléments pour gérer notre contenu en ligne.

Afin de faciliter la création du site web et permettre une gestion propre et facile quand il sera en ligne, il est intéressant de créer un répertoire propre à chaque catégorie d'informations où seront stockés les fichiers xml générés par les formulaires. Par exemple, pour une catégorie «informations », nous aurons un répertoire « infos / contenu».

Créer ensuite un Bean nommé "NewsReleaseBean", compilez-le et stockez-le dans le répertoire WEB-INF de votre application.

Une fois vos beans créés, créez un WAR de votre site web, il sera utilisé pour le déploiement par le WCM.

Passons maintenant au formulaire web. Ceux-ci sont générés via un schéma XSD :

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	   xmlns:news="http://www.versusmind.eu/alfresco/news" 
           targetNamespace="http://www.versusmind.eu/alfresco/news" 
           elementFormDefault="qualified"> 

<xs:simpleType name="category"> 
    <xs:restriction base="xs:normalizedString"> 
      <xs:enumeration value="Produits"/> 
      <xs:enumeration value="Entreprise"/> 
      <xs:enumeration value="Général"/> 
      <xs:enumeration value="Téléchargement"/> 
    </xs:restriction> 
  </xs:simpleType> 

  <xs:element name="news_release"> 
    <xs:complexType> 
      <xs:sequence> 
        <xs:element name="title" type="xs:normalizedString"/> 
        <xs:element name="head" type="xs:normalizedString"/> 
        <xs:element name="body" type="xs:string" minOccurs="1" maxOccurs="1"/> 
		<xs:element name="category" type="news:category" default="Général"/> 
		<xs:element name="launch_date" type="xs:date"/> 
      </xs:sequence> 
    </xs:complexType> 
  </xs:element> 
</xs:schema>

On note que l'on peut utiliser des éléments énumérés très facilement. Notre objet « news_release » est composé d'un titre, d'un chapeau d'article, du corps de l'article, d'une catégorie et d'une date de publication. Le nom de l'élément « news_release » sera utilisé dans les autres fichiers.

Modifiez ensuite votre fichier WEB.XML pour y mapper votre fichier TLD correspondant au namespace news déclaré ci-dessus.

Créez ensuite deux fichiers template, le premier codé en XSL permettra l'affichage des données XML au format HTML, le second, codé en freemarker, génèrera un fichier OpenOffice.

Nous disposons donc maintenant d'un fichier WAR contenant notre site web, d'un fichier XSD qui est le squelette du formulaire web permettant de poster du contenu de type "News", d'un fichier XSL pour afficher les news au format HTML et d'un fichier Freemarker qui créera un fichier OpenOffice.

Connectez-vous maintenant à Alfresco en tant qu'admin et allez dans "Data Dictionnary" puis dans "Web Forms"

alfresco2.png

Allez chercher votre fichier XSD

alfresco3.png

Dans name et title, vous pouvez laisser « news-release », dans « Description », mettez « Formulaire permettant de poster une news ». Dans « output path pattern », laissez « ${name}.xml », cliquez ensuite sur « Next »

alfresco4.png

On arrive ensuite sur l'interface permettant de sélectionner les templates. Commencez par aller chercher votre fichier « news-releases.xsl »

alfresco5.png

Alfresco a automatiquement détecté que le template est du « XSLT ». Laissez « name » et « title » tels quels. Donnez une description. Dans « Rendition mimetype », il faut sélectionner HTML, laissez « output path pattern » tel quel. Enfin, cliquez sur « Add to List »

Faites la même chose avec le fichier « news-release-odt.ftl » qui gère le template ODT et sélectionnez « OpenDocument Text ». Ajoutez à la liste puis cliquez sur « Next ».

La phase suivante offre la configuration du « workflow » qui sera appliqué par défaut à chaque fois que le formulaire sera appelé. Les formulaires étant réutilisables par plusieurs sites web, il faut essayer d'être généraliste et être certain que l'action par défaut ne posera pas de problèmes. Pour le moment, sélectionnez « no not now », on le configurera spécifiquement pour notre site web tout à l'heure. Cliquez sur « Next » et finalisez la création en cliquant sur « Finish ».

Maintenant, cliquez sur « Web Projects » dans le menu de gauche puis cliquez sur « Create » et « Create web project »

Alfresco8.png

Dans « name », donnez un nom à votre site internet, dans « DNS name » mettez la même chose. Laissez « webapp » sur « ROOT ». Vous pouvez ensuite définir « Title » et « Description ». Laissez décochée la case « use as a template ».

La seconde étape permet de sélectionner la façon dont est créé le projet, soit on en crée un nouveau, soit on se base sur un projet déjà existant.

alfresco9.png

La troisième étape laisse la possibilité d'ajouter des serveurs de déploiement puis la quatrième étape va lier notre projet à des formulaires en les paramétrant. Cliquez sur « Add to List » pour ajouter le formulaire « news-release » à notre projet.

alfresco10.png

alfresco11.png

Cliquez sur "Web form details"

alfresco12.png

Dans « output pah pattern », il faut mettre le chemin vers le dossier dans lequel on stockera les fichiers XML.

${webapp} et ${name}.xml sont deux variables qui représentent le répertoire de l'application et le nom du fichier.

Dans « Workflow », sélectionnez celui proposé et validez.

alfresco13.png

On remarque que le bouton « Configure workflow » est devenu actif.

alfresco14.png

Ensuite, cliquez sur « Configure Templates »

alfresco15.png

Dans « output path pattern » il faut mettre les mêmes informations que précédemment mais on rajoute la variable ${extension} après le nom du fichier.

Validez et demandez ensuite à configurer le Workflow.

alfresco17.png

Il existe deux types de Workflow, « Serial » et « Parallel »

Le mode « Serial » va mettre en place une chaîne de validation du type « A valide, puis B valide, puis C valide etc... » où A, B et C sont des validateurs.

Le mode parallèle demande également une validation par A, B et C mais il n'y a pas d'ordre prédéfini.

Pour le moment, choisissez « Serial » puis cliquez sur « Search », la liste des utilisateurs apparaît. Sélectionnez ceux que vous souhaitez inclure dans la chaîne de validation et l'ordre dans lequel la validation se fera.

alfresco18.png

Ici, Adrien devra valider pour que Benoît reçoive une demande de validation. Lorsque Benoît aura validé, le processus sera terminé et le contenu sera en ligne.

L'étape cinq gère la configuration du workflow pour les éléments qui ne sont pas générés par des web-forms.

alfresco19.png

Faites « Add to list » puis « Configure workflow ». Comme précédemment, sélectionnez les utilisateurs qui devront valider les éléments. Le filename pattern match «  .* » permet de configurer précisément les fichiers qui devront être validés par ce workflow en remplaçant l'étoile par l'extension du ou des fichiers.

Validez votre choix puis passez à l'étape 6 qui va gérer les liens utilisateurs / rôles.

alfresco20.png

Sélectionnez un utilisateur et un rôle puis « Add to List ».

alfresco21.png

Adrien va être « Content Manager » il peut publier des articles, éditer le contenu du site etc... Benoît est « Content Reviewer », il peut relire les articles mais ne peut pas en écrire. Pierre est « Content Publisher » et pourra écrire et éditer du contenu.

A chaque utilisateur sera liée une « sandbox ». Cette fonctionnalité est extrêmement intéressante et nécessaire pour assurer un bon travail d'équipe et réduire les erreurs. Chaque utilisateur va pouvoir accéder à une copie du site web sur laquelle il pourra tester ses modifications avant de les soumettre à la publication. Par exemple, les développeurs pourront tester leur code, les rédacteurs visualiser leurs articles etc... A chaque modification validée, la copie présente dans chaque sandbox est mise à jour.

L'étape finale de création propose d'envoyer un email aux différents utilisateurs pour leur faire savoir qu'ils vont participer au projet. Validez la création, Alfresco affiche alors la partie « Web projects » où notre site est désormais présent.

alfresco22.png

Cliquez sur le titre du site, on arrive alors sur la page présentant les différents « sandboxes ». La « staging SandBox » est celle qui contient le site web en ligne, « My Sandbox », comme son nom l'indique, est l'espace au sein duquel il est possible de tester les modifications.

Nous allons maintenant importer notre site web. Dans la partie « My Sandbox », cliquez sur « Browse Website », ensuite cliquez sur « Create » puis « Bulk import »

alfresco23.png

Allez chercher votre fichier WAR contenant le site web puis cliquez sur « Ok », patientez quelques secondes le temps qu'Alfresco réalise le déploiement. Si tout se déroule correctement, le squelette du site web apparaît.

alfresco24.png

En cliquant sur « Preview Website », le site web apparaît dans une nouvelle fenêtre.

alfresco25.png

Il faut maintenant soumettre le site à la validation, des utilisateurs. Pour se faire, retournez dans votre sandbox puis cliquez sur « Modified Items ».

alfresco26.png

Sélectionnez tous les items et cliquez sur « submit selected ». Une page d'information apparaît, elle permet d'informer les utilisateurs chargés de la validation et si besoin de modifier le workflow.

alfresco27.png

Validez l'envoi, déconnectez-vous d'Alfresco et reconnectez-vous avec le ou les utilisateurs chargés de valider le contenu hors « formulaires ».

Sur la page d'accueil, la liste des tâches à réaliser est affichée. Il doit y avoir celle que nous venons de soumettre. Cliquez sur le titre, une page de détails s'affiche. Celle-ci nous offre plusieurs options comme donner un statut à la présente validation, laisser des commentaires ou agir sur les fichiers. Le petit menu de droite permet de sauvegarder, d'approuver ou de rejeter directement le contenu. Cliquez sur « Approve ». Faites de même si vous avez d'autres utilisateurs et dans l'ordre de la chaîne de publication.

alfresco28.png

Connectez-vous maintenant avec un utilisateur chargé de gérer du contenu. Dans sa sandbox, cliquez sur « web forms », puis sur « Create Content » dans la ligne correspondant à votre formulaire.

alfresco29.png

Renseignez le champ « Name », ce sera le nom du fichier XML généré. Laissez les autres champs tels quels.

alfresco30.png

Notre fichier « news-release.xsd » est appelé par Alfresco qui, grâce à Xforms, va créer le formulaire.

alfresco31.png

Remplissez les champs puis validez.

alfresco33.png

Alfresco a créé le fichier XML ainsi que les deux templates pour la visualisation ODT et HTML.

alfresco34.png

Pour soumettre cet article, vous pouvez procéder comme précédemment avec le site web ou bien cochez la case « Submit these 3 files when wizard finishes ». Il ne vous reste plus qu'à effectuer la validation avec les différents utilisateurs.

Lancez ensuite une visualisation du site web puis allez dans la catégorie contenant l'article posté

alfresco35.png

Notre article est bien présent, en cliquant sur le titre, on peut le voir en détails

alfresco36.png

Enfin, cliquez sur le lien « Télécharger la news en ODT » pour charger le fichier OpenOffice correspondant.

alfresco37.png

Il ne reste plus qu'à répéter la procédure avec d'autres formulaires pour enrichir le site.