Attendre tome 2 (sera en 2 tomes). Parait très bien
Des mêmes auteurs
Attendre tome 2 (sera en 2 tomes). Parait très bien
Des mêmes auteurs
Mes liens sur delicious du 10th mai au 12th mai:
Mes liens sur delicious du 12th avril au 5th mai:
Mes liens sur delicious du 22nd mars au 11th avril:
Mes liens sur delicious du 25th février au 18th mars:
Nous allons intégrer des documents dans le plan de classement construit durant le premier article. Pour cela nous allons traiter le fichier csv suivant.
Ce fichier va permettre d’intégrer les documents com.doc, factu.doc et devis.doc dans notre plan de classement. Ces documents seront intégrés dans alfresco avec les noms com1.doc, factu1.doc et devis1.doc. Les méta-données title, description et author seront initialisées.
Vous remarquerez la quatrième ligne du fichier qui correspond à un emplacement dans alfresco qui n’a pas été initialisé dans l’article 1 et qui donc n’existe pas. Ce point nous permettra de comprendre le fonctionnement de l’option container mode du talfrescoOutput.
Pour réaliser l’intégration nous réalisons le job suivant
Le tFileInputDelimited (doc) permet de lire notre fichier csv
N’oublier pas d’initialiser le schéma
Le talfrescoOutput est configuré de la manière suivante.
Le contrôle de l’intégration est réalisé comme dans l’article 2.
Exécuter votre job. Vous pouvez constater que vos documents ont été créés dans notre plan de classement sous alfresco. Si vous analysez plus en détail les logs vous constatez qu’une erreur a été récupérée. En effet le répertoire toto de la quatrième ligne du fichier csv ne correspond à aucun répertoire existant dans alfresco et comme le container mode est à update only, ce dernier n’est pas créé et le document factu.doc n’est donc pas intégré dans alfresco sous ce répertoire. Passer le container mode à “create ou update” et relancer votre job.
Vous pouvez constater que le répertoire toto a été créé et qu’un document factu1.doc est présent à l’intérieur. Dans ce mode les éventuels containers (répertoires) qui manquent sont créés automatiquement. Attention, cela ne vous permet pas d’initialiser les méta-données.
Dans l’article 1, nous avons généré un plan de classement. Dans le deuxième nous avons instrumenté notre job pour gérer/détecter les éventuelles erreurs. Dans ce dernier article, nous avons finalisé en intégrant des documents dans notre plan de classement.
La problématique de construire des traitements d’intégration en masse de documents dans alfresco en initialisant des méta-données est un sujet récurant. J’espère que ces informations seront un complément à la documentation talend et vous aideront à réaliser vos traitements et qu’une dynamique existera autour de ce composant pour échanger et l’améliorer.
Remerciements : Merci à la société Talend et plus particulièrement Cédric Carbone qui a immédiatement été partant dès que nous avons exposé notre souhait de financer le développement d’un composant générique pour réaliser des intégrations dans alfresco. Merci à la société Open Wide et plus particulièrement Marc Dutoo pour son savoir faire et son efficacité sur les technologies alfresco.
Cette création est mise à disposition sous un contrat Creative Commons
Dans le premier article nous avons réalisé un job simple pour initialiser un plan de classement dans alfresco. Nous allons améliorer ce job pour exploiter les logs générés par le composant talfrescoOutput et permettre ainsi un suivi des intégrations.
Au niveau des “Basics settings” du composant talfrescoOutput vous devez spécifier un emplacement pour un fichier de logs qui sera alimenté par le connecteur alfresco. Ce fichier est un fichier csv (vous pouvez remplacer l’extension xml par défaut par csv) avec les colonnes suivantes.
Nous allons modifier notre job pour détecter dans le fichier de log si des erreurs sont présentes et enregistrer ces erreurs dans un fichier à la date-heure du jour pour permettre une expertise ultérieure.
Modifier votre job du premier article ainsi :
L’objectif est, à la suite de la première étape (on subjob ok), de réaliser une analyse du fichier de log généré par alfresco. Ce fichier est lu en utilisant un composant tfileinputdelimited avec le schéma suivant.
Les logs sont filtrés (tfilterRow) pour récupérer les lignes avec un code error.
Les lignes en erreur sont enregistrées dans un fichier error avec la date et heure de l’exécution dans le nom du fichier.
Le file name prend la valeur suivante pour générer un nom de fichier intégrant la date et l’heure d’exécution
“C:/talend/TOS-Win32-r21383-V3.0.3/workspace/log/” + “error-” + TalendDate.formatDate(“yyyy-MM-dd hh-mm-ss”,TalendDate.getCurrentDate()) +”.csv”
Enfin, au niveau tfileoutputdelimited nous utilisons le trigger run if pour faire mourir le job si une erreur est détectée. Pour cela le run if teste le nombre de lignes enregistrées dans le fichier de logs des erreurs. Ce nombre doit être à zéro.
Remarque : dans la fenêtre Condition, si vous tapez sur ctrl espace, vous accédez à la liste des variables talend et vous pouvez ainsi construire facilement votre condition.
Exécuter votre job. S’il est configuré comme pour le premier article, vous devez générer un fichier log avec zéro ligne. En effet, l’option Document Mode étant à Create or update, votre job réalise une mise à jour de votre plan de classement et toutes les lignes du fichier de log sont en success. Modifier le document Mode à create only et relancer le traitement. Vous devez obtenir un fichier error avec toutes les lignes qui ont posées des problèmes. En effet dans cette configuration, l’élément alfresco ne doit pas exister préalablement dans alfresco.
Nous avons simplement ajouté un mécanisme pour gérer les éventuelles erreurs issues du processus d’intégration dans alfresco. Bien entendu, ceci pourrait être amélioré pour, par exemple, envoyer un message d’erreur à un groupe d’administrateurs, talend offrant de multiples possibilités. Dans le prochain article, il sera temps d’alimenter notre plan de classement avec des documents.
Cette création est mise à disposition sous un contrat Creative Commons
La société TALEND édite un ETL open source. Ce dernier intègre un grand nombre de connecteurs. Parmi ces derniers, on trouve un connecteur pour alimenter la solution de gestion de contenus open source alfresco.
Dans ce premier article, nous allons voir comment utiliser TOS (talend open studio) pour créer un job qui va initialiser un plan de classement dans alfresco à partir de sa description contenue dans un fichier csv.
L’objectif est d’obtenir le plan de classement suivant :
-racine
—dos1
——ssdos11
——ssdos12
—dos2
——ssdos21
——ssdos22
—dos3
——ssdos31
——ssdos32
La source de données pour obtenir ce plan est stockée dans le fichier csv suivant.
La première colonne donne le “chemin” où sera créé le répertoire. Le répertoire sera créé dans alfresco avec le nom “nom” et nous initialiserons les métas title et description avec la colonne “libelle”.
Grâce à un composant tfileinputdelimited, nous allons lire le fichier csv. Pour cela, après avoir créé un job, déposer le composant dans le job et configurer ce dernier comme indiqué dans la capture suivante.
Ne pas oublier de spécifier la taille de l’entête à 1 (Header) si votre fichier intègre une ligne pour le titre des colonnes. Ne pas oublier de spécifier au niveau de “Edit schema” le schéma du fichier csv comme sur l’image suivante.
Pour vérifier que tout fonctionne, mapper le composant tinputfile avec un composant tlogrow et vérifier que le job s’exécute correctement.
Nous allons maintenant substituer à notre composant tlogrow, le composant talfrescoOutput.
Pour une distribution de alfresco avec tomcat, déposer les fichiers “stax-api-1.0.1.jar”, “wstx-lgpl-3.2.7.jar”, “talendalfresco-client_1.0.jar” et “talendalfresco-alfresco_1.0.jar” dans le répertoire tomcat/webapps/alfresco/WEB-INF/lib du serveur alfresco. Redémarrer le serveur alfresco. Les fichiers sont livrés avec TOS au niveau du répertoire du composant talfrescoOutput (pluginsorg.talend.designer.components.localprovider_3.1.0.M2_r22164componentstAlfrescoOutput).
Nous sommes prêts à utiliser le composant alfresco. Déposer le composant dans votre job. Double cliquer sur le composant pour faire apparaitre la fenêtre suivante.
Dans l’ordre, cliquer sur le bouton add pour indiquer au composant vos fichiers contenant la description de vos modèles alfresco. Nous nous contentons de travailler avec le modèle standard de alfresco.
Dans la liste déroulante du haut nous sélectionnons le type folder que nous allons utiliser pour construire notre plan de classement. Enfin, nous sélectionnons l’aspect Titled de la liste de droite pour l’ajouter à la liste de gauche. Cliquer ensuite sur le bouton OK.
En résumé : Cette fenêtre permet d’indiquer au composant les fichiers du modèle de données alfresco à utiliser, de sélectionner le type alfresco qui sera utilisé dans le processus d’intégration des données et enfin de sélectionner les aspects pour choisir les métas que nous alimenterons.
Nous allons maintenant mapper le composant alfresco avec le flux du fichier csv.
Configurer les informations de la fenêtre component.
update du 07/05/2009 : ne pas mettre de guillemet au niveau de URL, login, password.
Attention à la syntaxe pour indiquer la racine de alfresco (propriété base de Target association ; tester avec un alfresco sous OS windows). Remarquer l’option result log file name qui permet de spécifier un emplacement pour un fichier des logs.
Veiller bien à supprimer la ligne inscrite par défaut dans “Association target mapping” au niveau des advanced setting.
Vous pouvez maintenant exécuter votre job depuis la fenêtre run. Si tout se passe bien, vous constatez la création du plan de classement dans alfresco.
Vous constatez que les métas title et description ont été initialisées.
Dans le paramétrage de base du composant nous avons spécifié l’option document mode à create only. Si vous modifiez la propriété libellée dans le fichier csv (par exemple remplacer devis par chiffrage au niveau du répertoire dos1) et que vous relancez votre job, les propriétés title et description du dossier dos1 ne sont pas modifiées. Passer l’option document mode à update et relancer votre job. Vous constatez que les propriétés ont été actualisées. L’option “document mode” s’applique à l’élément créé dans alfresco à partir de la définition fournie dans les Property Mapping de la fenêtre Basic settings et ceci indépendamment du fait que nous créons un document, un folder ou autre chose.
L’option Container mode est une autre fonction qui peut prendre deux valeurs. “Create or update” ou “Update only”. Un élément défini dans les “Property Mapping” est créé dans alfresco à un endroit défini au niveau de l’option Base dans “Target Location”. Si l’arborescence définie dans l’option base n’existe pas dans alfresco et que le Container mode est à “Create or update”, le processus d’intégration créera les répertoires manquants en utilisant un type folder (il est possible d’intervenir sur le type, mais cela dépasse l’objet de ce tutoriel). Si l’option est à update only et qu’il manque des répertoires, l’intégration de l’élément défini dans les Property Mapping ne sera pas réalisée.
Nous avons vu qu’il est très facile d’initialiser un plan de classement dans alfresco à l’aide d’un job TALEND. Dans un prochain article, nous verrons comment récupérer le fichier de log généré par le talfrescoOutput pour vérifier que l’intégration a bien été réalisée.
Nous verrons ensuite dans un prochain article comment envoyer des documents dans ce plan de classement. Bien qu’il soit possible d’envoyer des documents dans alfresco et en même temps de construire l’arborescence des répertoires si ils n’existent pas (en exploitant l’option “Container Mode”), il est préférable d’initialiser son plan de classement au préalable car c’est l’unique moyen d’alimenter proprement les méta-données des répertoires.
Cette création est mise à disposition sous un contrat Creative Commons
Mes liens sur delicious du 13th février au 20th février:
Mes liens sur delicious du 5th février au 10th février: