Aller au contenu | Aller au menu | Aller à la recherche

Ouverture & Innovation

Le blog de l'équipe VersusMind

vendredi, mars 13 2009

Gérer un site internet avec le WCM Alfresco

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.

jeudi, mars 5 2009

Analyse géographique sous Pentaho

Nous allons voir comment réaliser un tableau de bord avec l'API Google Maps sous la plateforme Pentaho. Ce tableau de bord devra permettre l'affichage sur la carte des différents clients d'une entreprise ainsi que le nombre de rendez-vous déjà effectués avec ceux-ci. Lorsque l'on cliquera sur un point de la carte, une petite fenêtre apparaîtra avec une jauge représentant le nombre de rendez-vous par rapport à un nombre maximal défini. Les points sur la carte pourront prendre 3 couleurs différentes selon la valeur du nombre de rendez-vous. Il sera possible de changer les valeurs des intervalles ce qui influera en temps réel sur la couleur des points.

pentaho-gm1

Pour se faire, nous allons créer et modifier plusieurs fichiers. La première étape consiste à présenter succinctement la table qui contiendra nos données. Le modèle physique est le suivant :

TABLE client(id,org_name,adr_town,adr_one_locality,adr_one_postalcode,rdv) 
id : identifiant, clé primaire, ENTIER
org_name : nom du client, CHAINE
adr_town : adresse du client, CHAINE
adr_one_locality : ville du client, CHAINE
adr_one_postalcode : code postal, CHAINE
rdv : nombre de rendez-vous, ENTIER

Dans le répertoire d'installation de pentaho, allez sous « pentaho-solutions », puis dans le répertoire où vous souhaitez voir apparaître votre tableau de bord.

1.Créez un sous-répertoire « google »

2.A l'intérieur de celui-ci, créez un fichier « index.xml » qui contiendra le code suivant :

<index> 
	<name>%name</name> 
	<description>%description</description> 
	<icon></icon> 
	<visible>false</visible> 
	<display-type>list</display-type> 
</index>

3.Créez un fichier « index.properties » :

description=Google maps
name=Google

4.Dans le répertoire de niveau supérieur, créez un fichier google_map.url, ce fichier va nous permettre de spécifier le fichier à appeler pour l'affichage.

[InternetShortcut] 
URL=/pentaho/Map2 
[navigation] 
Name=%url_name 
Description=%url_description 
Icon=dashboard.jpg 
Target=google_map

5.Créez un fichier google_map.properties :

url_description= Pentaho google maps
url_name = Localisation clients

6.Editez le fichier « web.xml » et ajoutez l'appel à une page JSP que vous créerez pour l'occasion et qui sera une copie de celle fournie par Pentaho.

7.Créez un fichier Xaction et sauvegardez-le dans le sous-répertoire « google » sous map1.xaction

<?xml version="1.0" encoding="UTF-8"?> 
<action-sequence> 
  <name>CurrentPositionTitles.xaction</name> 
  <title>data for map</title> 
  <version>1</version> 
  <logging-level>debug</logging-level> 
  <documentation> 
    <author>Votre nome</author>  
    <description>description</description>  
    <help/>  
    <result-type>rule</result-type>  
    <icon></icon> 
  </documentation> 

  <inputs> 
    <dept type="string"> 
      <default-value>Google maps</default-value>  
      <sources> 
        <request>dept</request> 
      </sources> 
    </dept> 
  </inputs> 

  <outputs> 
    <data type="result-set"/> 
  </outputs> 

  <resources/> 
  
  <actions> 
    <action-definition> 
      <component-name>SQLLookupRule</component-name> 
      <action-type>Perform SQL Query</action-type> 
      <action-inputs> 
        <dept type="string"/> 
      </action-inputs> 
      <action-outputs> 
        <query-result type="result-set" mapping="data"/> 
      </action-outputs> 
      <component-definition> 
      <jndi>Nom du datasource</jndi>  
    	<query><![CDATA[votre requête SQL]]></query> 
      </component-definition> 
    </action-definition> 
 
  </actions> 
</action-sequence>

8. Ouvrez le fichier jsp créé à l'étape 6, nous allons y apporter quelques modifications et éclairer quelques points intéressants.

int topthreshold = 100000;
int bottomthresold = 50000;

