Category Archives: TALEND

Gestion des droits avec talfrescoOutpout

Comments Off
Filed under ALFRESCO, TALEND

Fonctionnement

Il est possible à partir des options avancées du composant de positionner des droits sur les éléments créés dans alfresco

droits2

Avec l’option document de la liste déroulante, les droits sont positionnés sur le nœud pour lequel j’ai configuré ma création dans le talfrescoOutput. Si j’injecte un document avec le type content, les droits seront positionnés sur le document. Si j’injecte un répertoire avec le type folder (cf tutoriel 1), les droits seront positionnés sur le répertoire.

Avec l’option container, les droits sont positionnés sur l’élément qui contient le nœud pour lequel j’ai configuré le composant alfresco. Si j’injecte un document dans alfresco dans un répertoire repA, les droits seront positionnés sur le container, donc sur repA.

Les droits peuvent être positionnés en mappant un droit standard alfresco (ici collaborator) avec une colonne du flux entrant (ici la colonne DROIT). Attention, si vous avez un groupe GEDA dans alfresco, la valeur que doit contenir la colonne DROIT pour faire le mapping est GROUP_GEDA. En effet le mapping doit être réalisé en utilisant la propriété authorityName du groupe dans le référentiel alfresco et cette dernière est positionnée à GROUP_ concaténée avec le nom que vous avez donné au groupe.

La case à cocher “inherite permissions” positionne la valeur de la case correspondante sous alfresco.

Limites :

  • Les droits sont uniquement ajoutés. Même si le composant est en mode update, les droits existants sont conservés
  • non testé, gérer un type liste sur le colonne entrante pour positionner des droits sur plusieurs groupes

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons

Intégration de documents avec le composant talfrescoOuput

14
Filed under ALFRESCO, TALEND

Intégration de documents dans alfresco

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.

csv_doc

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

job_doc

Le tFileInputDelimited (doc) permet de lire notre fichier csv

tinputfiledoc

N’oublier pas d’initialiser le schéma

schema_csv_doc

Le talfrescoOutput est configuré de la manière suivante.

talfrescoconfmod_doc

talfresco_output_conf

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.

Conclusion

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.

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons

Gestion des logs avec le composant talfrescoOutput

0
Filed under ALFRESCO, TALEND

Introduction

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.

Structure du fichier des logs

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.

  • Code de retour. Success si l’opération c’est bien réalisée, error sinon
  • le chemin de l’élément impliqué dans l’opération
  • le temps d’exécution
  • la date et heure de l’opération
  • Le nodeid de l’élément dans alfresco
  • des informations sur le modèle alfresco (à documenter plus explicitement)

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.

Instrumentation du job

Modifier votre job du premier article ainsi :

job_log

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.

schema_log

Les logs sont filtrés (tfilterRow) pour récupérer les lignes avec un code error.

filtre_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.

fichier_error

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.

run_if

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.

Conclusion

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.

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons

Utilisation du composant tAlfrescoOutput de l’ETL TALEND

28
Filed under ALFRESCO, TALEND

Introduction

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.

csv

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”.

Lecture du fichier csv

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.

csv_setting

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.

schema_csv

Pour vérifier que tout fonctionne, mapper le composant tinputfile avec un composant tlogrow et vérifier que le job s’exécute correctement.

run_with_tlogrow

Nous allons maintenant substituer à notre composant tlogrow, le composant talfrescoOutput.

Configuration du 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.

talfresco_mod

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.

job_alf

Configurer les informations de la fenêtre component.

talf_basic_setting

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.

talf_advance_setting

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.

plan-alfresco

Vous constatez que les métas title et description ont été initialisées.

meta

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.

Conclusion

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.

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons