lunedì 4 aprile 2011

Alfresco kick off 2011

Dal 23 al 25 marzo si è tenuto ad Orlando, Florida, l'evento "Alfresco kick off 2011". Questa conferenza si svolge di solito all'inizio di ogni nuovo anno fiscale per tirare le somme dell'anno passato e per raccontare quali siano le novità per il futuro. La sensazione è stata quella di molte novità ma sopratutto dell'ingresso di una fase di consolidamento e maturità, sia del prodotto che dell'azienda.

Alfresco è stata fondata nel 2005 da John Newton e John Powell, ormai quindi sono sei anni di presenza e costante crescita sul mercato internazionale e quasi due dall'apertura di una presenza ufficiale in Italia. Le attività locali di Alfresco in Italia infatti sono cominciate con l'arrivo del direttore commerciale Alberto Fidanza nell'estate del 2009, proseguite poi con l'inserimento a gennaio 2010 di un responsabile tecnico di pre-vendita. Entro poche settimane annunceremo poi l'assunzione di una terza persona dedicata al mercato italiano, basata su Roma e perciò particolarmente attenta a seguire i clienti del centro e sud Italia.

Non possiamo ancora in questa sede pubblicare i numeri ufficiali dell'andamento di mercato, ma sicuramente possiamo dire che quello che si è chiuso è stato, ancora una volta, un anno di crescita record per numero di clienti e fatturato, che negli anni non ha mai risentito di alcuna crisi ed è sempre stato ampiamente in doppia cifra. Lo testimonia anche il numero di assunzioni di nuovi dipendenti, come potete verificare andando alla sezione Jobs@Alfresco.

Durante il kick off di Orlando Alfresco ha lanciato un chiaro messaggio relativo al "Social Content Management", ovvero ad una evoluzione del modello ECM verso l'elaborazione collaborativa di tutti i contenuti aziendali, di cui l'annunciata integrazione con Jive ne è un esempio significativo. Di fatto il più grosso sistema di gestione dei contenuti al mondo è ad oggi rappresentato da Facebook. I social network sono infatti dei formidabili generatori e gestori di contenuti, sia strutturati che de-strutturati. Quello che conta è il processo d'interazione con questi strumenti, la cui efficacia ne ha decretato il successo. Uno degli ostacoli più grossi nei progetti documentali aziendali è l'adozione degli strumenti da parte degli utenti, quindi l'adozione del modello "social" rappresenta in sostanza l'introduzione di queste metafore all'interno delle aziende, in modo che la diffusione di strumenti di gestione dei contenuti non sia imposta dall'alto ma virale e spinta dagli stessi utenti. La domanda che gli utenti si pongono sempre più di frequente è "perché gli strumenti consumer come Twitter, Facebook e Google sono così efficaci mentre gli strumenti che dobbiamo utilizzare in azienda sono spesso così ostici?".

L'implementazione di questo modello si declinerà attraverso alcune tappe evolutive, che vedremo più concretamente quando sarà rilasciato il progetto "Swift" (nome in codice della prossima major release di Alfresco). Nel frattempo Alfresco si muove rapidamente verso l'ottimizzazione degli strumenti di collaboration esistenti e, contemporaneamente verso il consolidamento della esistente piattaforma di erogazione di Content Services, come chiaramente descritto dalla seguente immagine:

Riprendendo un commento analogo di Jeff Potts, dal punto di vista più strettamente tecnico possiamo riassumere i seguenti elementi di rilievo emersi durante la conferenza e relativi al progetto Swift:

  1. CIFS, SharePoint, e FTP saranno configurabili in cluster
  2. Share diventerà sempre più facile da personalizzare e più gestibile in termini di migrazioni, sarà infatti introdotto un framework per semplificare la creazione di dialoghi, azioni ed altro.
  3. Stiamo lavorando ad un prossimo "social content publishing framework" che consentirà la pubblicazione parallela e multi-canale dei contenuti. Ad esempio gli endpoint di pubblicazione saranno YouTube, Facebook, Twitter, Drupal ed esisterà un meccanismo di estensione a plug-in per altri endpoint di pubblicazione.
  4. Possibile integrazione nativa degli account Skype come dashlet di Share, per gestire le comunicazioni da un unico portale.
  5. Integrazione del motore Activiti BPM come alternativa all'attuale jBPM. Activiti è un moderno motore di workflow basato sullo standard aperto BPMN 2.0, sviluppato da Tom Bayens, che è stato l'ideatore di jBPM e adesso lavora in Alfresco.
  6. Sarà possibile utilizzare Apache Solr come alternativa scalabile e distribuita di Lucene per l'indicizzazione e la ricerca di enormi quantità di documenti. Solr è estremamente efficiente e potrà essere fatto scalare indipendentemente dal Repository Alfresco, con indubbi benefici in termini di prestazioni su masse documentali elevate. Inoltre l'indicizzazione avverrà sempre in maniera asincrona, facendo si che gli indici diventino "eventualmente consistenti", come necessario nella gestione effettiva di grosse quantità di dati.
  7. CMIS è destinato a diventare l'API pubblica di riferimento di Alfresco, che continuerà a seguire e stimolare l'evoluzione dello standard. Questo consentirà fin da subito di scrivere applicazioni client per Alfresco estremamente portatili, preservando l'investimento nel tempo.
Dunque esiste parecchio materiale su cui riflettere e i prossimi mesi porteranno sicuramente una serie di novità molto interessanti e, speriamo, gradite agli utenti Alfresco ECM.

lunedì 14 marzo 2011

Semplici Uploaders per Alfresco

NOTA: traduzione dell'articolo originale in spagnolo Uploaders simples en alfresco di Zylk.net. Grazie a Toni per la segnalazione di questo articolo.

Una delle caratteristiche più interessanti di Alfresco ECM è la varietà di protocolli che consentono di autenticarsi ed eseguire azioni sul repository, tramite le unità di rete condivise o le diverse API disponibili. Ciò è principalmente dovuto all'uso di standard, che a medio-lungo termine diventa un chiaro vantaggio tecnologico rispetto ad altri stack più chiusi, e permette l'integrazione con ogni sorta di strumenti di terze parti. Tra questi protocolli (e API) possiamo evidenziare: WebDAV, FTP, CIFS, NFS, IMAP, REST, SOAP e CMIS.

Ignorando le unità di rete CIFS e NFS e lasciando da parte per ora il metodo di caricare i dati tramite e-mail, possiamo creare uploaders tramite numerosi protocolli quali WebDAV, FTP, o REST con poco sforzo. Ad esempio, con il comando curl posso utilizzare il canale FTP come segue:
curl -T sinadura3.tgz ftp://alfie.zylk.net/Alfresco/sinadura --user cesar:secret
O meglio ancora, usare il canale WebDAV, che può garantire più sicurezza:
curl -T sinadura3.tgz https://alfie.zylk.net/alfresco/webdav/sinadura --user cesar:secret
Un'altra opzione è quella di utilizzare lo strato REST con un piccolo script che richiami curl per inviare il file in questione:
#!/bin/bash
#
# Alfresco upload script with CURL by LouiSe@louise.hu
#
# Usage: alfresco_uploader.sh    
#
# ./alfresco_uploader.sh /tmp/some.pdf someSite documentLibrary someDir
#

ALFRESCO_SERVER="http://alfie.zylk.net:8080/alfresco"
USERNAME="cesar"
PASSWORD="secret"

#CURL_VERBOSE=-v
CURL_VERBOSE=-s
CURL_METHOD=POST
FILENAME=`basename $1`
MIMETYPE=`file --brief --mime-type $1`
UPLOAD_SERVICE_URL=${ALFRESCO_SERVER}/service/api/upload

echo "Uploading: ${FILENAME} ($MIMETYPE) to ${ALFRESCO_SERVER}"

curl ${CURL_VERBOSE} -k -X ${CURL_METHOD} \
    --user "${USERNAME}":"${PASSWORD}" \
    -F filedata=@$1 -F siteid="$2" -F containerid="$3" \
    -F uploaddirectory="$4" \ -F filename="${FILENAME}" \
    -F contenttype="${MIMETYPE}" "${UPLOAD_SERVICE_URL}" \
    | grep 'description' | cut -d ':' -f 2 | tr -d '\"'

Lo script è tratto da questo blog.

Un'altra strategia possibile è quella di utilizzare lo standard CMIS con un piccolo script in python (con le librerie cmislib).

#! /usr/bin/python
from cmislib.model import CmisClient
from sys import argv

client = CmisClient('http://alfie.zylk.net:8080/alfresco/service/cmis', 'cesar', 'secret')
repo = client.defaultRepository
someFolder = repo.getObjectByPath('/'+argv[2])
someFolder.getTitle()
someFolder.getProperties()

someFile = open(argv[1], 'r')
someDoc = someFolder.createDocument(argv[1], contentFile=someFile)

O l'equivalente in PHP:

 $repo_password ));
} else {
  $client = new CMISService($repo_url, $repo_username, $repo_password);
}

$myfolder = $client->getObjectByPath($repo_folder);
$file     = fopen($filename,"r");
$contents = fread($file, filesize($filename));
$fi       = new finfo(FILEINFO_MIME,'/usr/share/file/magic');
$mime_type= $fi->buffer(file_get_contents($filename));

fclose($file);

$obj_doc  = $client->createDocument($myfolder->id, $filename, array (), $contents, $mime_type);

lunedì 7 marzo 2011

Creare il database MySQL per Alfresco

E' possibile procedere alla creazione del database MySQL per Alfresco nel modo seguente:

1) Settare MySQL per UTF-8

Editare /etc/mysql/my.cnf aggiungendo default-character-set = utf8 sotto la sezione [mysqld]:
[mysqld]
#
# ...
#
default-character-set = utf8
2) Riavviare mysql, di solito tramite /etc/init.d/mysql restart

3) Loggarsi come root: mysql -u root -p

4) eseguire i seguenti comandi (nell'ipotesi sia stato precedentemente creato un database 'alfresco' con utente 'alfresco'):
CREATE DATABASE alfresco DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT ALL PRIVILEGES ON alfresco.* TO alfresco@localhost IDENTIFIED BY 'alfresco';
GRANT SELECT,LOCK TABLES ON alfresco.* TO alfresco@localhost IDENTIFIED BY 'alfresco';
FLUSH PRIVILEGES;
quit;

sabato 26 febbraio 2011

Installare Alfresco in modalità testuale su server Linux

Il nuovo installer BitRock per Alfresco consente di installare il prodotto insieme a tutte le componenti accessorie (jvm, Tomcat, Mysql, Openoffice, Imagemagick, ...) in maniera molto semplice e veloce.
Spesso però è necessario installare Alfresco su una macchina che non dispone di interfaccia grafica, ma alla quale possiamo accedere da remoto solo via terminale a caratteri, ad esempio tramite ssh ed scp. In questo caso o si rinuncia ad usare l'installer e invece si procede alla installazione e configurazione manuale di tutte le singole componenti, oppure si può comodamente continuare ad usare l'installer nella sua modalità testuale. Di seguito una descrizione di come procedere.

Nel nostro caso descriveremo una installazione effettuata su un server remoto Linux Ubuntu 10.04 (Lucid) a 64 bit. (nota: da Alfresco EE 3.4.0 in avanti sono ufficialmente supportati solo sistemi a 64 bit).

1) Scaricare l'installer (Community o Enterprise) per il sistema operativo e renderlo eseguibile
chmod +x alfresco-enterprise-3.4.0-installer-linux-x64.bin
2) Visualizzare le opzioni disponibili da riga di comando, tramite il parametro --help
./alfresco-enterprise-3.4.0-installer-linux-x64.bin --help
Appare un elenco di opzioni:


L'opzione che interessa è --mode <mode>. Di default mode è gtk, ma in questo caso sceglieremo text. La seconda opzione è quella relativa alla lingua d'installazione, scegliamo quindi l'italiano tramite l'opzione --installer-language it
./alfresco-enterprise-3.4.0-installer-linux-x64.bin --mode text --installer-language it
Dando invio parte il processo di installazione, che pone una serie di domande sulle componenti da installare e sulle porte da usare. Dato che in questa dimostrazione abbiamo deciso di non installare Alfresco come root ma tramite un utente normale, è necessario scegliere porte sopra alla 1024. Normalmente, su un ambiente di test o produzione, è buona norma in creare un utente dedicato ed un gruppo per Alfresco, fornendogli i privilegi necessari ad usare tutte le porte.


La schermata iniziale:
mauri@ubuntu10-laptop:~$ ./alfresco-enterprise-3.4.0-installer-linux-x64.bin --mode text --installer-language it
---------------------------------------------------------------------
Benvenuto al programma d'installazione di Alfresco Enterprise

---------------------------------------------------------------------
Seleziona i componenti che vuoi installare; deseleziona i componenti che non
vuoi. Clicca Avanti quando sei pronto per continuare.

MySQL : Y (Cannot be edited)
Java : Y (Cannot be edited)
Alfresco : Y (Cannot be edited)
SharePoint [Y/n] :y
Records Management [Y/n] :n
Web Quick Start [Y/n] :y
Web Project Management (AVM) [Y/n] :n
Quickr Connector Support [Y/n] :n
OpenOffice [Y/n] :y
La selezione e' corretta? [Y/n]: y