correspondent aux deux seuils servant d'intervalles à la coloration des points.

<script language=\"javascript\" src=\"js/pentaho-ajax.js\"></script>\n
[...]
<script language=\"javascript\" src=\"js/google-demo.js\"></script>\n" ); 
[...]
"onload=\"load()\" onunload=\"GUnload()\"

Nous appelons ici deux fichiers javascript fournis par Pentaho : pentaho-ajax.js et google-demo.js

Faites une copie de google-demo.js et modifiez le lien ci-dessus.

Nous constatons qu'au chargement de la page, la fonction load() de google-demo est appelée.

runtime = SolutionHelper.doAction( "repertoire",  "sous-repertoire",  	"map1.xaction",  	"MyMap.jsp",  parameters,  userSession,  messages,  null 	);

Répertoire : votre répertoire de travail Sous-répertoire : le sous-répertoire où se trouve map1.xaction (par défaut google).

Par défaut sont déclarées les variables suivantes :

String customerNum = ""; 
String customer = ""; 
String city = ""; 
String state = ""; 
String zip = ""; 
String value = "";

Changeons-les en :

String id =""; 
String org_name=""; 
String adr_town=""; 
String adr_one_postalcode=""; 
String adr_one_locality=""; 
String rdv="";

Ensuite, nous arrivons sur la fonction « addPoints » qui va permettre l'ajout des points sur la carte via un enchaînement d'appel à des fonctions javascript. La boucle « for » va traiter chaque ligne retournée par la requête SQL de map1.xaction, il faut modifier le bloc d'attribution des variables de la façon suivante, afin de caster correctement les variables.

id  = results.getValueAt(row,0).toString(); 
org_name = (String)results.getValueAt(row,1); 
adr_town = (String)results.getValueAt(row,2);				 
adr_one_postalcode = (String)results.getValueAt(row,3); 
adr_one_locality = results.getValueAt(row,4).toString(); 
rdv = results.getValueAt(row,5).toString();

row est une ligne de résultat, l'indice correspond à la position de la valeur à rechercher dans row.

showAddress est ensuite utilisée. Cette fonction prend plusieurs paramètres :

  • l'adresse à trouver
  • le nom du client
  • l'identifiant
  • le nombre de rendez-vous
  • un booléen à laisser à faux

on a donc le code suivant :

showAddress( "<%= adr_town %>,<%= adr_one_locality %>, <	%=adr_one_postalcode %>,FRANCE", "<%= org_name %>", "<%= id %>", <%= rdv 	%>, false );

On peut bien évidemment changer « FRANCE » par un autre pays. Le reste du code est de l'HTML et va générer l'affichage. Vous pouvez le modifier comme bon vous semble. Il convient juste de garder un div ayant comme id la valeur « map », ce div contiendra la carte. Il y a deux select box qui permettent de changer à la volée les valeurs des intervalles. On peut bien évidemment modifier ces valeurs pour que cela corresponde au minimum et au maximum fournis par nos données.

Passons maintenant au fichier « google-demo.js ». Il faut commencer par changer les valeurs des variables : topThreshold et bottomThreshold pour qu'elles correspondent aux valeurs fournies dans le fichier jsp. Ensuite, nous déclarons trois types d'icônes qui vont être utilisés pour différencier les groupes de valeurs (vert, jaune, rouge).

La première fonction est load(), elle permet de charger une carte, de la centrer sur un point précis, d'y ajouter les contrôles de zoom et de switch d'affichage, et les points sur la carte via « addPoints ».

La seconde fonction, « customerClick » va gérer les actions lors du clic sur un point. On appelle la méthode ajax pentahoAction sur le fichier dial1.xaction en passant des paramètres : - le client - la valeur courante du nombre de rendez-vous - la valeur max du nombre de rendez-vous - la valeur du premier seuil - la valeur du second seuil Enfin, on indique que le callback se fera sur la méthode UpdateInfoWindow.

UpdateInfoWindow va afficher une petite boîte contenant les informations renvoyées par dial1.xaction, notamment le graphique type jauge.

Il faut ensuite commenter l'appel à chart.xaction qui lui, génère un ensemble de statistiques. Il ne nous intéresse pas dans notre exemple

