Comment enrichir votre GED Alfresco pour satisfaire vos utilisateurs ?

Alfresco a l’avantage de bien savoir s’adapter aux besoins des utilisateurs, qu’il s’agisse de personnaliser la solution, de l’intégrer aux applications métiers, ou de développer des fonctionnalités spécifiques.

Or, le développement de fonctionnalités spécifiques n’a pas besoin d’être onéreux pour améliorer la productivité des utilisateurs. Par exemple, il suffit d’à peine deux jours de développement pour créer un menu intégrant de nouvelles fonctionnalités bureautiques dans Alfresco, dans le cas de l’exemple suivant.

Exemple de développement

Le protocole Sharepoint est mis à profit par Alfresco pour pouvoir consulter un document Office existant sans quitter l’application de GED. Par contre, il n’est pas possible de créer un document Office de toute pièce dans Alfresco. Or un simple développement en webscripts permet de rajouter un menu dans Alfresco pour effectuer cette opération en trois clics.

Un nouveau menu remplace l’ancien bouton « Ajout de contenu ». Le nouveau menu offre le choix entre trois types de documents MS Office : Word, Excel et PowerPoint.

A la sélection d’un type de document, une fenêtre s’ouvre et charge les modèles existants (en fonction du type de document Office sélectionné) et disponibles dans Alfresco, sous la forme d’une liste déroulante.

Il suffit de sélectionner un modèle et de donner un nom au nouveau document. Si l’utilisateur oublie d’ajouter l’extension du fichier, celle-ci est deduite automatiquement à partir du modèle sélectionné.

Un contrôle sur l’existence du nom de fichier est ajouté pour ne pas autoriser de nom blanc :

On peut ajouter un autre test pour n’autoriser que les chiffres et les lettres.

Si, le nom est valide le document est créé dans le dossier courant :

Pour ajouter de nouveaux modèles de documents à la liste, il suffit de les placer dans le dossier approprié (« modèles Word », « modèle Exel » ou « modèles Powerpoint »).

En savoir plus sur le fonctionnement de la Gestion Electronique de Documents

Téléchargez le livre blanc Bien comprendre les fonctionnalités d’une GED

 

Activiti et Bonita : tour d’horizon des solutions de BPM open source

Il existe deux principales solutions open source permettant de modeler et de mettre en place un processus BPM : Activiti, bénéficiant du soutien d’Alfresco, et Bonita. StarXpert a préparé un livre blanc gratuit permettant de mieux comprendre Activiti et de le comparer à Bonita. Cet article fournit un aperçu rapide.

Activiti

Activiti est un projet open source de gestion des processus métier (BPM), lancé en 2010 sous licence Apache, pour implémenter le nouveau standard BPMN 2.0 de l’OMG (Object Management Group) et pour permettre de supporter de manière optimale les nouveaux défis technologiques comme l’interopérabilité et le mode cloud.

Géré sous une marque indépendante, Activiti fonctionne indépendamment du système ECM open source Alfresco. Entièrement pensé comme un moteur BPM léger et aisément intégrable, Activiti est également conçu pour fonctionner au sein d’environnements cloud évolutifs. Il est publié sous licence Apache 2.0, permettant notamment d’encourager l’utilisation et l’adoption du BPMN 2.0, standard en cours de finalisation par l’OMG.

Activiti comprend différents composants :

  • Activiti Engine
  • Activiti Modeler les fichiers du déploiement.
  • Activiti Explorer
  • Activiti Cycle

Bonita

Bonita, développé par Bonita Open Solution (bonitaSoft), combine trois solutions en une: un studio de création de processus, un moteur de BPM et une interface utilisateur final. Bonita Open Solution offre une solution simple, intuitive et graphique. Le déploiement d’un processus est relativement facile via des menus depuis le studio BonitaSoft. BonitaSoft est conçu pour les utilisateurs/développeurs. Il dispose d’une interface appelée « connecteurs » et qui permet de rajouter l’aspect technique aux activités. A ce jour un nombre important de ces connecteurs est développé et mis à disposition par la communauté. Ceux-ci permettent de communiquer avec une base de données, un web service, une GED, etc.

Un utilisateur peut effectuer des taches de suivi ou d’administration. Cette interface ressemble au module activiti-explorer dans sa partie d’administration.

Activiti vs Bonita