Si procede con la selezione delle porte, dopo aver scelto l'opzione "Advanced" nel menu Installation Type:
---------------------------------------------------------------------
Installation Type

[1] Easy - Installs servers with the default configuration
[2] Advanced - Configures server ports and service properties
Scegli un opzione [1] : 2
Di seguito è necessario scegliere un folder dove installare Alfresco e se usare il database MySQL allegato oppure una installazione esistente. In questo caso preferiamo usare il MySQL di Ubuntu, in modo da poterlo gestire autonomamente
---------------------------------------------------------------------
Installation Folder

Please choose a folder to install Alfresco Enterprise.

Select a folder [/home/mauri/alfresco-3.4.0]:

---------------------------------------------------------------------
Database Installation

Please select which database configuration you wish to use. If you select an existing database you should configure the Alfresco application before running the Alfresco server.

[1] I wish to use the bundled MySQL database
[2] I wish to use an existing database
Scegli un opzione [1] : 2
E' da notare che la URI JDBC proposta di default è sbagliata. Sostituire quindi in seguito dentro il file di configurazione alfresco-global.properties
jdbc:mysql://localhost/alfresco?useUnicode=yes#38characterEncoding=UTF-8
con
jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8
Procediamo quindi fino alla fine, rispondendo alle domande poste. Alla fine partirà il processo di installazione vero e proprio
---------------------------------------------------------------------
Il programma d'installazione e' pronto per installare Alfresco Enterprise sul
tuo pc.

Vuoi continuare? [Y/n]: y

---------------------------------------------------------------------
Attendere prego, mentre Alfresco Enterprise e'installato sul tuo computer.

 Installazione...
 0% ______________ 50% ______________ 100%
 ########################################
Al termine della procedura è necessario andare a controllare che il file alfresco-global.properties sia configurato correttamente (è il file più importante e si trova sotto tomcat/shared/classes). Da notare che è raccomandato che MySQL sia configurato per usare il charset UTF-8. Per la corretta configurazione e creazione del database sono già disponibili ottime guide online.

Volendo utilizzare una JVM diversa da quella in bundle con Alfresco, è ad esempio possibile rinominare la cartella Java presente nella cartella d'installazione di Alfresco, quindi creare un collegamento simbolico al JDK già presente sulla macchina. In questo caso, avendo installato l'ultimo JDK Sun per Linux ed avendo $JAVA_HOME = /usr/lib/jvm/java-6-sun è possibile dare il seguente comando:
ln -s /usr/lib/jvm/java-6-sun java
Alla partenza Alfresco userà questa JVM al posto di quella integrata, se è quello che desiderate. Assicuratevi che si tratti però di una versione di JVM tra quelle certificate e supportate, o potreste avere problemi.

Il file tomcat/bin/setenv.sh può essere quindi editato per modificare le JAVA_OPTS ed ottimizzare (sapendo esattamente quello che si sta facendo), i parametri della Java Virtual Machine. Per iniziare è consigliabile leggersi prima un buon documento sull'argomento.

Al termine, per avviare Alfresco, è utile avere subito sott'occhio i log, quindi si può eseguire il seguente comando:
./alfresco.sh start; tail -f tomcat/logs/catalina.out

AGGIORNAMENTO: ho aggiunto le istruzioni per creare il database mysql.

lunedì 14 febbraio 2011

Presentazione di Alfresco Enterprise 3.4

Queste sono le slide della presentazione di Alfresco Enterprise 3.4 effettuata durante il webinar online tenuto il 14 febbraio 2011.

A breve sarà disponibile sul sito Alfresco la registrazione completa audio e video in italiano della sessione Webex: http://www.alfresco.com/it/about/events/ondemand/

mercoledì 22 dicembre 2010

Installazione di Alfresco 3.4 in italiano

