alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une...

20
alfresco #alfresco

Transcript of alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une...

Page 1: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

alfresco

#alfresco

Page 2: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Table des matières

À propos 1

Chapitre 1: Démarrer avec alfresco 2

Remarques 2

Examples 2

Installation ou configuration 2

À propos d'Alfresco 3

Chapitre 2: Administration 4

Examples 4

Commencer et arrêter 4

Enregistrement 4

Les sauvegardes 4

Vérification 5

Chapitre 3: Comportement et politique 8

Examples 8

Fichier de version automatique s'il existe avec le même nom 8

Chapitre 4: Modèle Alfresco avec liste dynamique 11

Examples 11

Exemple de base 11

Chapitre 5: Script T-SQL pour créer une base de données Alfresco dans SQLServer 2008 - 20112

Introduction 12

Remarques 12

Examples 12

T-SQL_script_4_alfresco 12

Chapitre 6: Scripts Web 14

Introduction 14

Examples 14

Bonjour World Script Web 14

Folder Maker: un script Web qui gère le POST 15

Crédits 18

Page 3: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

À propos

You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: alfresco

It is an unofficial and free alfresco ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official alfresco.

The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.

Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]

https://riptutorial.com/fr/home 1

Page 4: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Chapitre 1: Démarrer avec alfresco

Remarques

Editions disponibles

ÉditionSupport commercial

Prêt à la production

VendeurDernière date de sortie

Alfresco One Oui OuiAlfresco Software Inc.

Alfresco Community Edition

Non NonAlfresco Software Inc.

LXCommunity ECM Oui Oui Loftux AB

Examples

Installation ou configuration

Installations de développement et d'évaluation

Alfresco propose différents programmes d'installation pour différents systèmes d'exploitation et plates-formes. Cependant, ces installateurs ne sont pas recommandés pour les environnements de production.

https://www.alfresco.com/alfresco-community-download

https://sourceforge.net/projects/alfresco - plus de fichiers d’installation d’Alfresco, et des modules séparés également disponibles

Installations de production

Vous pouvez installer Alfresco sur les distributions Ubuntu en utilisant le script d'installation Alfresco Ubuntu de Loftux AB.

Pendant que vous effectuez l'installation à l'aide du script, vous pouvez choisir entre Alfresco Community Edition (sans support commercial) et LXCommunity ECM (avec un support commercial).

https://loftux.com/en/products-and-add-ons/alfresco-utilities

Addons

De plus, vous pouvez prolonger votre Alfresco avec des addons créés par la communauté - ils

https://riptutorial.com/fr/home 2

Page 5: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

sont disponibles sur https://addons.alfresco.com

À propos d'Alfresco