Activiti, lancé seulement en 2010, s’améliore à une vitesse phénoménale. Cependant, Activiti reste un outil s’adressant uniquement aux développeurs. En effet, s’il permet une grande flexibilité, il souffre d’être peu intuitif et donc peu accessible aux usagers autres que développeurs.

De son côté, Bonita reste un outil complet pour faire du BPM, et surtout plus facile à utiliser par les non-développeurs.

En savoir plus

Téléchargez gratuitement le livre blanc  » Découverte d’Activiti et comparaison avec Bonita « 

Etendre l’API d’Alfresco

Alfresco a été délibérément conçu pour être hautement extensible et personnalisable. Ainsi, nous avons déjà évoqué des personnalisations que nous avons réalisées pour le compte de nos clients. Nous allons aborder ici un autre exemple de développement souvent demandé, concernant le versioning. En effet, la liste des versions d’un document créé par Alfresco peut devenir illisible au fur et à mesure qu’elle s’allonge. Par défaut, Alfresco ne permet pas de supprimer l’historique des versions, de créer une version précise ou d’afficher uniquement une partie des versions (par exemple, les plus récentes). Qu’à cela ne tienne, l’API d’Alfresco est aisément modifiable, comme nous allons le démontrer.

Le développement s’effectue en trois étapes :

  • Créer une classe Java incluant les méthodes qui permettront la personnalisation des versions.
  • Étendre l’API Javascript d’Alfresco pour inclure la nouvelle classe en rajoutant un nouveau bean Spring.
  • Utiliser un Webscript pour appeler la classe concernée.

Code de la classe Java

package fr.starxpert.alfresco.versioning;

import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.version.VersionHistory;
import org.alfresco.service.cmr.version.VersionService;

import org.apache.log4j.Logger;  

public class MaxVersion extends org.alfresco.repo.processor.BaseProcessorExtension{

	private Logger logger = Logger.getLogger(MaxVersion.class);

	private VersionService versionService;

	public void setVersionService(VersionService versionService) {
		this.versionService = versionService;
	}

public void setMaxVersion(NodeRef versionableNode, int version) {
		VersionHistory versionHistory = versionService
				.getVersionHistory(versionableNode);

		if (versionHistory != null) {
			logger.debug("Current number of versions: "
					+ versionHistory.getAllVersions().size());
			logger.debug("least recent/root version: "
					+ versionHistory.getRootVersion().getVersionLabel());

			// If the current number of versions in the VersionHistory is
			// greater
			// than the maxVersions limit, remove the root/least recent version
			if (versionHistory.getAllVersions().size() > version) {
				logger.debug("Removing Version: "
						+ versionHistory.getRootVersion().getVersionLabel());
				versionService.deleteVersion(versionableNode, versionHistory
						.getRootVersion());
			}
		} else {
			logger.debug("versionHistory does not exist");
		}
}
}

La classe doit être compilée en tant que fichier MaxVersion.class à l’aide d’un compilateur dont la version de Java est identique à celle du serveur Alfresco. Le chemin du fichier compilé doit être renseigné dans le classpath, en respectant l’arborescence du nouveau package, comme par exemple : /opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/fr/starxpert/alfresco/versioning/MaxVersion.class.

L’étape suivante consiste à créer un bean. Le bean sera placé dans un nouveau fichier Spring ou dans un fichier Spring existant et permettra le surchargement de la classe pendant le démarage d’alfresco.

Code du fichier Spring « maxVersion-context.xml »

<code>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="purgeVersion" parent="baseJavaScriptExtension" class="fr.starxpert.alfresco.versioning.MaxVersion">
    <property name="extensionName">
        <value>MaxVersions</value>
    </property>
   <property name="versionService">
        <ref bean="VersionService"></ref>
    </property>
</bean>
</beans>

Le fichier spring doit être placé dans : /opt/alfresco-3.3/tomcat/shared/classes/alfresco/extension

Il suffit ensuite de redémarrer le serveur Alfresco pour qu’il intègre la nouvelle classe.

La dernière étape consiste à mettre en place un Webscript contenant un controleur js pour lancer la classe concernée.

Code du controleur js du webscript

var docs = search.luceneSearch(" @cm\:name:""+"astuces.txt"+""");
MaxVersions.setMaxVersion(docs[0].nodeRef,2);

Le code ci-dessus supprime les deux versions les plus anciennes du fichier « astuces.txt ».

Si plus de personnalisations sont requises, il suffit d’inclure des méthodes supplémentaires dans la classe mère et de les appeler depuis ce script.