Stiamo iniziando a testare il nuovissimo "language pack" in italiano, rilasciato insieme ad Alfresco Community 3.4c ed anche Alfresco Enterprise 3.4 RC1 (quest'ultimo disponibile solo per i clienti Alfresco).


Se scaricate uno degli installer per la versione Community (nel mio caso il tar.gz per Mac OSX) non bisogna fare altro che selezionare subito la lingua italiana in fase d'installazione:


Il pacchetto installa e configura tutto quello che è necessario, compreso una versione di MySQL, OpenOffice, ImageMagick e PDF tools. Date una occhiata al solito file alfresco-global.properties per fare il tuning della configurazione. E' ovviamente possibile scegliere una istanza di MySQL esistente.


Al termine dell'installazione, dopo aver avviato Alfresco, puntate il browser verso http://localhost:8080/share e fate login come utente "admin", con la password che avevate deciso durante l'installazione. Se il locale del vostro browser è impostato correttamente, la pagina di login apparirà localizzata in italiano:


Alfresco Share seleziona la lingua automaticamente a partire dal locale del browser, se la pagina non fosse nella lingua desiderata questo significa che il browser sta passando un locale differente e quindi dovete cambiarne la configurazione.

A questo punto vi troverete nel normale cruscotto Share in italiano, senza necessità di configurazioni manuali.


In caso di errori o imprecisioni nella traduzione italiana, sarebbe molto utile aprire una issue, con la descrizione dettagliata della versione Alfresco e del problema rilevato, in modo che sia possibile fornire feedback al team di localizzazione per le opportune correzioni.

giovedì 16 dicembre 2010

Visibilità del Repository in Alfresco Share 3.4

Fino alla versione 3.3 l'accesso al Repository completo da Share è stato parzialmente limitato. Dalla 3.2 in poi infatti è stata abilitata la navigazione dell'intero Repository, ma solo dalla release 3.4 l'accesso al Repository non è una opzione ma è il default. Inoltre è stata finalmente aggiunta la capacità di fare ricerche avanzate su tutto il Repository e non solo sui siti di collaborazione, utilizzando il Forms Engine.

Share sta diventando la UI centrale per lavorare con Alfresco, con la versione 3.4 si stanno completando i pezzi mancanti di questo processo che, alla base, ha significato un cambio di tecnologia: da JSF utilizzato per il vecchio Explorer, a Spring Surf, che è il framework sul quale Share è costruito.

Il processo di ristrutturazione del prodotto nella 3.4 è focalizzato, tra le altre cose, a rendere più semplice il lavoro di personalizzazione dell'interfaccia, che in passato richiedeva passaggi a volte laboriosi.
In questo breve articolo vorrei rapidamente dimostrare un semplice ma frequente caso d'uso:
Limitare l'accesso all'intero Repository documentale al solo utente Admin, lasciando agli altri utenti la possibilità di vedere solo siti di collaborazione a cui sono iscritti ed autorizzati.
Questo requisito risponde all'esigenza di mantenere un alto livello di separazione tra i diversi siti di collaborazione, senza arrivare al punto di dover attivare un più complesso partizionamento completo tramite configurazione multi-tenant.

Ad esempio, supponiamo di voler creare dei siti Share per differenti dipartimenti aziendali, minimizzando l'intersezione di contenuti tra i vari siti. Però vorremmo dare la possibilità all'amministratore, e solo a lui, di poter vedere tutto, senza eccezioni.

In questo caso proviamo a personalizzare lo Share Header, seguendo queste istruzioni. Di default voglio che, loggandomi come Admin, appaia il bottone "Repository", mentre se mi autentico come altro utente, desidero che il bottone non sia presente sulla barra dei menù.



Quindi rientro in Share non più come Admin, ma come utente semplice:


A questo punto verifico che il bottone "Repository" non sia più disponibile per l'utente normale mturatti:



Nelle precedenti versioni di Alfresco, per ottenere questo semplice ma importante risultato, si era costretti a mettere mano ad alcuni template Freemarker, mentre adesso basta lavorare su un singolo file di configurazione.

In pratica si devono percorrere i seguenti passi:
  1. copiare l'elemento <config> ed il suo contenuto dal file share-config.xml presente in tomcat/webapps/share/WEB-INF/classes/alfresco.
  2. incollare l'elemento dentro il file share-config-custom.xml presente in tomcat/shared/classes/alfresco/web-extension.
  3. Aggiungere replace="true" nell'elemento <config>, che diventa quindi <config replace="true">
  4. Modificare un elemento item sotto <headers><app-items>  <item id="repository" permission="admin" type="link">/repository</item>  aggiungendo l'attributo permission="admin".
A questo punto non rimane che riavviare Alfresco per verificare che sia tutto ok, provando prima a loggarsi come Admin e poi come normale utente.

Dando una occhiata al file ed alle istruzioni, risulta evidente come sia possibile implementare eventuali  ulteriori e più complesse personalizzazioni.