Alfresco est un système ECM (Enterprise Content Management) basé sur les frameworks Java et le javascript. Alfresco (en tant que "référentiel" est le noyau de base d'Alfresco en tant que produit).

Il fournit par exemple. Stockage de contenu chiffré, paramètres d'autorisations spécifiques, types de contenu avec des propriétés spécifiques (comme le nom, la date de création, ainsi que les propriétés personnalisées peuvent être inclus).

Alfresco fournit également des processus de workflow séparés ou avec des documents, les flux de travail sont spécifiés par flux de diagramme (le moteur Activiti et jbpm est pris en charge; jbpm est déconseillé).

Le produit supporte également en partie Sharepoint (via les services bureautiques Alfresco - "aos", CIFS et autres fonctionnalités. Les fonctionnalités clés sont:

Stockage de contenu•Récupération de contenu•Modélisation de contenu•Interface de requête•Contrôle d'accès•Vérification•Versioning•

Le contenu utilisateur est enveloppé du calque de sécurité - le contenu binaire est enregistré sur le disque, mais la structure et les métadonnées sont enregistrées dans la base de données.

Cette partie "référentiel" du produit Alfresco as fournit une API REST pour les extensions telles que Alfresco Share.

Lien d'installation Alfresco pour Windows

http://docs.alfresco.com/community/tasks/simpleinstall-community-win.html

Pour Linux

http://docs.alfresco.com/community/tasks/simpleinstall-community-lin.html

Brève description de l'installation

http://docs.alfresco.com/community/concepts/install-community-intro.html

Lire Démarrer avec alfresco en ligne: https://riptutorial.com/fr/alfresco/topic/3748/demarrer-avec-alfresco

https://riptutorial.com/fr/home 3

Page 6: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Chapitre 2: Administration

Examples

Commencer et arrêter

Pour démarrer Alfresco:

Passer à l'utilisateur d'alfresco1. Passez dans le répertoire $ ALFRESCO_HOME2. Exécuter ./alfresco.sh start3.

Pour arrêter Alfresco:

Passer à l'utilisateur d'alfresco1. Passez dans le répertoire $ ALFRESCO_HOME2. Exécuter ./alfresco.sh start3.

Enregistrement

Les journaux Alfresco vivent dans $ ALFRESCO_HOME / tomcat / logs / catalina.out.

Les sauvegardes

Il existe de nombreuses manières de sauvegarder un système Alfresco. Il est important de sauvegarder la base de données ainsi que le Content Store. Vous pouvez également vouloir sauvegarder les indices Solr.

En supposant que vous avez installé à l'aide du programme d'installation binaire, et que tout réside dans $ ALRESCO_HOME, vous pouvez sauvegarder la base de données comme ceci:

Arrêtez Alfresco1. Passer à l'utilisateur d'alfresco2. Accédez au répertoire $ ALFRESCO_HOME / postgresql / bin3. ./pg_dump alfresco --user alfresco > $ALFRESCO_HOME/alf_data/db-backup.sql la base de données avec ./pg_dump alfresco --user alfresco > $ALFRESCO_HOME/alf_data/db-backup.sql . Vous pourriez être invité à entrer un mot de passe. Ce devrait être la même chose que le mot de passe administrateur que vous avez fourni lors de l'installation. Sinon, vérifiez le fichier $ ALFRESCO_HOME / tomcat / shared / classes / alfresco-global.properties pour le mot de passe de la base de données.

4.

Maintenant, votre base de données est sauvegardée. Il est important de le faire en premier. L'étape suivante consiste à sauvegarder le magasin de contenu.

Accédez au répertoire $ ALFRESCO_HOME / alf_data / contentstore.deleted.1. Tout supprimer ici. Il n'y a aucune raison de conserver ces fichiers et aucune raison de les 2.

https://riptutorial.com/fr/home 4

Page 7: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

sauvegarder.Accédez au répertoire $ ALFRESCO_HOME / alf_data.3. Préparez le tout, qui inclura également la sauvegarde de la base de données que vous avez créée à l’étape précédente, en supposant que vous l’ayez placé dans le répertoire alf_data. Exécutez tar czvf ~/alfresco-backup.tar.gz . .

4.

Le contenu de ce fichier TAR a désormais tout ce dont vous avez besoin pour restaurer votre système de travail.

Vérification

L'audit est une fonctionnalité Alfresco qui permet à l'utilisateur de suivre et de consigner certains événements spécifiques lors de l'utilisation de la plateforme ECM.

Activer l'audit

Pour activer l'audit, vous devez ajouter des lignes de configuration au fichier alfresco-global.properties , qui réside dans tomcat/shared/classes/

audit.enabled = true audit.alfresco-access.enabled=true

Vous devez enregistrer les modifications apportées au fichier alfresco-global.properties et redémarrer le serveur Alfresco pour permettre l'audit.

Audit de la configuration par défaut

Voici la liste complète des propriétés de configuration qui peuvent être remplacées en modifiant le fichier alfresco-global.properties :

# Audit configuration audit.enabled=true audit.tagging.enabled=true audit.alfresco-access.enabled=false audit.alfresco-access.sub-actions.enabled=false audit.cmischangelog.enabled=false audit.dod5015.enabled=false # Setting this flag to true will force startup failure when invalid audit configurations are detected audit.config.strict=false # Audit map filter for AccessAuditor - restricts recorded events to user driven events. In this case it neglect events issued by a System or a null user, the content or folder path is under /sys:archivedItem or under /ver: and the node type is not cm:folder, cm:content or st:site audit.filter.alfresco-access.default.enabled=false audit.filter.alfresco-access.transaction.user=~System;~null;.* audit.filter.alfresco-access.transaction.type=cm:folder;cm:content;st:site audit.filter.alfresco-access.transaction.path=~/sys:archivedItem;~/ver:;.*

https://riptutorial.com/fr/home 5

Page 8: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

#The default to preserve all cm:auditable data on a node when the process is not directly driven by a user action system.auditableData.preserve=${system.preserve.modificationData} #Specific control of how the FileFolderService treats cm:auditable data when performing moves system.auditableData.FileFolderService=${system.auditableData.preserve} #Specific control of whether ACL changes on a node trigger the cm:auditable aspect system.auditableData.ACLs=${system.auditableData.preserve}

Comme d'habitude, vous devez enregistrer les modifications apportées au fichier alfresco-global.properties et redémarrer le serveur Alfresco afin d'activer ces modifications.

Filtres d'audit

Les filtres d'audit sont des propriétés qui spécifient la stratégie utilisée pour filtrer les événements d'audit en utilisant une expression régulière particulière pour inclure ou exclure des événements. Les filtres d'audit personnalisés et par défaut peuvent être ajoutés en tant que substitutions dans le fichier de configuration alfresco-global.properties .

L'anatomie d'une propriété de filtre d'audit est la suivante:

audit.filter.<data_producer>.<path>

où <data-producer> est l'un des producteurs de données intégrés à Alfresco:

alfresco-access : un large éventail d'événements de haut niveau tels que les connexions (réussies et échouées), mises à jour de propriétés, CRUD sur les nœuds, lectures / mises à jour de contenu, ajout et suppression d'aspect, gestion des versions, opérations d'archivage / extraction

1.

alfresco-node2. alfresco-api : événements émis par l'appel de méthodes et de services API de bas niveau. Par exemple, il peut être utilisé pour répertorier les paramètres de la liste de recherche SearchServices, la liste des propriétés à l'aide de PropertyServices, les opérations sur les nœuds à l'aide de NodeServices, etc.

3.

et path est la valeur du chemin réel à filtrer.

Les noms de propriété ont un préfixe audit.filter. * Et utilisent '.' en tant que séparateur où, en tant que composants de rootPath et clés de la carte d'audit, utilisez '/'.

Les listes sont évaluées de gauche à droite et si aucune correspondance n'est faite à la fin de la liste, la valeur est rejetée. S'il n'y a pas de propriété pour une valeur donnée ou si une liste vide est définie, toute valeur est acceptée.

Chaque expression régulière de la liste est séparée par un point-virgule (';'). Les expressions comprenant un point-virgule peuvent être échappées en utilisant un ''.

https://riptutorial.com/fr/home 6

Page 9: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Notez que si le drapeau audit.config.strict est défini sur true, le démarrage d'Alfresco échouera en cas de détection de configurations d'audit non valides.

Une expression commençant par un '~' indique que toute valeur correspondante doit être rejetée. Si le premier caractère d'une expression doit être un '~' , il peut être échappé avec un '\' .

L'ajout de .* à la fin d'un filtre inclura toutes les valeurs qui n'ont pas été spécifiquement exclues

Les filtres peuvent être l'un des suivants:

transaction.user - spécifie quelles actions d'utilisateur seront / ne seront pas auditées. Par exemple: les actions de tous les utilisateurs à l'exception de «Système» seront auditées

transaction.type - les actions effectuées sur le type de document spécifié seront auditées.

default.path - les actions qui se produisent sur les documents dans le chemin spécifié seront auditées

transaction.action - spécifie quelles actions seront et ne seront pas auditées. Certains des événements d'audit qui peuvent être activés ou désactivés à l'aide de cette propriété sont les suivants: LIRE, DÉPLACER, COPIER, INSCRIRE, CHECK OUT, CANCEL CHECK OUT, CREATE VERSION, readContent, addNodeAspect, deleteNodeAspect, updateNodeProperties.

Pour plus d'informations sur les filtres d'audit:

https://github.com/tsgrp/OpenContent/wiki/Alfresco-Audit-Configuration

http://docs.alfresco.com/5.1/concepts/audit-example-filter.html

Lire Administration en ligne: https://riptutorial.com/fr/alfresco/topic/6271/administration

https://riptutorial.com/fr/home 7

Page 10: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Chapitre 3: Comportement et politique

Examples

Fichier de version automatique s'il existe avec le même nom

Si le fichier existe avec le même nom, il mettra à jour le fichier avec la nouvelle version.

Pour le registre bean Class dans le fichier service-context.xml

<bean id="autoVersionByNameBehaviour" class="test.demoamp.AutoVersionByNameBehaviour" init-method="init"> <property name="policyComponent" ref="policyComponent"/> <property name="nodeService" ref="NodeService"/> <property name="contentService" ref="ContentService"/> <property name="siteService" ref="SiteService" /> <property name="fileFolderService" ref="FileFolderService"/> <property name="activityService" ref="activityService"/> </bean>

et la classe java

import java.net.URLEncoder; import org.alfresco.model.ContentModel; import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.policy.Behaviour; import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.service.cmr.activities.ActivityService; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteService; import org.apache.commons.io.FilenameUtils; import org.json.JSONStringer; import org.json.JSONWriter; public class AutoVersionByNameBehaviour implements NodeServicePolicies.OnCreateNodePolicy { private PolicyComponent policyComponent; private NodeService nodeService; private ContentService contentService; private ActivityService activityService; private SiteService siteService; private FileFolderService fileFolderService; public void init() {

https://riptutorial.com/fr/home 8

Page 11: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnCreateNodePolicy.QNAME, ContentModel.TYPE_CONTENT, (Behaviour)new JavaBehaviour((Object)this, "onCreateNode", Behaviour.NotificationFrequency.TRANSACTION_COMMIT)); } public void onCreateNode(ChildAssociationRef childAssocRef) { NodeRef previouslyExistentDoc; NodeRef uploadedNodeRef = childAssocRef.getChildRef(); if (this.nodeService.exists(uploadedNodeRef) && this.isContentDoc(uploadedNodeRef) && (previouslyExistentDoc = this.existedPreviousDocument(uploadedNodeRef)) != null) { ContentReader reader = this.contentService.getReader(uploadedNodeRef, ContentModel.PROP_CONTENT); ContentWriter writer = this.contentService.getWriter(previouslyExistentDoc, ContentModel.PROP_CONTENT, true); writer.putContent(reader); this.nodeService.addAspect(uploadedNodeRef, ContentModel.ASPECT_HIDDEN, null); this.postActivityUpdated(previouslyExistentDoc); this.nodeService.deleteNode(uploadedNodeRef); } } private void postActivityUpdated(NodeRef nodeRef) { SiteInfo siteInfo = this.siteService.getSite(nodeRef); String jsonActivityData = ""; try { JSONWriter jsonWriter = new JSONStringer().object(); jsonWriter.key("title").value((Object)this.nodeService.getProperty(nodeRef, ContentModel.PROP_NAME).toString()); jsonWriter.key("nodeRef").value((Object)nodeRef.toString()); StringBuilder sb = new StringBuilder("document-details?nodeRef="); sb.append(URLEncoder.encode(nodeRef.toString(), "UTF-8")); jsonWriter.key("page").value((Object)sb.toString()); jsonActivityData = jsonWriter.endObject().toString(); } catch (Exception e) { throw new RuntimeException(e); } FileInfo fileInfo = this.fileFolderService.getFileInfo(nodeRef); this.activityService.postActivity("org.alfresco.documentlibrary.file-updated", siteInfo == null ? null : siteInfo.getShortName(), siteInfo == null ? null : "documentLibrary", jsonActivityData, null, fileInfo); } private boolean isContentDoc(NodeRef nodeRef) { return this.nodeService.getType(this.nodeService.getPrimaryParent(nodeRef).getParentRef()).isMatch(ContentModel.TYPE_FOLDER); } private NodeRef existedPreviousDocument(NodeRef currentNodeRef) { String fileName = AutoVersionByNameBehaviour.cleanNumberedSuffixes(this.nodeService.getProperty(currentNodeRef, ContentModel.PROP_NAME).toString()); if (!fileName.equals(this.nodeService.getProperty(currentNodeRef, ContentModel.PROP_NAME).toString())) { NodeRef folder = this.nodeService.getPrimaryParent(currentNodeRef).getParentRef(); return this.nodeService.getChildByName(folder, ContentModel.ASSOC_CONTAINS, fileName); } return null; }

https://riptutorial.com/fr/home 9

Page 12: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

public static String cleanNumberedSuffixes(String fileName) { String cleanedFileName = fileName; String baseName = FilenameUtils.getBaseName((String)fileName); if (baseName.indexOf("-") != -1 && AutoVersionByNameBehaviour.isInteger(baseName.substring(baseName.lastIndexOf("-") + 1, baseName.length()))) { return baseName.substring(0, baseName.lastIndexOf("-")) + FilenameUtils.EXTENSION_SEPARATOR_STR + FilenameUtils.getExtension((String)fileName); } return cleanedFileName; } public static boolean isInteger(String s) { boolean isValidInteger = false; try { Integer.parseInt(s); isValidInteger = true; } catch (NumberFormatException var2_2) { // empty catch block } return isValidInteger; } public void setPolicyComponent(PolicyComponent policyComponent) { this.policyComponent = policyComponent; } public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } public void setContentService(ContentService contentService) { this.contentService = contentService; } public void setActivityService(ActivityService activityService) { this.activityService = activityService; } public void setSiteService(SiteService siteService) { this.siteService = siteService; } public void setFileFolderService(FileFolderService fileFolderService) { this.fileFolderService = fileFolderService; }

}

Lire Comportement et politique en ligne: https://riptutorial.com/fr/alfresco/topic/9696/comportement-et-politique

https://riptutorial.com/fr/home 10

Page 13: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Chapitre 4: Modèle Alfresco avec liste dynamique

Examples

Exemple de base

content-model.xml :

.... <constraints> <constraint name="my:aConstraintList" type="x.y.z.project.model.constraint.AConstraintList"> </constraint> .... <property name="my:aValue"> <title>My Value</title> <type>d:text</type> <constraints> <constraint ref="my:aConstraintList"></constraint> </constraints> </property>

et la classe Java déclarée avant:

public class AConstraintList extends ListOfValuesConstraint implements Serializable { .... @Override public final List<String> getAllowedValues() { // Return here the list of values. Enum, call a webservice, etc. } @Override public final String getDisplayLabel(final String value, final MessageLookup messageLookup) { // Return here the label for the value } }

Lire Modèle Alfresco avec liste dynamique en ligne: https://riptutorial.com/fr/alfresco/topic/6272/modele-alfresco-avec-liste-dynamique

https://riptutorial.com/fr/home 11

Page 14: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Chapitre 5: Script T-SQL pour créer une base de données Alfresco dans SQLServer 2008 - 2014

Introduction

Il est utile d’avoir un script T-SQL pour créer et configurer une nouvelle base de données et un nouvel utilisateur à des fins d’installation d’Alfresco. Il est fastidieux de parcourir de nombreuses pages sur MSDN.

Je fournis le script ci-après:

Remarques

Les directives pour préparer Alfresco Instalation à une base de données SQLServer peuvent être lues ici:

[ http://docs.alfresco.com/3.4/tasks/sqlserver-config.html][1]•

Examples

T-SQL_script_4_alfresco

/* creates a database for Alfresco, on SQLServer 2008- 2014 */ use master; GO CREATE DATABASE alfresco; GO /* creates a new LOGIN and associated User use alfresco; GO CREATE LOGIN alfresco WITH PASSWORD = 'alfresco'; GO use alfresco; go CREATE USER alfresco FOR LOGIN alfresco; GO /* Now try to add alfresco user to the db_owner Role NOTICE: coinnect to alfresco database before you can also connect as a local Windows user, in order to successfully execute the followings: */ use alfresco; GO EXEC sp_addrolemember N'db_owner', N'alfresco'; GO /* sets Isolation level */

https://riptutorial.com/fr/home 12

Page 15: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

ALTER DATABASE alfresco SET ALLOW_SNAPSHOT_ISOLATION ON; GO /* creates and sets the alfesco schema as the default one */ use alfresco; go CREATE SCHEMA alfresco AUTHORIZATION alfresco; GO ALTER USER alfresco WITH DEFAULT_SCHEMA = alfresco; GO /* tests table creation */ drop table _buttamiVia_; GO create table _buttamiVia_ ( id int not null ); GO

Lire Script T-SQL pour créer une base de données Alfresco dans SQLServer 2008 - 2014 en ligne: https://riptutorial.com/fr/alfresco/topic/9370/script-t-sql-pour-creer-une-base-de-donnees-alfresco-dans-sqlserver-2008---2014

https://riptutorial.com/fr/home 13

Page 16: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Chapitre 6: Scripts Web

Introduction

Les scripts Web sont des modules fonctionnels dans Alfresco, qui peuvent simplement afficher des informations ou créer des éléments à l'intérieur d'Alfresco (par exemple, exécuter un flux de travail, travailler avec des fichiers, des utilisateurs, des groupes ou d'autres entités).

Tous les webscripts ont deux modèles principaux de code pièce (.js, .java) et Freemaker (.ftl)

Webscript peut également avoir un fichier .properties supplémentaire avec des chaînes de texte utilisées. Les parties sont appariées dans le fichier context.xml (logique du framework Spring).

Il est lié à toute URL décrite dans ce fichier.

Examples

Bonjour World Script Web

Faisons un script web du monde Bonjour. Les scripts Web ont un descripteur, un contrôleur et, éventuellement, une vue. Ces fichiers doivent respecter une convention de dénomination.

Ce descripteur est nommé helloworld.get.desc.xml.

<webscript> <shortname>Hello World</shortname> <description>Hello world web script</description> <url>/example/helloworld?name={nameArgument}</url> <authentication>user</authentication> </webscript>

Vous pouvez voir que le descripteur déclare que ce script Web sera associé à une URL, "/ example / helloworld", et qu’il requiert une authentification de l’utilisateur. Le descripteur déclare également un argument appelé name.

Voici le contrôleur Il s'appelle helloworld.get.js.

model.foo = "bar";

Ce contrôleur est écrit en JavaScript mais les contrôleurs peuvent également être écrits en Java. Avec un peu plus de travail, vous pouvez également écrire des contrôleurs dans d'autres langues.

Ce contrôleur ne fait pas grand chose. Il ajoute simplement une nouvelle variable au modèle appelé "foo" et lui donne une valeur de "bar".

Votre contrôleur a accès à une variété de variables de portée racine qui sont toutes documentées dans la documentation officielle .

https://riptutorial.com/fr/home 14

Page 17: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Enfin, regardons la vue. Il s'appelle helloworld.get.html.ftl

<html> <body> <p>Hello, ${args.name!"name not specified"}!</p> <p>Foo: ${foo}</p> </body> </html>

Vous pouvez voir à partir du nom que cette vue est implémentée en tant que modèle Freemarker et génère du HTML. Cette vue récupère la valeur de "foo" du modèle et elle saisit également l'argument de nom qui a été transmis au script Web. Si aucun argument de nom n'est spécifié, le modèle fournit un texte par défaut.

Si vous souhaitez produire XML ou JSON à la place, vous pouvez simplement modifier le nom, puis mettre à jour votre implémentation de modèle en conséquence.

Déploiement

Les scripts Web peuvent être déployés dans le classpath ou téléchargés dans le référentiel. Par exemple, pour déployer ce script Web en le téléchargeant dans le référentiel, procédez comme suit:

Téléchargez ces trois fichiers dans les extensions de dictionnaire de données / scripts Web1. Actualisez les scripts Web en accédant à http: // localhost: 8080 / alfresco / s / index et en cliquant sur "Actualiser les scripts Web".

2.

Accédez au script Web en accédant à http: // localhost: 8080 / alfresco / s / example / helloworld? Name = Jeff

3.

Folder Maker: un script Web qui gère le POST

Le script Web Hello World gère les méthodes HTTP GET. Mais que faire si vous voulez créer des données sur le serveur? Pour cela, votre script Web doit gérer le POST.

Voici un exemple simple qui crée de nouveaux dossiers dans Société Home. Il est appelé en faisant un appel POST avec un corps JSON qui ressemble à:

{'name':'testfolder'}

Vous pouvez éventuellement ajouter un titre ou une description au dossier en les passant en tant que parties du corps, comme:

{ 'name':'testfolder', 'title':'test title', 'description':'test description' }

Le descripteur s'appelle foldermaker.post.desc.xml:

https://riptutorial.com/fr/home 15

Page 18: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

<webscript> <shortname>Folder Maker</shortname> <description>Creates folders</description> <family>Examples</family> <url>/example/folders</url> <format default="json"></format> <authentication>user</authentication> </webscript>

L'élément facultatif "famille" est un moyen pratique de regrouper les scripts Web dans l'index du script Web. L'élément "format" déclare que ce script Web renvoie JSON.

Le contrôleur s'appelle foldermaker.post.json.js:

var name = title = desc = null; var name = json.get('name'); try { title = json.get('title'); } catch (err) {} try { desc = json.get('description'); } catch (err) {} var folder = companyhome.createFolder(name); var needsSave = false; if (title != null) { folder.properties['cm:title'] = title; needsSave = true; } if (desc != null) { folder.properties['cm:description'] = desc; needsSave = true; } if (needsSave) { folder.save(); } model.id = folder.nodeRef.toString(); model.name = name; model.title = title; model.description = desc;

Notez que ce contrôleur a "json" dans son nom. Ceci indique à Alfresco de s’attendre à une charge utile JSON. Alfresco analysera automatiquement le JSON et le placera dans une variable racine appelée "json".

Le contrôleur saisit le nom, le titre et la description du JSON et crée le dossier à l'aide de la variable d'étendue racine appelée "companyhome".

Si un titre ou une description est transmis, ces propriétés sont enregistrées.

https://riptutorial.com/fr/home 16

Page 19: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Les valeurs transmises ainsi que la référence de noeud du nouveau dossier sont définies sur le modèle avant de transférer le contrôle à la vue.

La vue est nommée foldermaker.post.json.ftl:

{ <#if title??> "title": "${title}", </#if> <#if description??> "description": "${description}", </#if> "id": "${id}", "name": "${name}" }

Ce freemarker renvoie simplement les valeurs définies sur le modèle en tant que JSON. Le titre et la description peuvent ne pas toujours être présents, la vue utilise donc la vérification de null Freemarker intégrée dans une instruction if pour éviter de les renvoyer s'ils n'étaient pas définis.

Tout client HTTP peut être utilisé pour tester ce script Web. Voici à quoi cela ressemblerait en utilisant curl:

jpotts$ curl -uadmin:admin -H "content-type: application/json" -X POST "http://localhost:8080/alfresco/s/example/folders" -d "{'name':'testfolder','title':'test title', 'description':'test desc'}" { "title": "test title", "description": "test desc" "id": "workspace://SpacesStore/cc26a12f-306b-41f1-a859-668f11fc2a54", "name": "testfolder" }

Notez que curl transmet les informations d'authentification de base. Dans ce cas, il utilise "admin". Dans la mesure où cet exemple crée des éléments dans la société mère, vous devez utiliser un utilisateur disposant des autorisations appropriées pour le faire.

Ce script Web n'a pas de véritable vérification d'erreur. Si vous ne transmettez pas un nom ou si vous transmettez un nom déjà utilisé, vous verrez une erreur.

Lire Scripts Web en ligne: https://riptutorial.com/fr/alfresco/topic/6066/scripts-web

https://riptutorial.com/fr/home 17

Page 20: alfresco - RIP Tutorial · le fichier de configuration alfresco-global.properties. L'anatomie d'une propriété de filtre d'audit est la suivante: audit.filter..

Crédits

S. No

Chapitres Contributeurs

1Démarrer avec alfresco

bhagyas, Community, vikash, xxxvodnikxxx

2 Administration abarisone, Jeff Potts

3Comportement et politique

vikash

4Modèle Alfresco avec liste dynamique

Akah

5

Script T-SQL pour créer une base de données Alfresco dans SQLServer 2008 - 2014

ciroBorrelli

6 Scripts Web Jeff Potts, xxxvodnikxxx

https://riptutorial.com/fr/home 18