La fonction showAddress que nous utilisons via le fichier JSP va générer un tableau contenant différentes informations puis appeler la fonction qui affiche le marqueur sur la carte. La fonction showMarker va permettre d'attribuer une couleur à chaque marqueur selon la valeur des intervalles et la valeur de l'enregistrement passé en paramètre.

Enfin, la méthode update, appelée lors du changement d'une valeur des select box, s'occupe de régénérer les points avec les bonnes couleurs de marqueurs en rapport aux nouvelles valeurs.

Nous avons fait le tour des principales fonctions et fichiers à utiliser pour créer notre tableau de bord et pouvons maintenant étudier une fonctionnalité intéressante de Google Maps, la création de zones de sélection cliquable.

Nous allons utiliser une surcouche javascript disponible sous licence Creative Commons. Ce fichier « epoly.js » est disponible sur le site suivant : http://econym.googlepages.com/index.htm

pentaho-gm2

Ce fichier JS est à inclure dans le fichier JSP. Ensuite, il faut créer un fichier XML qui respecte la nomenclature suivante :

<states> 
<state name ="nom_pays" colour="couleur_carte" >
	<point lat=valeur lng=valeur />
	<point lat=valeur lng=valeur />
	etc...
</state>
<state>
...
</state>
</states>

Chaque polygone sera donc défini par un ensemble de points.

Dans le fichier JSP, il faut ajouter le code suivant :

 //<![CDATA[ 
  if (GBrowserIsCompatible()) { 
 
      var polys = []; 
      var labels = []; 

      // Récupération de la carte, ajout des contrôles et centrage
      var map = new GMap2(document.getElementById("map")); 
      map.addControl(new GLargeMapControl()); 
      map.addControl(new GMapTypeControl()); 
      map.setCenter(new GLatLng(42.16,-100.72),4); 

	// Définition de la méthode appelée lors du click sur une zone
      GEvent.addListener(map, "click", function(overlay,point) { 
        if (!overlay) { 
          for (var i=0; i<polys.length; i++) { 
            if (polys[i].Contains(point)) { 
              var area = polys[i].Area()/1000000; 
              var sqmiles = area/2.58998811; 
              map.openInfoWindowHtml(point,"You clicked on "+labels[i]+"<br>The 			area of "+labels[i]+" is "+parseInt(area) 
                 	+" sq km.<br>that's "+parseInt(sqmiles)+" square miles<br>" 
                  +"Its boundary is "+parseInt(polys[i].Distance()/1609.344)+" 			miles long" 
              );
              i = 999; // Jump out of loop 
            } 
          } 
        } 
      }); 

      // Lecture du fichier XML
      var request = GxmlHttp.create(); 

	// récupération du fichier XML
      request.open("GET", "jsp/states.xml", true); 
      request.onreadystatechange = function() { 
      if (request.readyState == 4) { 
          var xmlDoc = GXml.parse(request.responseText); 
	 
          // Récupération des élements « state »
          var states = xmlDoc.documentElement.getElementsByTagName("state"); 
	 
	    // Création des polygones
          for (var a = 0; a < states.length; a++) { 
            var label  = states[a].getAttribute("name"); 
            var colour = states[a].getAttribute("colour"); 
            var points = states[a].getElementsByTagName("point"); 
            var pts = []; 
            for (var i = 0; i < points.length; i++) { 
               pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")), 
                                   parseFloat(points[i].getAttribute("lng"))); 
            } 
	 
            var poly = new Gpolygon(pts,"#000000",1,1,colour,0.5,					{clickable:false}); 
            polys.push(poly); 
            labels.push(label); 
            map.addOverlay(poly); 
          } 
          // ================================================           
        } 
      } 
      request.send(null); 
    } 

  
    
    // Si le navigateur n'est pas compatible
    else { 
      alert("Sorry, the Google Maps API is not compatible with this browser"); 
    } 

    // Ajout d'une icône sur la carte
    var tinyIcon = new GIcon(G_DEFAULT_ICON); 
    tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png"; 
    tinyIcon.iconSize = new GSize(12, 20); 
    tinyIcon.shadowSize = new GSize(22, 20); 

    var markerOptions = { icon:tinyIcon }; 
    var point = new GLatLng(35.8659,-108.5715); 
    map.addOverlay(new GMarker(point,markerOptions)); 
     
    //]]> 
    </script>

Ces exemples sont bien évidemment paramètrables à volonté, notamment via la requête SQL et les interactions que l'on souhaite offrir à l'utilisateur.

lundi, juin 16 2008

Workflow de demande de congés eGroupWare

Le module WorkFlow d'eGroupWare permet, comme son nom l'indique, de gérer des workflow, c'est à dire des processus internes au sein d'eGroupWare.

Ce module est basé sur le moteur de Workflow OpenSource Galaxia. La documentation sur le module WorkFlow d'eGroupWare est pour le moment très limitée, celle de Galaxia est donc d'une grande aide.

Les possibilités de création de processus sont nombreuses grâce à l'accès à l'API d'eGroupWare (langage PHP)

Lire la suite...

vendredi, mai 2 2008

Interfaces graphiques avec AutoIT3 et KODA

Suite à notre article sur le langage de script AutoIT 3 (lire l'article), cet article a pour but de présenter le programme permettant de créer rapidement des interfaces graphiques avec AutoIT, à la manière du Form Designer du Visual Basic.

Lire la suite...

jeudi, novembre 8 2007

Quel est le TCO d'Office 2007 ?

A l'heure actuelle, dans une organisation, lorsqu'est menée la réflexion sur l'évolution, voire le changement, de suite bureautique, la question de l'arbitrage du TCO  (ou "coût total de possession") se pose rapidement. C'est un calcul savant mais parfois aléatoire qui permet de déterminer l'ensemble des coûts générés par la possession d'un logiciel bien au-delà du simple coût de licence. C'est donc une variable essentielle de prise de décision.

Lire la suite...

mardi, octobre 30 2007

AutoIt 3 - Langage de script pour administration Windows

Après avoir vu le titre, certains lecteurs vont penser qu'il s'agit là d'un concurrent direct de KIX avec son célèbre Kixtart (http://www.kixtart.org/). Ce n'est pas tout à fait vrai, même si l'on retrouve des fonctions communes. AutoIT est un langage de programmation orienté administration Windows, sans être pour autant restreint dans cet usage. Actif, doté d'une communauté conséquente et facilement utilisable et extensible, c'est un langage amené à être de plus en plus connu et répandu.

Accès direct : http://www.autoitscript.com/autoit3/

Lire la suite...

jeudi, octobre 11 2007

Introduction au nouveau module de génération de rapport d'OpenOffice.org

Comment générer un rapport avec des images.

Présentation

Ce document est destiné aux utilisateurs d'OpenOffice 2.3.0 désirant générer des rapports comprenant des images. C'est une des nouvelles possibilités offertes par le nouveau générateur de rapports d'OpenOffice.org arrivé avec cette dernière version.

Nous allons voir comment stocker des photographies dans Base, puis comment exploiter cette base lors d'un publipostage.
Cette possibilité est disponible grâce à l'extension « sun-report-builder ».

Quelques notions initiales

L’objectif d’une base de données est le stockage structuré de données et la mise à disposition d’outils permettant d’afficher les données de manière pertinente.
Une base est constituée de Tables. Chaque Table est constituée de plusieurs champs.
La base de données est mise à jour à l'aide d'un formulaire pour ajouter, modifier ou supprimer un ou des enregistrements.

Lire la suite...

Des présentations OpenOffice Impress enfin fluides.

Ne nombreux utilisateurs d'OpenOffice.org possesseurs de cartes graphiques de marque ATI l'avaient déjà constaté à leurs dépends : la fluidité des animations Impress laissait parfois à désirer sur les modèles de cette marque : il fallait même parfois supporter quelques écrans bleus ce qui était vite très énervant.
Ce problème est maintenant résolu par une petite extension DirectX développée par SUN, téléchargeable ici.

mardi, août 7 2007

Les nouveautés de KDE 4.0

KDE 4.0 vient de sortir en version beta 1. Cela signifie que l'ajout de nouveautés est terminé et les développeurs se concentrent maintenant sur la résolution de bugs. L'occasion de faire un point sur les nouveautés apportées par la quatrième version de KDE.

  • Marble est une application comparable avec Google Earth (et en partie compatible). La légèreté est un atout de cette application, car le fonctionnement reste fluide même sans accélération OpenGL. L'un des atouts est que l'application fonctionne aussi bien en stand-alone (programme indépendant dans une fenêtre qu'embarqué dans une autre application), permettant par exemple, de géolocaliser un contact de son carnet d'adresse.
  • Kwin, le moteur de rendu de KDE s'est vu être le centre de toutes les attentions et a vu son nombre d'effets visuels accrus, ainsi que ses performances améliorées.
  • Konqueror, qui faisait office, dans les version antérieures, de navigateur web ET d'explorateur de fichiers se concentrera sur la navigation Web, tandis que Dolphin se chargera de la partie exploration. L'interopérabilité entre les deux applications a d'ailleurs été accrue et les deux programmes se verront adjoindre le logiciel GwenView pour visualiser les images.
  • Konsole, le shell (programme de ligne de commande) de KDE a été lui aussi largement amélioré et verra ses onglets ornés d'un titre et d'une couleur pour bien distinguer les différentes sessions.
  • oKular, le visualisateur universel de documents, s'est vu doté d'une meilleure accessibilité, d'une meilleure prévisualisation avant impression et d'un support accru du multithreading (multi-tâches concurrentes)
  • KRDC, l'outil de prise en main à distance, est en cours de réécriture et supportera désormais les onglets en cas de prise en main multiple, ainsi que le stockage des mots de passe dans l'application KWallet.
  • KDE PIM, le projet de gestion d'informations personnelles, va recevoir dans sa version publique, des éléments de la version professionnelle. KOrganizer va bénéficier d'une vue de type diagramme de Gantt, ainsi que d'une vue de type Outlook. KMail supporte désormais le tagging des mails (mots-clés)
  • Plasma, l'application qui gère le bureau, a été revue et supportera désormais le javascript, les applets SuperKaramba et pourrait supporter bientôt les widgets de Mac OS X et ceux du navigateur Opera.

Source : http://www.kde.org/announcements/announce-4.0-beta1.php

vendredi, juillet 20 2007

OOXML : un temps de plus pour la réflexion...

La volonté de Microsoft de présenter rapidement son format OOXML devant l'ISO en vue d'une normalisation se heurte désormais à un fâcheux contretemps.

En effet, le comité technique V1, membre de l'ISO et chargé au sein de l'INCITS (International Committee for Information Technology Standards) des dossiers relatifs aux systèmes de publication et de bureautique, vient de refuser de 2 voix le passage de ce format à la mention "Approuvé, avec commentaires". Pour franchir cette étape, deux tiers des voix des 26 membres du comité V1 étaient nécessaires. Les sociétés partenaires de Microsoft représentées dans ce comité n'étaient apparemment pas suffisamment nombreuses pour atteindre le seuil fatidique des deux tiers.

Le vote du comité V1 est crucial car il conditionne largement les choix de l'INCITS, organe influençant quant à lui les décisions des Etats-Unis pour l'adoption éventuelle d'un nouveau standard ISO.

La décision des Etats-Unis, déterminante dans le cadre d'une éventuelle normalisation du format OOXML, serait donc pour le moment négative. Si le refus se confirme, le format de Microsoft devrait sans doute connaître de profonds remaniements.

lundi, juillet 16 2007

Les parlements français et italien passent au libre.

Depuis la rentrée parlementaire, chaque député de l'Assemblée nationale française dispose d'un poste de travail libre. Ce projet, à l'étude depuis 2006, est motivé par une volonté d'indépendance logicielle (notamment vis-à-vis de Microsoft), de stimulation de l'économie locale et de maîtrise des coûts (les économies réalisées à long et moyen terme devraient être non négligeables).

Les 577 députés disposeront désormais sur leur poste de travail d'un système Ubuntu Linux, ainsi que de certains logiciels libres incontournables tels que Firefox, Thunderbird et OpenOffice.org 2.0.

L'exemple français fait déjà des émules. En effet, après l'Assemblée nationale française, c'est au tour des députés de la chambre italienne de passer aux logiciels libres et à l'environnement Linux. Cette migration est conséquente puisque ce ne sont pas moins de 3500 postes de travail qui sont concernés. La distribution qui sera retenue n'est en revanche pas encore connue (et pour cause, elle ne serait peut-être même pas encore choisie...).

Les migrations des parlements français et italien sont complètes et constituent deux excellentes nouvelles pour le monde du libre. Bien entendu, les députés devront prendre en main leurs nouveaux outils bureautiques. Un temps de formation sera sans doute nécessaire. Toutefois, les avantages d'une migration sont absolument incontestables :

  • Sécurité. Les postes de travail utilisant des logiciels libres sont bien moins victimes de tentatives d'espionnage et de consultations illicites de données que ceux fonctionnant avec des logiciels propriétaires.
  • Indépendance technologique. Les postes de travail des deux parlements ne seront plus dépendants d'un seul éditeur (Microsoft).
  • Economie. Outre le fait de participer au développement de l'économie locale, cette migration devrait permettre au parlement italien d'économiser environ 900 euros par poste de travail, ce qui représente une économie totale de 3 millions d'euros.

vendredi, juillet 6 2007

Enfin un vrai convertisseur vers ODF : merci SUN !

C'est aujourd'hui une bonne nouvelle pour toutes les démarches de migration vers OpenOffice.org. En effet, depuis hier, Sun propose en téléchargement gratuit un convertisseur au format standardisé ODF pour les documents Word, Excel et Powerpoint produits avec les versions de Microsoft Office allant d'Office 2000 à Office 2003 en passant par XP. Pour le moment, ce plugin ne serait toutefois pas compatible avec Office 2007.

Ce convertisseur, disponible uniquement en anglais, devrait être rapidement traduit en d'autres langues dont le français.

Ce plugin semble bien meilleur que son équivalent de Microsoft que la société de Redmond avait fait développé par la société française Cleverage. Dans Word, il permet d'ouvrir et de sauvegarder des documents texte au format ODF. Avec Excel et Powerpoint, il est désormais possible d'importer et d'exporter des feuilles de calculs et des présentations au format ODF.

Pour réaliser ce plugin, Sun a utilisé des filtres ayant été constamment améliorés avec StarOffice et OpenOffice. Ces filtres seraient apparemment bien plus performants que la technologie XSLT utilisée par Microsoft, un outil de conversion reposant sur du XML.

Le convertisseur de Sun vient directement concurrencer le traducteur Open XML / ODF pour Office 2003 et 2007 annoncé en mars dernier par le tandem Microsoft / Novell, servant essentiellement à exploiter le format OOXML de Microsoft dans la suite OpenOffice. Le plugin de Sun va bien plus loin en proposant tout simplement de récupérer les documents créés depuis 2000 avec les diverses suites bureautiques Microsoft.

La page de téléchargement du Sun ODF Plugin 1.0 for Microsoft Office

mercredi, juillet 4 2007

XPS : encore un standard ou un nouveau monopole ?

Après avoir fait du format Office Open XML (OOXML), utilisé dans la suite bureautique Office 2007, un standard reconnu, Microsoft souhaite désormais en faire autant avec son format de documents XPS (XML Paper Specification). Le format XPS, concurrent direct du PDF d'Adobe, vient en effet d'être soumis à l'organisme de standardisation de référence Ecma (European Computer Manufacturers Association) International . Ce dernier a crée un comité technique chargé de développer un standard basé sur le XPS dans le but de le soumettre à la validation de l'Organisation Internationale de Normalisation (ISO). La norme ISO est souvent perçue comme un gage de qualité pour les administrations publiques et les grandes entreprises. La réponse de l'ISO concernant une normalisation éventuelle du XPS ne devrait toutefois pas tomber avant 2010.

Le comité technique de l'Ecma travaillant sur la normalisation du format XPS a pour mission de "créer un format standard de document électronique basé sur le langage de description de pages XML qui soit cohérent avec les implémentations existantes du format XPS".

Par ailleurs, le format OOXML de Microsoft devrait lui aussi être soumis cette année encore au jugement de l'ISO dans l'optique d'une normalisation intégrale.

Le cas du XPS stigmatise encore davantage l'opposition entre Microsoft et le reste de l'industrie informatique. Le vice-président d'IBM Bob Sutor, chargé de l'Open Source et des standards et farouche opposant du format OOXML, n'a pas hésité à dénoncer le passage en force de Microsoft au sujet des tentatives de normalisation de XPS et d'OOXML. En effet, Sutor vient d'exprimer publiquement ses craintes en terme d'ouverture, d'indépendance et de degré de collaboration dans les prochaines années : "Devons-nous économiser notre temps et notre argent et laisser Microsoft définir les normes internationales basées sur ses propres produits ?"

mercredi, juin 27 2007

Le gouvernement vénézuélien se dote de PCs sous Linux.

Le Venezuela vient d'équiper son parc informatique de systèmes d'exploitation basés sur Linux. Cette migration traduit un profond désir d'indépendance technologique du Venezuela vis-à-vis des standards étrangers.

A priori, il ne s'agirait pas que d'une simple migration. Dans les faits, le ministère de l'Industrie et du Commerce, au même titre qu'une entreprise chinoise partenaire, est actionnaire de la Venezuela de Industria Tecnologica, l'entreprise qui fabriquera les PCs. Le gouvernement projette donc de s'investir pleinement dans cette migration, en envisageant de produire localement certains des composants entrants dans la fabrication des machines.

La commercialisation des machines, habituellement assurée par des institutions privées, sera cette fois prise en charge par l'Etat. Ces PCs sous Linux seront tout d'abord destinés aux missions gouvernementales, ainsi qu'aux institutions publiques. Ils devraient par la suite être mis à disposition du grand public, participant ainsi à l'essor de Linux au Venezuela ainsi que dans l'ensemble de l'Amérique Latine.

vendredi, juin 8 2007

Microsoft Office remplacé par NeoOffice dans les écoles néo-zélandaises.

En Nouvelle-Zélande, le ministre de l’Éducation a choisi de ne pas reconduire le partenariat avec Microsoft qui consistait pour les écoles du pays à utiliser principalement Microsoft Office.

La suite propriétaire devrait donc être supprimée de plus de 25 000 Mac présents dans les écoles néo-zélandaises. Les applications Word, Excel et PowerPoint seront remplacées par NeoOffice.

Cette décision devrait permettre à la Nouvelle-Zélande d'économiser près de 1,5 million d’euros.

vendredi, avril 20 2007

Sortie d'Ubuntu 7.04 « Feisty Fawn ».

Ubuntu 7.04, encore appelée « Feisty Fawn », est disponible depuis le jeudi 19 avril.

Cette nouvelle version très attendue comprend plusieurs améliorations :

  • Configuration automatique du réseau grâce à NetworkManager.
  • Migration depuis Windows proposée par l'installateur (incluant la reconnaissance des favoris d'Internet Explorer et de Firefox, des fonds d'écrans, mais également la possibilité d'importer des contacts AOL et Yahoo au cours de l'installation) .
  • Meilleur support des applications Windows.
  • Gestion améliorée des applications multimédia, notamment par l'installation de Flash, de Java de Sun ainsi que de multiples codecs.
  • Installation facilitée des drivers pour les cartes graphiques.

VersusMind se félicite de la sortie de la version Ubuntu 7.04. Découvrez les offres de services et de formations Ubuntu proposées par VersusMind.

mardi, mars 27 2007

La nouvelle version bêta 7.04 d'Ubuntu est présentée au public.

Ubuntu Linux vient de se doter de nouveaux atouts permettant à l'utilisateur d'envisager sereinement une migration depuis Windows. En sortant sa version bêta 7.04, la distribution gagne encore en crédibilité. En effet, cette nouveauté d'Ubuntu, qui n'est qu'une version bêta pour le moment, fait déjà preuve d'une grande fiabilité.

Utilisant le noyau 2.6.20, Feisty Fawn englobe, entre autres, GNOME 2.18, OpenOffice.org 2.2.0rc3 et X.org 7.2 pour le poste de travail. Concernant les serveurs, cette version bêta dispose d'Apache 2.2, de PostgreSQL 8.2, de PHP 5.2.1 ou encore de LTSP 5.0.

La virtualisation fait également son apparition, VT chez Intel et AMD-V. Signalons également la possibilité d'importer les signets de Firefox ou d'Internet Explorer depuis une partition Windows, tout comme les contacts de messagerie de type Yahoo, MSN ou AOL.

Lors de l'installation, il est possible de sélectionner les codecs que l'on souhaite, pour visualiser des films ou écouter de la musique par exemple. Enfin, cette version bêta d'Ubuntu propose un partage réseau plug&play du nom d'AVAHI .

Avec une version bêta 7.04 présentant de telles dispositions, nous ne pouvons qu'attendre avec impatience la sortie de la version définitive...

jeudi, mars 22 2007

Le Danemark s'engage avec force dans la voie des standards ouverts.

Depuis 2006, le Danemark ne cesse de manifester son intérêt pour les formats ouverts. Ainsi, le 2 juin 2006, le Parlement a voté l'utilisation obligatoire des standards ouverts dans les Technologies de l'Information et de la Communication du pays, en fixant 2008 comme date butoir. Le 23 févier 2007, Helge Sander, Ministre danois de la Science, de la Technologie et de l'Innovation, a précisé les implications concrètes de cette décision.

Le rapport met l'accent sur deux points qui risquent fort de faire débat dans les mois à venir. Ainsi, « les standards ouverts devront être implémentés graduellement en rendant obligatoire l'utilisation de ces standards ouverts pour le secteur public quand cela est techniquement possible ». Par ailleurs, les standards ouverts ne seront obligatoires que « si une étude économique montre que cela n'entraînera pas de coût supplémentaire pour le secteur public ».

Bien évidemment, les différents protagonistes de cette profonde mutation à venir se querellent déjà au sujet de la dénomination « standard ouvert » qui paraît encore bien équivoque. De même, les organisations danoises vont-elles faire preuve de suffisamment de bonne volonté pour que l'adoption de standards libres soit au final « techniquement faisable » ? Enfin, la question des coûts de migration vers les logiciels libres ainsi que de leur utilisation future constituera sans doute également un frein potentiel à la généralisation de ceux-ci dans les systèmes bureautiques du pays.

Le vote du Parlement danois constitue néanmoins une excellente nouvelle pour les défenseurs des standards ouverts !

mardi, mars 20 2007

Le ministère de la Défense poursuit dans la voie du logiciel libre

Alors que la DGME (Direction Générale de la Modernisation de l'Etat) éprouve des difficultés au niveau du RGI (Référentiel Général d'Interopérabilité), la Direction Générale des Systèmes d'Information et de Communication du ministère de la Défense manifeste, par le biais d'une première directive, sa volonté d'utiliser toujours davantage de logiciels libres.

Dans cette directive, deux points majeurs sont à souligner, à savoir un recours officiellement affiché aux standards ouverts ainsi qu'une préférence pour les logiciels libres à coût, risques et efficacité comparables.

Par cette directive, le ministère de la Défense semble progressivement suivre dans son ensemble l'exemple donné par l'une de ses composantes majeures : la Gendarmerie Nationale.

La DGME compte désormais un ministère incontournable dans ses rangs, ce qui pourrait permettre d'engager le RGI sur la voie des standards ouverts et des logiciels libres.

vendredi, mars 16 2007

L'Etat se penche sur le coût et sur l'efficacité de ses équipements informatiques.

Une étude datant de 2003 et portant sur les coûts moyens d'un poste de travail avait abouti à la conclusion suivante : la part consacrée au support et aux services d'infrastructures représentait 50 % du coût total alors que celle dédiée à l'acquisition et à la maintenance du matériel en représentait 16 %. L'Etat dispose d'un parc informatique considérable et pourrait réaliser des économies de plusieurs centaines de millions d'euros, à condition d'optimiser ses équipements bureautiques.

Toutefois, le nombre de systèmes d'information différents actuellement installés sur les postes de travail de l'Etat est si important qu'il est quasiment impossible de procéder à une optimisation informatique pertinente en terme de réduction de coûts, mais également de cohérence, de compatibilité et d'efficacité.

L'Etat vient d'engager une phase d'audit de son parc informatique, regroupant sous cette appelation le matériel informatique de bureautique (à l'exception de matériels bureautiques métiers de type industriels liés à des systèmes particuliers), les logiciels des postes de travail, ainsi que l'ensemble des ressources humaines du secteur informatique.

Les objectifs avoués sont une meilleure visibilité du parc bureautique de l'Etat sur les plans organisationnel et technique, l'élaboration d'un tableau de bord destiné à améliorer l'efficacité des équipements tout en réduisant les coûts ainsi que l'implication véritable des différents ministères dans l'optimisation de la bureautique étatique.

- page 1 de 3